原创作者:KibodWapon
0×00 背景
玩过sql注入的人都知道,大多sql注入都不能回显,也就是不能利用union注入,这时候这时候延时盲注,布尔型盲注就派上用场了。最近随着blind型的ssrf ,xxe等漏洞的火爆,CloudEye这类第三方刺探漏洞服务器闪亮登场了。
我们姑且称这种技术叫盲测技术(blind mode),那么今天我们来动手DIY一个NoeYe,为什么叫这个名字呢?因为没有眼睛才是真正的blind即天下无眼。
0×01 使用
我们写了两种方法进行测试,一种dns方式,另一种url方式。前者可以获取多一点数据,后者可以通过token来检测目标是否存在漏洞,这里简单演示怎么使用的,github地址 https://github.com/KibodWapon/NoEye ,有兴趣的同学可以自己改造。
Dns方式:
用dns泛解析技术,记录所有域名查询请求。服务端程序NoEye.py,作为一个dns服务器,记录下所有dns查询数据并写入mysql数据库。为了简单说明,我们用一个user key 作为一个用户的标示,这里用md5 hash。假设我的域名是noeye.com(并不是),我的user key 是A26AD089D4B88BFEDFD06DF26165AC94,那么我的查询都要以.A26AD089D4B88BFEDFD06DF26165AC94. noeye.com结尾。
网站主程序noeye.php 传入user key 参数 uk 就会返回该用户的所有数据记录包括url访问的。
方便演示,我把自己的dns服务器ip地址设置成自己的ip
然后启动NoEye.py 服务端主程序:
模拟victim ping一下noeye_testxxxxx1.A26AD089D4B88BFEDFD06DF26165AC94.noeye.com
回到用户中心看到payload已经执行:
URL方式:
这种方式一般不传输数据,只判断payload是否执行。比如用来测试jenkins,weblogic ,websphere 的java 反序列化漏洞等等。这种方式主要在web端实现,为简单说明,我们假设特定用户(user key)和特定的payload里的victim key 都是hash且有对应关系,url型的payload格式http://www.domain.com/noeye.php?vk=xxxxxxxx&k=xxxxxx ,这里vk能标示这个payload是哪一个个用户发出的,k标示这个用户发出的哪个payload。我们代码里的对应关系是:vk 48e59e6d39edfa5174a493dfc2daac49 -> uk A26AD089D4B88BFEDFD06DF26165AC94
用户A26AD089D4B88BFEDFD06DF26165AC94构造payload
http://localhost/noeye.php?vk=48e59e6d39edfa5174a493dfc2daac49&k=blind_ssi1
victim 访问:
用户登录自己的中心 payload id blind_ssi1 已经成功。
0×02 结语
今天心血来潮写了NoEye,虽然只有两个脚本,但是能实现cloudeye的所有功能。我把代码分享到github (https://github.com/KibodWapon/NoEye)上,欢迎大家继续diy。有什么问题bug也请指出,希望它能走的更远,也希望大家能有更多的开源工具.
*原创作者:KibodWapon,本文属FreeBuf原创奖励计划文章,未经作者本人及FreeBuf许可,切勿私自转载