无损扫描这个概念我是在上一年的一个技术沙龙中,听四叶草的拂晓师傅的议题学习到的。百度了下并没有该概念相关介绍,可能是一个小范围使用的术语。参考那个概念我把这个小tips描述为无损检测。无损检测顾名思义就使用Poc去扫描目标站点之后,没有对扫描站点的文件目录,功能结构等进行修改或造成损坏。无损检测可以让Poc更加优雅地检测漏洞。
0x01
无损检测的原理与意义
以前我们在检测站点的任意文件上传,任意写文件,RCE等能直接写shell的漏洞时,编写检测Poc,往往先向站点中写一个带有keyword的txt文本
。然后再访问该文本,如果该文本存在,且内容为keyword则说明漏洞存在。这是传统的检测方式。
传统方式虽然能实现漏洞检测,但是缺点很明显,上传的txt文本残留在了服务器上,系统管理员很容易发现Poc检测过的痕迹,这样的检测是不优美的。而无损检测就是为了解决这个问题。无损检测上传的是无损检测页面脚本,该脚本会先输出keyword,然后自删除,也就是无损检查页面访问一次就自动删除掉了,不会残留在服务器上。
通过对比两个时序图,不难发现无损检测只是多了一个5:自删除
的步骤。
0x02
各种语言版本的无损检测页面源码
当时拂晓师傅在演讲议题时,只是举例了php语言的无损检测页面脚本源码。后来我审计到了一个java开源cms的任意上传漏洞后,在写Poc时困在了没有无损检测页面jsp脚本。在打算为其他语言(asp,aspx,jsp)编写无损检查页面脚本时,拂晓表哥发了个链接。看了下发现Bugscan团队早就已经写好了,顿时感觉自己out了。以下无损检测页面脚本源码来源Bugscan的文档,具体链接放在了文末。
2.1 asp
访问该文件后输出:
e165421110ba03099a1c0393373c5b43
2.2 aspx
访问该文件后输出:
e165421110ba03099a1c0393373c5b43
2.3 php
输出:
e165421110ba03099a1c0393373c5b43
2.4 jsp
访问该文件后输出:
e165421110ba03099a1c0393373c5b43
2.5 jspx
访问该文件后输出:
e165421110ba03099a1c0393373c5b43
0x03
一个例子
利用无损检查的思想去编写Poc,会使得检查方式更加优美。下面以我审计出的一个任意文件上传漏洞的poc为例子。
漏洞细节很简单,由于f/upload.action
上传页面没在拦截器拦截范围内,导致可以在未登录状态下上传,同时没有对上传成功的后缀进行检查。故存在任意文件上传,上传成功会直接返回文件路径。
根据以上漏洞详情,我们运用无损检测的思想可写出如下Poc。
0x4
参考文章
http://doc.bugscan.net/chapter3/3-3.html
本文始发于微信公众号(回忆飘如雪):【第2周】编写Poc小Tips之无损检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论