0x00php
这个漏洞威力确实很大,并且Drupal用的也比较多,使用Fuzzing跑字典应该能够扫出不少漏洞主机,可是作批量可能会对对方网站形成很大的损失,因此我也就只是写个Exp再也不深刻下去。python
0x01shell
关于漏洞的原理和POC在个人博客上已经有文章进行解释,这里只是着重说一下利用过程。配合POC的效果,我主要是从远程代码执行和GetShell方面去作的利用。cookie
远程代码执行利用:socket
1.使用超级管理员进行登陆函数
2.开启站点PHP Filter功能学习
3.新建aticle,选择PHP_CODE模式(编辑php代码)并预览测试
4.预览页面载入后就会执行代码网站
对应EXP中DrupalSQLin类的codeExecution函数,这个函数所作的事情就是把上述过程自动化。我编写这个部分比较费劲的 是,requests发送attachment遇到了问题,没有找到比较合适的Python模块,最后实在没办法就本身对Post数据包进行拼接,拼接的 时候要当心,建议遇到一样问题的朋友参考一下RFC1867协议规范,拼接结构以下:ui
在调试程序时,使用burpsuite进行辅助颇有效果,经过burpsuite你能够清楚看到每一次交互的数据包格式与字段内容。
GetShell利用:
Post请求构造以下:
使用python进行发包,有个缺点就是不直观,咱们没法获知咱们的数据包构造是否正确,这时候可使用requests模块的proxies参数,将代理设置为burpsuite,而后就能够分析调试了。不过,使用新建block的方法获取shell可能权限比较小。
在构造请求包的时候,有两个字段是form_build_id和form_token,他们是Drupal自带的防止CSRF所使用的token(相似于Django中的csrf防御)。发包以前必须找到这两个东西,使用小型爬虫便可。
还有一个关键点就是模拟登录后要保存cookie,由于后续的攻击利用都要携带admin的cookie,不然会执行出错。
0x02
命令执行效果:本地监听端口获取反弹shell
测试环境:本地测试
程序执行:以下图
因为反弹shell的基础是socket,因此通讯双发没有完成通讯会发生阻塞,这里的表现是接收反弹shell的过程当中主线程会阻塞。
反弹出shell的效果:
0x03
这个漏洞威力大,带给对方主机的危害也大,且涉及到用户覆盖以及改变网站原有设置的问题。
若是想要隐蔽地利用,那么须要作不少辅助工做,好比在开启php filter的过程当中,涉及到小型爬虫抓取网站原有的配置信息。还有就是管理员的获取方式进行改进,好比插入用户以后将用户加入管理员权限,这个自己我没有测试过,可是是可行的。
接下来就是放出关键部位的代码:
模拟登陆函数
开启PHP Filter:
代码执行:
0x04
向这种关于Web的exp写起来真的是不太顺畅,由于要处理不少细节,好比模拟登录、验证码、csrf的token、甚至徒手拼接POST attachment也不是没有可能。
关于这个漏洞利用,其实还有一种方法,就是使用了Drupal的回调机制,利用SQL Injection在menu_router表中插入一些构造好的数据,配合最终构成了RCE,而后就是各类花式getshell了。因为篇幅有限,我这里就再也不分析了。
最后,这个EXP对网站构成的危害比较大(覆盖用户名而且有可能改变网站结构),因此也只是写出来供你们学习交流使用,重点是过程,不要用于非法用途。
相关文件下载:
连接:http://pan.baidu.com/s/1eQ3V7Bc 密码:s9yi