CentOS 7安装Cobra

官方文档:http://cobra.feei.cn/installation

(注:按照文档一步步操作,遇到了一些小问题,记录下安装过程)

系统环境:

[root@Cobra-VM2 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

[root@Cobra-VM2 local]# python -V
Python 2.7.5

按官网文档提示,安装CentOS 依赖:

[root@Cobra-VM2 ~]# yum install flex bison phantomjs

安装git:

[root@Cobra-VM2 ~]# yum -y install git

创建 /data目录,进入,执行 git clone:

[root@Cobra-VM2 data]# git clone https://github.com/WhaleShark-Team/cobra.git && cd cobra

执行 pip install -r requirements.txt:

[root@Cobra-VM2 cobra]# pip install -r requirements.txt
-bash: pip: 未找到命令

好吧,没有预装pip,安装一下:

[root@Cobra-VM2 cobra]# yum -y install epel-release

[root@Cobra-VM2 cobra]# yum install python-pip

[root@Cobra-VM2 cobra]# pip install --upgrade pip

再执行pip install -r requirements.txt:

嗯,系统回显

Successfully installed ConcurrentLogHandler-0.9.1 Flask-1.0 Flask-RESTful-0.3.6 Jinja2-2.10.1 MarkupSafe-1.1.1 Werkzeug-0.15.3 aniso8601-7.0.0 certifi-2019.6.16 chardet-3.0.4 click-7.0 idna-2.7 itsdangerous-1.1.0 phply-1.0.0 pip-9.0.1 ply-3.11 prettytable-0.7.2 py-1.8.0 pytest-3.0.6 pytz-2019.2 rarfile-2.7 requests-2.20.0 six-1.12.0 urllib3-1.24.3

看上去一切正常,然而:

[root@Cobra-VM2 cobra]# python cobra.py --help
Traceback (most recent call last):
File "cobra.py", line 18, in <module>
from cobra import main
File "/data/cobra/cobra/__init__.py", line 22, in <module>
from . import cli, api, config
File "/data/cobra/cobra/api.py", line 27, in <module>
from flask import Flask, request, render_template, Blueprint
File "/usr/lib/python2.7/site-packages/flask/__init__.py", line 21, in <module>
from .app import Flask, Request, Response
File "/usr/lib/python2.7/site-packages/flask/app.py", line 23, in <module>
from werkzeug.routing import BuildError, Map, RequestRedirect, Rule
File "/usr/lib/python2.7/site-packages/werkzeug/routing.py", line 948
exec(code, globs, locs)
SyntaxError: unqualified exec is not allowed in function '_compile_builder' it contains a nested function with free variables

报错了,google了一下报错原因,貌似是python 2版本的一个bug,不好解决。(自己python能力不行,没法细致分析报错部分的代码和修改。)

 看到cobra官方文档说也支持python 3,于是换个思路,计划升级到python3再装一次试试:

[root@Cobra-VM2 tmp]# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

安装依赖包:

[root@Cobra-VM2 Python-3.7.3]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc  libffi-devel

[root@Cobra-VM2 tmp]# tar -zxf Python-3.7.3.tgz
[root@Cobra-VM2 tmp]# cd Python-3.7.3

[root@Cobra-VM2 Python-3.7.3]# ./configure --prefix=/usr/local/python3.7

[root@Cobra-VM2 Python-3.7.3]# make && make install

python 3安装完之后,替换一下软链接

[root@Cobra-VM2 Python-3.7.3]# mv /usr/bin/python /usr/bin/python.bak

[root@Cobra-VM2 Python-3.7.3]# ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python

此时看到,python默认执行已经是3.7.3版本。

[root@Cobra-VM2 Python-3.7.3]# python -V
Python 3.7.3

(补充:yum需要使用python2,将/usr/bin/python改为python3后,yum就不能正常运行了,因此需要更改一下yum的配置
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
编辑这两个文件,将文件头的#!/usr/bin/python改为#!/usr/bin/python2即可。)

好,python3升级完了,再来装一次cobra:

[root@Cobra-VM2 cobra]# python cobra.py --help
Traceback (most recent call last):
File "cobra.py", line 18, in <module>
from cobra import main
File "/data/cobra/cobra/__init__.py", line 21, in <module>
from .log import logger
File "/data/cobra/cobra/log.py", line 19, in <module>
import cloghandler
ModuleNotFoundError: No module named 'cloghandler'

还是报错,提示找不到cloghandler这个module.

看上去可能和环境变量设置有关系。

查了一下cloghandler.py这个文件路径:

[root@Cobra-VM2 cobra]# find * / -name cloghandler.py
/usr/lib/python2.7/site-packages/cloghandler.py

修改/etc/profile文件

[root@Cobra-VM2 cobra]# vi /etc/profile

最后增加两行

export PATH=$PATH:/usr/lib
export PATH=$PATH:/usr/local/python3.7/bin

执行resouce /etc/profile命令使环境变量立即生效,使用export命令查看PATH变量,确实已生效。

[root@Cobra-VM2 cobra]# source /etc/profile
[root@Cobra-VM2 cobra]# export
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib:/usr/lib:/usr/local/python3.7/bin"
再来一次,还是报同样的错误。 

[root@Cobra-VM2 cobra]# python cobra.py --help
Traceback (most recent call last):
File "cobra.py", line 18, in <module>
from cobra import main
File "/data/cobra/cobra/__init__.py", line 21, in <module>
from .log import logger
File "/data/cobra/cobra/log.py", line 19, in <module>
import cloghandler
ModuleNotFoundError: No module named 'cloghandler'

有点小崩溃。

思考了一阵,再仔细看了一下Cobra的官方安装步骤,我再做了一次尝试,在上一步pip install -r requirements.txt命令时,我用python3版本的pip试试。

[root@Cobra-VM2 cobra]# pip3 install -r requirements.txt

执行成功,又更新了一堆的依赖组件:

Successfully installed ConcurrentLogHandler-0.9.1 Flask-1.0 Flask-RESTful-0.3.6 Jinja2-2.10.1 MarkupSafe-1.1.1 Werkzeug-0.15.3 aniso8601-7.0.0 certifi-2019.6.16 chardet-3.0.4 click-7.0 idna-2.7 itsdangerous-1.1.0 phply-1.0.0 pip-9.0.1 ply-3.11 prettytable-0.7.2 py-1.8.0 pytest-3.0.6 pytz-2019.2 rarfile-2.7 requests-2.20.0 six-1.12.0 urllib3-1.24.3

再次测试启动cobra,终于不报错了。^_^

[root@Cobra-VM2 cobra]# python cobra.py --help
usage: cobra [-h] [-t <target>] [-f <format>] [-o <output>] [-r <rule_id>]
[-d] [-sid SID] [-dels] [-rp] [-m] [-H <host>] [-P <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 -H 127.0.0.1 -P 8888

本来也可以直接用命令行执行cobra,但是还是想看一下web页面

[root@Cobra-VM2 cobra]# python cobra.py -H 10.9.41.111 -P 80
[14:19:23] [INFO] Start 10.9.41.111:80
* Serving Flask app "cobra.api" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://10.9.41.111:80/ (Press CTRL+C to quit)

(注意:如果-H后面参数写127.0.0.1,只能本机打开此页面,没法通过网络访问,如果本地没装图形界面,这个web页面启用和没启用就没差异了。

如果要通过网络访问,-H后面参数,还是得写可以从网络中访问到的IP地址,还得写本地防火墙规则或者直接禁用防火墙)

[root@Cobra-VM2 ~]# yum install net-tools

做完这些,我终于在自己的物理PC上通过浏览器打开了这个cobra虚拟机的web页面,不容易。

 

如果要在web页面提交自己准备的web程序包来执行扫描,需要执行一下初始化配置,否则会提示upload错误。

在cobra.py文件所在目录,有个配置文件模板 config.template

cp config.template config

最后回顾分析了一下,python2时的错误,我看不懂也解决不了,感觉需要改代码。

python3刚开始的报错,应该还是和python搜索关联lib文件的路径设置有关系,升级完Python3之后,执行pip命令,依赖的库还是装在了python2.7的目录里,当时cloghandler.py文件在/usr/lib/python2.7/site-packages路径下:

[root@Cobra-VM2 cobra]# find * / -name cloghandler.py
/usr/lib/python2.7/site-packages/cloghandler.py

使用pip3来执行官网的安装步骤后,cloghandler.py文件在/usr/local/python3.7/lib/python3.7/路径下:

[root@Cobra-VM ~]# find * / -name cloghandler.py
/usr/local/python3.7/lib/python3.7/site-packages/cloghandler.py

这应该是和python pip库管理器的机制有关,google了一下找到了大神们写的相关文章,文中说到,如果使用python3执行程序,那么就不能import python2.7/site-packages中的库,我遇到的问题应该就是命中了这个。

posted @ 2019-09-05 14:36  辣椒,一生所爱  阅读(3012)  评论(13编辑  收藏  举报