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协议规范,拼接结构如下:

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

GetShell利用:

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

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

Drupal 7.31SQL注入getshell漏洞利用详解及EXP的更多相关文章

  1. JBoss远程方法调用漏洞利用详解

    早上起床打开微博看到空虚浪子心大神发的一篇有关Jboss漏洞的文章,对我等菜鸟来说那边文章看起来还是很吃力的,所以查了查国内外的资料,翻译写了这边文章,记录一下. 在JBoss服务器上部署web应用程 ...

  2. Drupal 7.31 SQL注入漏洞利用具体解释及EXP

     有意迟几天放出来这篇文章以及程序,只是看样子Drupal的这个洞没有引起多少重视,所以我也没有必要按着不发了,只是说实话这个洞威力挺大的.当然.这也是Drupal本身没有意料到的. 0x00 首 ...

  3. SSTI服务端模板注入漏洞原理详解及利用姿势集锦

    目录 基本概念 模板引擎 SSTI Jinja2 Python基础 漏洞原理 代码复现 Payload解析 常规绕过姿势 其他Payload 过滤关键字 过滤中括号 过滤下划线 过滤点.(适用于Fla ...

  4. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

  5. CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1 是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻 ...

  6. tomcat session漏洞反序列化详解

    1. 条件1)攻击者可以控制服务器上的文件名/文件内容2)tomcat context配置了persistencemanager的fileSotre3) persistenceManager 配置了s ...

  7. 依赖注入容器Autofac的详解

    Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成,并且开源,Autofac的主要特性如下: 1,灵活的组件实例化:Aut ...

  8. Spring依赖注入(DI)详解

    一.依赖简介 一个典型的企业应用程序不是由一个单一的对象组成(或Spring的说法中的bean).即使是最简单的应用程序也只有几个对象一起工作来呈现最终用户看作是一个连贯的应用程序.如何从定义许多独立 ...

  9. Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解

    本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifier,@Pos ...

随机推荐

  1. 浅谈我对JCS 的理解

    JCS 是Java 中缓存的一种实现,支持将数据缓存到内存和硬盘中,支持设置缓存对象的有效时长. 我认为可以这么理解JCS:客户端向服务器发出请求,服务器就先去缓存中查一下有没有客户端请求的数据,有则 ...

  2. TODO: http框架HttpManager的实现

    提供get, post, 同步, 异步方式访问网络

  3. 常用免费的WebService列表

    天气预报Web服务,数据来源于中国气象局 Endpoint :     http://www.webxml.com.cn/WebServices/WeatherWebService.asmx Disc ...

  4. javac 编译与 JIT 编译

    编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中 ...

  5. 【USACO 2.1】Ordered Fractions

    /* TASK: frac1 LANG: C++ URL: http://train.usaco.org/usacoprob2?S=frac1&a=dbgwn5v2WLr SOLVE: 直接枚 ...

  6. BitmapFactory

    1.以文件流的方式,假设在sdcard下有test.png图片FileInputStream fis = newFileInputStream("/sdcard/test.png" ...

  7. RPCL(Rival Penalized Competitive Learning)在matlab下的实现

    RPCL是在线kmeans的改进版,相当于半自动的选取出k个簇心:一开始设定N个簇心,N>k,然后聚类.每次迭代中把第二近的簇心甩开一段距离. 所谓在线kmeans是就是,每次仅仅用一个样本来更 ...

  8. 【BZOJ-1068】压缩 区间DP

    1068: [SCOI2007]压缩 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1001  Solved: 615[Submit][Status][ ...

  9. springMVC-错误消息的显示和国际化

    显示:在页面添加<form:errors path="*">会把错误消息集中显示在一块 在页面添加<form:errors path="lastname ...

  10. RAC 相关概念解释

    1.1 并发控制 在集群环境中, 关键数据通常是共享存放的,比如放在共享磁盘上. 而各个节点的对数据有相同的访问权限, 这时就必须有某种机制能够控制节点对数据的访问. Oracle RAC 是利用DL ...