• 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中的库,我遇到的问题应该就是命中了这个。

  • 相关阅读:
    C# 复制(深拷贝、浅拷贝)
    Nunit-Writing Tests
    Thread.Sleep vs. Task.Delay
    AutoMapper Getting started
    设计:抽象类类还是接口
    C++Primer第五版——习题答案详解(八)
    C++Primer第五版——习题答案详解(七)
    C++Primer第五版——习题答案详解(六)
    C++Primer第五版——习题答案详解(五)
    C/C++中的函数指针的使用与总结
  • 原文地址:https://www.cnblogs.com/xjcn/p/11465850.html
Copyright © 2020-2023  润新知