cobra使用笔记

cobra是什么

这是一个开源的代码静态扫描工具,可以扫描PHP等语言,是用Python写的。

安装python依赖包

1
/usr/local/python3/bin/pip3.5 install --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple Flask==0.10.1  Flask-RESTful==0.3.6 rarfile==2.7    prettytable==0.7.2    requests==2.6.2    pytest==3.0.6    pip==9.0.1    phply==1.0.0    Werkzeug==0.11.9

常用统计sql

统计漏洞类型

1
SELECT DISTINCT rule_name FROM `vulnerabilities` 

查看sql漏洞

1
SELECT * FROM `vulnerabilities` where rule_name='MySQL Execute Functions可能导致SQL注入'

查看XSS漏洞

1
SELECT * FROM `vulnerabilities` where rule_name='直接输出入参可能导致XSS'

统计每个小组的漏洞数量

1
2
3
4
SELECT p.manager,count(*) FROM `vulnerabilities` as v
left join scan_record as s on v.`key`=s.`key`
left join project as p on s.path=p.path
group by p.manager;

导出我们部门的漏洞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
REPLACE (
CONCAT(s.path, '/', v.file_path),
'/web/product/',
''
) AS file,
v.line_number,
v.rule_name,
v. LANGUAGE,
v.code_content,
v.id AS vulnerability_id,
v.analysis,
v. LEVEL,
v.solution
FROM
`vulnerabilities` AS v
LEFT JOIN scan_record AS s ON v.`key` = s.`key`
LEFT JOIN project AS p ON s.path = p.path
WHERE
p.manager = '张三'

统计每种漏洞的数量,按照严重等级排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
rule_name,
v. LEVEL,
count(*) AS num
FROM
`vulnerabilities` AS v
LEFT JOIN scan_record AS s ON v.`key` = s.`key`
LEFT JOIN project AS p ON s.path = p.path
WHERE
p.manager = '张三'
GROUP BY
rule_name
ORDER BY
v. LEVEL DESC

常用命令

调试学习程序

1
python3 /home/zhouchangju/dev/cobra/cobra.py -t /home/zhouchangju/dev/expr/train/applications/train/controller

常见问题

cobra是多进程么?

是多进程,默认开启5个进程
Python计算的时候很耗费cpu;但也是一个优势,可以将多核利用起来