Skip to content
This repository was archived by the owner on Nov 28, 2023. It is now read-only.

Commit 46d5103

Browse files
committed
improves docs
1 parent 1801196 commit 46d5103

File tree

5 files changed

+101
-46
lines changed

5 files changed

+101
-46
lines changed

cobra/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
{m} -t {td} -f json -o /tmp/report.json
2222
{m} -t {tg} -f json -o [email protected]
2323
{m} -t {tg} -f json -o http://push.to.com/api
24-
{m} -H 127.0.0.1 -P 80
24+
sudo {m} -H 127.0.0.1 -P 80
2525
""".format(m='./cobra.py', td='tests/vulnerabilities', tg='https://github.com/wufeifei/vc.git')

docs/cli.md

+46
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,50 @@ $ ./cobra.py --version
2828

2929
# 查看帮助
3030
$ ./cobra.py --help
31+
```
32+
33+
## Help(帮助)
34+
```bash
35+
➜ cobra git:(master) ✗ ./cobra.py --help
36+
usage: cobra [-h] [-t <target>] [-f <format>] [-o <output>] [-r <rule_id>]
37+
[-d] [-sid SID] [-H <host>] [-P <port>]
38+
39+
,---. |
40+
| ,---.|---.,---.,---.
41+
| | || || ,---|
42+
`---``---``---`` `---^ v2.0.0
43+
44+
GitHub: https://github.com/wufeifei/cobra
45+
46+
Cobra is a static code analysis system that automates the detecting vulnerabilities and security issue.
47+
48+
optional arguments:
49+
-h, --help show this help message and exit
50+
51+
Scan:
52+
-t <target>, --target <target>
53+
file, folder, compress, or repository address
54+
-f <format>, --format <format>
55+
vulnerability output format (formats: html, json, csv,
56+
xml)
57+
-o <output>, --output <output>
58+
vulnerability output STREAM, FILE, HTTP API URL, MAIL
59+
-r <rule_id>, --rule <rule_id>
60+
specifies rules e.g: CVI-100001,cvi-190001
61+
-d, --debug open debug mode
62+
-sid SID, --sid SID scan id(API)
63+
64+
RESTful:
65+
-H <host>, --host <host>
66+
REST-JSON API Service Host
67+
-P <port>, --port <port>
68+
REST-JSON API Service Port
69+
70+
Usage:
71+
./cobra.py -t tests/vulnerabilities
72+
./cobra.py -t tests/vulnerabilities -r cvi-190001,cvi-190002
73+
./cobra.py -t tests/vulnerabilities -f json -o /tmp/report.json
74+
./cobra.py -t https://github.com/wufeifei/vc.git -f json -o [email protected]
75+
./cobra.py -t https://github.com/wufeifei/vc.git -f json -o http://push.to.com/api
76+
sudo ./cobra.py -H 127.0.0.1 -P 80
3177
```

docs/index.md

+13-5
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@
1010
> 对于一些需要判断参数是否可控的,Cobra通过预先梳理能造成危害的函数,并定位代码中所有出现该危害函数的地方,继而基于Lex(Lexical Analyzer Generator, 词法分析生成器)和Yacc(Yet Another Compiler-Compiler, 编译器代码生成器)将对应源代码解析为AST(Abstract Syntax Tree, 抽象语法树),分析危害函数的入参是否可控来判断是否存在漏洞。
1111
1212
## Cobra和其它源代码审计系统有什么区别或优势?
13-
> Cobra目标是自动化发现源代码中大部分显著的安全问题,对于一些隐藏较深或企业特有的问题建议手工审计
13+
> Cobra目标是自动化发现源代码中大部分显著的安全问题,对于一些隐藏较深或特有的问题建议手工审计
1414
1515
- 开源免费(基于开放的MIT License)
1616
- 支持开发语言多(支持十多种开发语言和文件类型)
1717
- 支持漏洞类型多(支持数十种漏洞类型)
1818
- 支持各种场景集成(提供API也可以命令行使用)
19-
- 持续维护更新(多家企业共同维护
19+
- 多家企业使用,专业支持维护(由白帽子、开发工程师和安全工程师一起持续维护更新,并在多家企业内部使用
2020

2121
## Cobra支持哪些开发语言?
22-
> 目前Cobra主要支持PHP、Java等主要开发语言及其它数十种文件类型,并持续更新规则和引擎以支持更多开发语言,具体见`languages`
22+
> 目前Cobra主要支持PHP、Java等主要开发语言及其它数十种文件类型,并持续更新规则和引擎以支持更多开发语言,具体见支持的[开发语言和文件类型](https://wufeifei.github.io/cobra/languages)
2323
2424
## Cobra能发现哪些漏洞?
25-
> 覆盖所有常见漏洞,具体见规则编写中的`labels`
25+
> 覆盖大部分Web端常见漏洞和一些移动端(Android、iOS)通用漏洞,具体见支持的[漏洞类型](https://wufeifei.github.io/cobra/labels)
2626
2727
## Cobra能应用在哪些场景?
28-
1. 【漏洞出现前】通过内置的扫描规则对公司项目进行日常扫描,并推进解决
28+
1. 【漏洞出现前】通过内置的扫描规则对公司项目进行日常扫描,并推进解决发现的漏洞
2929
2. 【漏洞出现后】当出现一种新漏洞,可以立刻编写一条Cobra扫描规则对公司全部项目进行扫描来判断受影响的项目。
3030

3131
## Cobra是什么类型应用?
@@ -34,6 +34,14 @@
3434
1. 部署成Web服务,提供自助扫描服务和API服务。
3535
2. 使用CLI模式,在命令行中进行扫描。
3636

37+
## 如何参与Cobra开发或接入企业内部使用?
38+
> 如果你符合以下任何一项且对Cobra感兴趣,可加入我们的QQ群组(QQ群:578732936)。
39+
40+
- 拥有Python开发经验
41+
- 有黑盒漏洞挖掘经验
42+
- 有白盒源码审计经验
43+
- 互联网相关企业想接入使用
44+
3745
# Cobra文档
3846
- 安装
3947
- [Cobra安装](https://wufeifei.github.io/cobra/installation)

docs/rule_flow.md

-40
Original file line numberDiff line numberDiff line change
@@ -10,43 +10,3 @@
1010
- 大写字母CVI(Cobra Vulnerability ID)开头,横杠(-)分割
1111
- 六位数字组成,前三位为Label ID,后三位为自增ID
1212
- 结尾以小写.xml结束
13-
14-
## 规则编写规范
15-
16-
|字段(英文)|字段(中文)|是否必填|类型|描述|例子|
17-
|---|---|---|---|---|---|
18-
|`name`|规则名称||`string`|描述规则名称|`<name value="Logger敏感信息" />`|
19-
|`language`|规则语言||`string`|设置规则针对的开发语言,参见`languages`|`<language value="php" />`|
20-
|`match`|匹配规则1||`string`|匹配规则1|`<match mode="regex-only-match"><![CDATA[regex content]]></match>`|
21-
|`match2`|匹配规则2||`string`|匹配规则2|`<match2 block="in-function-up"><![CDATA[regex content]]></match>`|
22-
|`repair`|修复规则||`string`|匹配到此规则,则不算做漏洞|`<repair block=""><![CDATA[regex content]]></match>`|
23-
|`level`|影响等级||`integer`|标记该规则扫到的漏洞危害等级,使用数字1-10。|`<level value="3" />`|
24-
|`solution`|修复方案||`string`|该规则扫描的漏洞对应的**安全风险****修复方案**|`<solution>详细的安全风险和修复方案</solution>`|
25-
|`test`|测试用例||`case`|该规则对应的测试用例|`<test><case assert="true"><![CDATA[测试存在漏洞的代码]]></case><case assert="false"><![CDATA[测试不存在漏洞的代码]]></case></test>`|
26-
|`status`|是否开启||`boolean`|是否开启该规则的扫描,使用`on`/`off`来标记|`<status value="1" />`|
27-
|`author`|规则作者||`attr`|规则作者的姓名和邮箱|`<author name="Feei" email="[email protected]" />`|
28-
29-
## `<match>`/`<match2>`/`<repair>`编写规范
30-
31-
#### `<match>` Mode(`<match>`的规则模式)
32-
> 用来描述规则类型,只能用在`<match>`中。
33-
34-
|Mode|类型|默认模式|支持语言|描述|
35-
|---|---|---|---|---|
36-
|regex-only-match|正则仅匹配||*|默认是此模式,但需要显式的写在规则文件里。以正则的方式进行匹配,匹配到内容则算作漏洞|
37-
|regex-param-controllable|正则参数可控||PHP/Java|以正则模式进行匹配,匹配出的变量可外部控制则为漏洞|
38-
|function-param-controllable|函数参数可控||PHP|内容写函数名,将搜索所有该函数的调用,若参数外部可控则为漏洞。|
39-
|find-extension|寻找指定后缀文件||*|找到指定后缀文件则算作漏洞|
40-
41-
#### `<match2>`/`<repair>` Block(`<match2>`/`<repair>`的匹配区块)
42-
> 用来描述需要匹配的代码区块位置,只能用在`<match2>``<repair>`中。
43-
44-
|区块|描述|
45-
|---|---|
46-
| in-current-line | 由第一条规则触发的所在行 |
47-
| in-function | 由第一条规则触发的函数体内 |
48-
| in-function-up | 由第一条规则触发的所在行之上,所在函数体之内 |
49-
| in-function-down | 由第一条规则触发的所在行之下,所在函数体之内 |
50-
| in-file | 由第一条规则触发的文件内 |
51-
| in-file-up | 由第一条规则触发的所在行之上,所在文件之内 |
52-
| in-file-down | 由第一条规则触发的所在行之下,所在文件之内 |

docs/rule_template.md

+41
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,44 @@
2828
<author name="Feei" email="[email protected]"/>
2929
</cobra>
3030
```
31+
32+
33+
## 规则字段规范
34+
35+
|字段(英文)|字段(中文)|是否必填|类型|描述|例子|
36+
|---|---|---|---|---|---|
37+
|`name`|规则名称||`string`|描述规则名称|`<name value="Logger敏感信息" />`|
38+
|`language`|规则语言||`string`|设置规则针对的开发语言,参见`languages`|`<language value="php" />`|
39+
|`match`|匹配规则1||`string`|匹配规则1|`<match mode="regex-only-match"><![CDATA[regex content]]></match>`|
40+
|`match2`|匹配规则2||`string`|匹配规则2|`<match2 block="in-function-up"><![CDATA[regex content]]></match>`|
41+
|`repair`|修复规则||`string`|匹配到此规则,则不算做漏洞|`<repair block=""><![CDATA[regex content]]></match>`|
42+
|`level`|影响等级||`integer`|标记该规则扫到的漏洞危害等级,使用数字1-10。|`<level value="3" />`|
43+
|`solution`|修复方案||`string`|该规则扫描的漏洞对应的**安全风险****修复方案**|`<solution>详细的安全风险和修复方案</solution>`|
44+
|`test`|测试用例||`case`|该规则对应的测试用例|`<test><case assert="true"><![CDATA[测试存在漏洞的代码]]></case><case assert="false"><![CDATA[测试不存在漏洞的代码]]></case></test>`|
45+
|`status`|是否开启||`boolean`|是否开启该规则的扫描,使用`on`/`off`来标记|`<status value="1" />`|
46+
|`author`|规则作者||`attr`|规则作者的姓名和邮箱|`<author name="Feei" email="[email protected]" />`|
47+
48+
## 核心字段`<match>`/`<match2>`/`<repair>`编写规范
49+
50+
#### `<match>` Mode(`<match>`的规则模式)
51+
> 用来描述规则类型,只能用在`<match>`中。
52+
53+
|Mode|类型|默认模式|支持语言|描述|
54+
|---|---|---|---|---|
55+
|regex-only-match|正则仅匹配||*|默认是此模式,但需要显式的写在规则文件里。以正则的方式进行匹配,匹配到内容则算作漏洞|
56+
|regex-param-controllable|正则参数可控||PHP/Java|以正则模式进行匹配,匹配出的变量可外部控制则为漏洞|
57+
|function-param-controllable|函数参数可控||PHP|内容写函数名,将搜索所有该函数的调用,若参数外部可控则为漏洞。|
58+
|find-extension|寻找指定后缀文件||*|找到指定后缀文件则算作漏洞|
59+
60+
#### `<match2>`/`<repair>` Block(`<match2>`/`<repair>`的匹配区块)
61+
> 用来描述需要匹配的代码区块位置,只能用在`<match2>``<repair>`中。
62+
63+
|区块|描述|
64+
|---|---|
65+
| in-current-line | 由第一条规则触发的所在行 |
66+
| in-function | 由第一条规则触发的函数体内 |
67+
| in-function-up | 由第一条规则触发的所在行之上,所在函数体之内 |
68+
| in-function-down | 由第一条规则触发的所在行之下,所在函数体之内 |
69+
| in-file | 由第一条规则触发的文件内 |
70+
| in-file-up | 由第一条规则触发的所在行之上,所在文件之内 |
71+
| in-file-down | 由第一条规则触发的所在行之下,所在文件之内 |

0 commit comments

Comments
 (0)