zoukankan      html  css  js  c++  java
  • Drupal 7.31SQL注入getshell漏洞利用详解及EXP

    0x00

    这个漏洞威力确实很大,而且Drupal用的也比较多,使用Fuzzing跑字典应该可以扫出很多漏洞主机,但是做批量可能会对对方网站造成很大的损失,所以我也就只是写个Exp不再深入下去。

    0x01

    关于漏洞的原理和POC在我的博客上已经有文章进行解释,这里只是着重说一下利用过程。配合POC的效果,我主要是从远程代码执行和GetShell方面去做的利用。

    远程代码执行利用:

    1.使用超级管理员进行登录

    2.开启站点PHP Filter功能

    3.新建aticle,选择PHP_CODE模式(编辑php代码)并预览

    4.预览页面载入后就会执行代码

    对应EXP中DrupalSQLin类的codeExecution函数,这个函数所做的事情就是把上述过程自动化。我编写这个部分比较费劲的 是,requests发送attachment遇到了问题,没有找到比较合适的Python模块,最后实在没办法就自己对Post数据包进行拼接,拼接的 时候要小心,建议遇到同样问题的朋友参考一下RFC1867协议规范,拼接结构如下:

    1

    在调试程序时,使用burpsuite进行辅助很有效果,通过burpsuite你可以清楚看到每一次交互的数据包格式与字段内容。

    GetShell利用:

    • 使用超级管理员进行登录
    • 开启网站的PHP Filter功能
    • 新建block,编辑PHP代码
    • 使用PHP_CODE进行保存

    Post请求构造如下:

    2

    使用python进行发包,有个缺点就是不直观,我们无法获知我们的数据包构造是否正确,这时候可以使用requests模块的proxies参数,将代理设置为burpsuite,然后就可以分析调试了。不过,使用新建block的方法获取shell可能权限比较小。

    在构造请求包的时候,有两个字段是form_build_id和form_token,他们是Drupal自带的防止CSRF所使用的token(类似于Django中的csrf防护)。发包之前必须找到这两个东西,使用小型爬虫即可。

    3

    还有一个关键点就是模拟登陆后要保存cookie,因为后续的攻击利用都要携带admin的cookie,否则会执行出错。

    0x02

    命令执行效果:本地监听端口获取反弹shell

    测试环境:本地测试

    程序执行:如下图

    4

    由于反弹shell的基础是socket,所以通信双发没有完成通信会发生阻塞,这里的表现是接收反弹shell的过程中主线程会阻塞。

    反弹出shell的效果:

    5

    0x03

    这个漏洞威力大,带给对方主机的危害也大,且涉及到用户覆盖以及改变网站原有设置的问题。

    如果想要隐蔽地利用,那么需要做很多辅助工作,比如在开启php filter的过程中,涉及到小型爬虫抓取网站原有的配置信息。还有就是管理员的获取方式进行改进,比如插入用户之后将用户加入管理员权限,这个本身我没有测试过,但是是可行的。

    接下来就是放出关键部位的代码:

    模拟登录函数

    6

    开启PHP Filter:

    7

    代码执行:

    8

    0x04

    向这种关于Web的exp写起来真的是不太顺畅,因为要处理很多细节,比如模拟登陆、验证码、csrf的token、甚至徒手拼接POST attachment也不是没有可能。

    关于这个漏洞利用,其实还有一种方法,就是使用了Drupal的回调机制,利用SQL Injection在menu_router表中插入一些构造好的数据,配合最终构成了RCE,然后就是各种花式getshell了。由于篇幅有限,我这里就不再分析了。

    最后,这个EXP对网站构成的危害比较大(覆盖用户名并且有可能改变网站结构),所以也只是写出来供大家学习交流使用,重点是过程,不要用于非法用途。

    相关文件下载:

    链接:http://pan.baidu.com/s/1eQ3V7Bc 密码:s9yi

  • 相关阅读:
    消息队列在VB.NET数据库开发中的应用
    PO: Tips and useful Query
    PO 收料SQL
    计划采购订单
    检查订单是否有退货
    采购订单关闭之PL/SQL实现方法
    库存核心业务(库存管理 库存事务处理)
    采购管理核心流程
    Oracle EBS: 获取PO审批人名字
    ORACLE EBS AP发票到付款的数据流
  • 原文地址:https://www.cnblogs.com/milantgh/p/4994899.html
Copyright © 2011-2022 走看看