工具| PocSuite 使用介绍
斗哥采访环节
(1)什么是POC?
答:POC是用来验证漏洞是否存在的一段代码,经常对漏洞做检测的同学对写POC这件事应该不陌生吧哈哈。
(2)框架有什么用?
答:通常我们写POC除了考虑它的通用性以外,还会考虑批量化,线程等。POC写多了需要规范管理和使用,于是框架应运而生了。我们可以写一个POC框架,帮助我们实现批量化和线程输出报告等等其他功能,这样我们就可以专心写POC的代码而不需要考虑其他问题。写一个框架当然不是简单的事情,所以可以先拿别人的框架来使用,必要的时候做二次开发,实在不好再自己写也不迟哈。
(3)关于Pocsuite?
答:PocSuite是一款基于漏洞与 PoC的远程漏洞验证框架,是知道创宇的安全团队开发的。本文主介绍Pocsuite的基本使用方式,关于编写POC的一点点小技巧和使用Pocsuite遇到的问题排错。
2. Pocsuite下载和安装
pip
pip installpocsuite
git clone code
git clone git@github.com:knownsec/pocsuite.git
直接下载解压
wget https://github.com/knownsec/pocsuite/archive/master.zip
unzip master.zip
3. Pocsuite命令行模式
Pocsuite有两种交互模式,一个是命令行模式类似我们所知的sqlmap的界面,另一个是控制台交互模式类似w3af或者matasploit的界面。
查看帮助命令
python pocsuite.py -h
verify和attack两种POC模式
在使用Pocsuite的时候,我们可以用--verify参数来调用_verify方法,用--attack参数来调用_attack方法。
def _attack(self):
result = {}
#Write your code here
return self.parse_output(result)
def _verify(self):
result = {}
#Write your code here
return self.parse_output(result)
verify 模式:验证目标是否存在漏洞
pocsuite -r tests/poc_example.py -u http://www.example.com/ --verify
attack 模式:向目标发起有效的攻击
pocsuite -r tests/poc_example.py -u http://www.example.com/ --attack
批量验证,将url写到一个txt
pocsuite -r test/poc_example.py -f url.txt --verify
加载 tests 目录下的所有 PoC 对目标进行测试(可以充当扫描器角色)
pocsuite -r tests/ -u http://www.example.com--verify
使用多线程,默认线程数为1
pocsuite -r test/ -f url.txt --verify --threads 10
4.调用ZoomEye API
Pocsuite的强大之处还在于能够方便的调用ZooneEye和Seebug两大自家平台API。
--dork DORK :Zoomeye Dork ,用于在ZoomEye 搜索目标
--max-page MAX_PAGE :ZoomEye API 的请求翻页数(10 目标/页)
--search-type :ZoomEye API 搜索类型,web 或者 host
--vul-keyword VULKEYWORD :Seebug 搜索关键词,用于在Seebug 搜索漏洞POC
eg:从ZoomEye中调用host批量验证某个POC。
pocsuite -rweblogic_CVE-2017-10271.py --dork 'weblogic' --max-page 5 --thread 20 --verify
5.POC注意事项
参照模版来写: https://www.seebug.org/contribute/vul
引入基础库,尽量避免第三方库。
比较好POC符合:
(1)随机性:检测的数据,发送的数据要随机。
(2)通用性:考虑适应版本,各种不同的情况,操作系统等。
(3)确定性:准确率的问题,这个POC一定能检测出漏洞来吗?
关于CEYE的使用:监视服务以进行安全测试
有时一些漏洞的检测并没有数据回显,如SQL盲注,如命令执行无回显等等。这时可以借助DNS查询nslook或者curl来监控数据。CEYE为我们提供了这样一种服务,地址:http://ceye.io。
6.Windows下Pocsuite写日志url带冒号报错问题
报错描述
Windows平台使用Pocsuite,当输入的url带有:的时会报错,如下:
[WARNING] unable to create output directory 'C:UsersAdministrator.pocsuiteoutput127.0.0.1:8080'
错误分析
原来保存日志记录会选取C:UsersAdministrator.pocsuiteoutput拼接上url地址,而windows下文件名不允许含有:,所以才会报错。
所以,不论URL是http://还是带有冒号都会报错,看来pocsuite这边在创建这个文件名的时候名没有检查文件名字是否还有特殊符号呀。
错误解决
手动改代码解决问题:反向追踪哪个文件做了创建文件夹的操作。
经查找,发现该操作代码存在于pocsuitelibcontrollercontroller.py文件。
从131行代码开始,定义了一个_setRecordFiles()函数,该函数会创建这么一个文件夹。
def _setRecordFiles():
for (target, pocname, pocid, component, version, status, r_time, result) in kb.results:
iftype(status)!= str:
status = status[1]
target=target.replace(":","_") #这里添加了一行替换代码
outputPath = os.path.join(getUnicode(paths.POCSUITE_OUTPUT_PATH), normalizeUnicode(getUnicode(target)))
可以发现_setRecordFiles()函数从kb.results这个数据实例里面取值。 我们用target=target.replace(":","_")来将:替换成"_",问题解决。
另外,如果是用pip安装的pocsuite,那么这个文件在:
C:Python27Libsite-packagespocsuitelibcontrollercontroller.py
小结
还有很多用法小伙伴可以上官网查阅就不细说了,POC这种东西还是需要平时的积累。以上就是这一期的分享了~
上周答案:ABD
答题积分榜
昵称 得分
1.Tr@cer_0x06lA 50分
2 .xz 35分
3.!f4me 25分
4.JOKE 20分
5.因果 10分
6优雅的Mr.Py 10分
7.จุ๊บArvin⁰¹²³ 10分
8.LOKI 5分
9.Passive 5分
10.J1ink 5分
11.67 5分
12.M 5分
13.Passive 5分
14.J1ink 5分
15. 67 5分
16.大头 5分
17.邢 5分
18.蓝眼 5分
19.Mr 周 5分
20.reborn 5分
21.pensar 5分
22.雨、楼 5分
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法