当我们拿到大批资产时,总会想着用脚本快速、批量地去检测目标有无漏洞。像awvs、appscan之类的扫描器过于笨重,不能在短时间内测试完目标。而我们的目的,则是打造一个轻便、简易的poc框架。
简介
“工欲善其事,必先利其器”这句话一点错也没有。既然我们的目的是轻便,那么python则是我们的不二选择。
github上也有很多前辈造的轮子,像poc-t、pocsuite之类的优秀之作。也没必要自己去辛辛苦苦写一份,毕竟重复造轮子效率低下,自己写的也没有前辈好。
这次,我们选择的项目是https://paper.seebug.org/913/
我们要在此的原基础上进行改造,打造属于自己的专属poc框架
原Airpoc项目链接:https://images.seebug.org/archive/airpoc.zip
动手改造
说是改造倒也不算,只是在源代码基础上进行微改
先从主文件下手

可以看出,在原来的Airpoc中,目标地址是被存储在一个list数组中,但这样对我们来说并不方便。我们要实现的是能测试单/多目标,能从文件中批量读取目标地址,也能直接在命令行里接收单个目标。
新建一个attack函数,再往入口点写

相信不解释大家也清楚这是什么意思,能简则简
attack函数具体代码
这样就实现了对单个目标的检测
PS:Content-Type最好设置为application/x-www-form-urlencoded,因为thinkphp类的poc对此有需求,如果没有此类Content-Type,那么poc会失效
main函数中也稍稍修改一下

主文件修改完了,接下来就考虑poc方面了
有关poc
既然是追求刺(qing)激(bian),那就要贯彻到底
从原作者的设计中,可以看出没有考虑过对漏洞结果的储存。本来鄙人是想使用数据库的,但原因大家也知道(其实就是因为懒),写了个超级敷衍人的漏洞存储模块
新建report目录,新建report.py,源码见下

import os
import timedef save(url,pocname,exp):
with open("report/report.html","at") as f:
f.writelines("目标:" + "<a href=" + '"' + url.strip() + '">' + url.strip() + "</a>" + " " + "POC名称:" + pocname.strip() + " " + "Exp:" + exp.strip() + '<br />')
f.writelines("------------------------------------------------------------------------------------------------------------" + '<br />')
每个poc在使用report模块时,要提供三个参数,url,pocname以及exp
结果自动存储在report/report.html文件下

最终结果图见上
然后是poc的具体编写,也是很简单的,以ueditor指纹的poc为例

测试
在页面中发现了ueditor的指纹信息,证实了poc的有效性

小试牛刀
这里我们以补天公益厂商为例子,进行测试
补天公益列表存放在target目录下的butian.txt文件中

结果见上
结尾
为了避免大家嫌麻烦,该魔改项目已经上传github
https://github.com/hackerhackrat/R-poc
还有很多很多的玩法,例如连动fofa、zoomeye资产收集引擎,进行批量测试
最主要还是多收集、多写poc
参考
https://paper.seebug.org/913/

浙江省台州市 1F
这框架挺轻量,直接上手就行。
山东省临沂市 B1
@ 清鹤 确实上手快,配好目标就能跑起来了。
北京市 B1
@ 清鹤 确实轻量,装好依赖直接python跑起来就行,适合应急。
日本 2F
这个脚本支持多线程吗?默认多少线程合适?
湖北省孝感市 B1
@ 月痕歌 线程数默认是多少?跑大批量资产时会不会太慢。
越南 3F
看起来又是复制轮子,作者不怕被喷吗?
泰国 4F
建议把报告输出改成json,方便后续自动化处理。
山东省济南市 B1
@ 小鹿 报告输出html还行,json可能更灵活点。
中国 5F
前几天我也批量跑了几百个目标,遇到超时就把超时阈值调高,结果卡住的少了不少。
韩国 6F
这玩意儿文档太少,敲键盘找例子真是折腾。
福建省厦门市 7F
那如果目标列表里有重复的URL,会不会重复写报告?
日本 8F
思路还行。
上海市 B1
@ 白云 思路确实还行,但感觉扩展性差了点,加新功能得大改。
四川省乐山市 9F
作者直接把改造好的项目直接push,真是省事儿 😂
韩国 B1
@ 青锋剑魄 省事是省事,但自己动手改一遍理解更深。
日本 10F
用了下,基本满足需求。
山东省青岛市 11F
感觉改造得挺实用的,改完直接能用。
四川省内江市 12F
报告模块写得有点糙,凑合用还行。
天津市 13F
这脚本线程数能自己调不?默认值可能不够用。
韩国 14F
之前搞过类似的,结果报告乱成一团,这个倒挺清爽。
台湾省台南市 15F
用了一下,发现有的poc没适配Content-Type,得自己改。
泰国 16F
直接拿现成的改确实省事,不用从头造轮子。
北京市 17F
想问下这框架对HTTPS目标支持怎么样?
重庆市 18F
看着还行,就是文档太少了,得自己摸索。
日本 19F
懒人福音啊,改改就能跑,不用折腾环境。
印度 20F
报告存成html还挺方便看的,直接浏览器就能打开。
山东省淄博市 21F
要是能集成fofa的api自动拉目标就更爽了。
四川省阿坝州 22F
用requests库写poc确实快,改改参数就能测新漏洞。
北京市 23F
github上这种轮子不少,选个顺手的改改确实最快。
广西防城港市 24F
这种框架自己玩玩可以,上生产环境还得再打磨。
北京市 25F
报告模块写文件会不会有并发问题?多个线程同时写可能乱掉。
香港 26F
懒人表示就喜欢这种开箱即用的,省得自己搭架子。🤣
广东省 27F
懒人福音啊,直接拿来就能跑,省得自己折腾环境了。
湖北省武汉市 28F
报告模块写html挺方便,浏览器直接看结果。
中国 29F
要是能自动去重目标列表就更完美了,现在手动处理有点麻烦。
北京市 30F
这个改造思路挺清晰的,照着做应该没问题。
韩国 31F
线程数默认是多少?跑大批量目标会不会太慢?
北京市丰台区 32F
之前用poc-t也遇到过报告混乱的问题,这个看起来简洁多了。
广东省广州市 33F
感觉作者就是懒,报告模块写得太敷衍了,好歹加个时间戳啊。
河南省郑州市 34F
这种框架自己玩玩还行,真要上线还得考虑日志和错误处理。
新加坡 35F
支持多目标文件导入,这个功能很实用。
上海市 36F
改造完的项目直接开源了,挺大方的。
北京市 37F
想问下,如果目标网站有WAF,这个框架能绕过吗?
新疆阿克苏地区 38F
报告模块确实有点简陋了,哈哈。
日本 B1
@ 饕餮吞 哈哈,确实很敷衍
山东省淄博市 39F
改完的版本比原版好用吗?
贵州省 B1
@ 火箭 感觉顺手多了
广东省深圳市 40F
报告页面显示有点乱啊。
宁夏银川市 B1
@ 晚霞归雁 页面显示问题我留意下