Cobra

来自ling
跳转至: 导航搜索

文档:http://cobra.feei.cn/

Git地址:https://github.com/WhaleShark-Team/cobra

sudo yum -y install git
sudo git clone https://github.com/WhaleShark-Team/cobra.git && cd cobra
yum install flex bison phantomjs
yum -y install python-pip
pip install -r requirements.txt
python cobra.py --help
python cobra.py -t http://root:Dtt!123456789@127.0.0.1:443/tax/tax-auth.git
sudo python cobra.py -t http://127.0.0.1:443/tax/tax-auth.git -f json -o /alidata/cobra/reports/report.json


sudo python cobra.py -t http://127.0.0.1:443/tax/tax-auth.git -f json -o /alidata/cobrareports/auth.json
python cobra.py -t tests/vulnerabilities -f json -o /tmp/report.json 


python /alidata/cobra/cobra.py -t /alidata/taxsource/tax-auth -f json -o /alidata/taxsource/tax-authreport.json  
CLI模式

Examples(使用例子)

# 扫描一个文件夹的代码
$ python cobra.py -t tests/vulnerabilities

# 扫描一个Git项目代码
$ python cobra.py -t https://github.com/FeeiCN/grw.git

# 扫描一个文件夹,并将扫描结果导出为JSON文件
$ python cobra.py -t tests/vulnerabilities -f json -o /tmp/report.json

# 扫描一个Git项目,并将扫描结果JSON文件推送到API上
$ python cobra.py -f json -o http://push.to.com/api -t https://github.com/FeeiCN/vc.git

# 扫描一个Git项目,并将扫描结果JSON文件发送到邮箱中
$ python cobra.py -f json -o feei@feei.cn -t https://github.com/FeeiCN/grw.git

# 扫描一个文件夹代码的某两种漏洞
$ python cobra.py -t tests/vulnerabilities -r cvi-190001,cvi-190002

# 开启一个Cobra HTTP Server,然后可以使用API接口来添加扫描任务
$ python cobra.py -H 127.0.0.1 -P 8888

# 查看版本
$ python cobra.py --version

# 查看帮助
$ python cobra.py --help

# 扫描一个Git项目,扫描完毕自动删除缓存
$ python cobra.py -t http://github.com/xx/xx.git -dels

# 扫描gitlab全部项目,配置好config中private_token,gitlab_url,cobra_ip
$ python git_projects.py

# 自动生成Cobra扫描周报发送至指定邮箱,需要配置好config中的SMTP服务器信息
$ python cobra.py -rp
Help(帮助)

➜  cobra git:(master) ✗ python cobra.py --help
usage: cobra [-h] [-t <target>] [-f <format>] [-o <output>] [-r <rule_id>]
             [-d] [-sid SID] [-H <host>] [-P <port>]

    ,---.     |
    |    ,---.|---.,---.,---.
    |    |   ||   ||    ,---|
    `---``---``---``    `---^ v2.0.0

GitHub: https://github.com/WhaleShark-Team/cobra

Cobra is a static code analysis system that automates the detecting vulnerabilities and security issue.

optional arguments:
  -h, --help            show this help message and exit

Scan:
  -t <target>, --target <target>
                        file, folder, compress, or repository address
  -f <format>, --format <format>
                        vulnerability output format (formats: json, csv,
                        xml)
  -o <output>, --output <output>
                        vulnerability output STREAM, FILE, HTTP API URL, MAIL
  -r <rule_id>, --rule <rule_id>
                        specifies rules e.g: CVI-100001,cvi-190001
  -d, --debug           open debug mode
  -sid SID, --sid SID   scan id(API)
  -dels, --dels         del target directory True or False
  -rp, --report         automation report Cobra data

RESTful:
  -H <host>, --host <host>
                        REST-JSON API Service Host
  -P <port>, --port <port>
                        REST-JSON API Service Port

Usage:
  python cobra.py -t tests/vulnerabilities
  python cobra.py -t tests/vulnerabilities -r cvi-190001,cvi-190002
  python cobra.py -t tests/vulnerabilities -f json -o /tmp/report.json
  python cobra.py -t https://github.com/ethicalhack3r/DVWA -f json -o feei@feei.cn
  python cobra.py -t https://github.com/ethicalhack3r/DVWA -f json -o http://push.to.com/api
  python cobra.py -t https://github.com/ethicalhack3r/DVWA -dels
  python cobra.py -H 127.0.0.1 -P 8888
API接口

1. 添加扫描任务

请求接口

接口:/api/add 方法:POST 类型:JSON

请求参数

参数	类型	必填	描述	例子
key	string	是	config文件中配置的secret_key	{"key":"your_secret_key"}
target	string或list	是	需要扫描的git地址,默认为master分支,如需指定分支或tag可在git地址末尾加上:master	单个项目扫描:{"target": "https://github.com/FeeiCN/dict.git:master"};
多个项目扫描:{"target": ["https://github.com/FeeiCN/dict.git:master", "https://github.com/FeeiCN/autossh.git:master"]}
rule	string	否	仅扫描指定规则,以,分隔	{"rule": "cvi-130003,cvi-130004"}
响应例子

{
    "code": 1001, # 状态码为1001则表示逻辑处理正常
    "result": {
        "msg": "Add scan job successfully.", # 消息
        "sid": "a938e2y2vnkf", # 扫描的任务ID(调用任务状态查询时需要用到)
        "total_target_num": 1 # 扫描任务的项目总数
    }
}
2. 查询扫描任务状态

请求接口

接口:/api/status 方法:POST 类型:JSON

请求参数

参数	类型	必填	描述	例子
key	string	是	config文件中配置的secret_key	{"key":"your_secret_key"}
sid	string	是	扫描的任务ID	 
响应例子

{
    "code": 1001, # 状态码为1001则表示逻辑处理正常
    "result": {
        "msg": "success", # 消息
        "not_finished": 0, # 未完成的项目数
        "report": "http://127.0.0.1/?sid=ae3ea90pkoo5", # 扫描报告页
        "sid": "ae3ea90pkoo5", # 扫描的任务ID
        "allow_deploy": true, # 是否允许发布上线
        "statistic": { # 高中低危漏洞数量
            "high": 5,
            "medium": 18,
            "critical": 0,
            "low": 28
        },
        "status": "done", # 扫描状态
        "still_running": {}, # 正在扫描的项目
        "total_target_num": 1, # 扫描任务的项目总数
    }
}
完整的例子

启动HTTP服务

python cobra.py -H 127.0.0.1 -P 8888
添加扫描任务

# 添加一条任务
curl -H "Content-Type: application/json" -X POST -d '{"key":"your_secret_key", "target":"https://github.com/FeeiCN/grw.git:master", "rule": "cvi-130003,cvi-130004"}' http://127.0.0.1:8888/api/add

# 添加多条任务
curl -H "Content-Type: application/json" -X POST -d '{"key":"your_secret_key", "target":["https://github.com/WhaleShark-Team/cobra.git:master", "https://github.com/FeeiCN/grw.git:master"]}' http://127.0.0.1:8888/api/add
查询任务状态

curl -H "Content-Type: application/json" -X POST -d '{"key":"your_secret_key","sid": "a938e29vdse8"}' http://127.0.0.1:8888/api/status
Web 报告页

http://127.0.0.1:8888/?sid=afbe69p7dxva
Web 指定时间段漏洞统计

http://127.0.0.1:8888/report


Config(配置)

若用到以下功能,则需要配置config文件,否则无需变动。

cp config.template config
将扫描结果发送到指定邮箱
扫描私有GIT项目
变更API Server端口域名
Report模块CLI模式
下一章:升级框架和规则源


Upgrade(升级)

规则文件夹(Rules)也在开源代码中,所以只需要更新代码即可。

git pull origin master 下一章:Report模块使用


tax-core

cd /alidata/taxsource
git clone http://127.0.0.1:443/tax/tax-core.git
docker stop gitlab
cd /alidata/cobra
python cobra.py -H 127.0.0.1 -P 443
cd /alidata/cobra
python /alidata/cobra/cobra.py -t /alidata/taxsource/tax-core -f json -o /alidata/taxsource/tax-corereports.json