日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【渗透技术】一个渗透测试工具人是怎样操作的

發(fā)布時(shí)間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【渗透技术】一个渗透测试工具人是怎样操作的 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

朋友給了我一個(gè)授權(quán)的站點(diǎn),讓我?guī)兔y(cè)試,并記錄整體流程。
從主站測(cè)試無(wú)果。通過(guò)信息收集,發(fā)現(xiàn)服務(wù)器還有一個(gè)疑似測(cè)試使用的旁站。
在GitHub上找到旁站源碼,通過(guò)審計(jì)發(fā)現(xiàn)一個(gè)任意文件讀取漏洞。讀取數(shù)據(jù)庫(kù)配置文件,連接數(shù)據(jù)庫(kù),發(fā)現(xiàn)主站的管理員賬號(hào)密碼,最終getshell。

二、主站測(cè)試

前臺(tái)為登錄頁(yè)面:

隨手試了一下后臺(tái)路徑Admin,發(fā)現(xiàn)路徑?jīng)]改,而且登錄的提示報(bào)錯(cuò)可以枚舉用戶名,可知管理員賬號(hào)就是Admin:


.查看登錄的請(qǐng)求包密碼,發(fā)現(xiàn)沒(méi)有經(jīng)過(guò)加密,那就隨手爆破一波碰碰運(yùn)氣——不出意外沒(méi)有成功:

隨手輸入一個(gè)路徑,看到報(bào)錯(cuò)信息,可以知道框架是Thinkphp,而且是有rce的版本:

拿起Payload一通亂打,發(fā)現(xiàn)沒(méi)反應(yīng),應(yīng)該是漏洞被修復(fù)了。
隨后注冊(cè)賬號(hào),登錄之后隨便點(diǎn)了幾個(gè)功能,都沒(méi)什么可以利用的地方。這套模板之前是有很多漏洞的,但是隨著后面慢慢更新,這些漏洞基本都被修復(fù)了。

三、旁站測(cè)試

既然主站沒(méi)辦法直接打,就轉(zhuǎn)變一下思路,老老實(shí)實(shí)從信息收集開(kāi)始。
找到一個(gè)旁站,Onethink,沒(méi)有什么數(shù)據(jù),看著像是測(cè)試用的:

后臺(tái)路徑依舊沒(méi)改,Admin.php,不過(guò)也進(jìn)不去,沒(méi)什么用:

這套框架已經(jīng)出了很久,也停更了很久。搜索了一下,似乎有sql注入漏洞和緩存文件getshell,但無(wú)法復(fù)現(xiàn),可能因?yàn)榘姹静煌?br /> 之后又在Github搜了一下,可以找到源碼,干脆自己動(dòng)手,豐衣足食。
下載完打開(kāi)代碼,隨便找?guī)讉€(gè)文件拼接路徑,測(cè)試一下是不是同樣的代碼。
確認(rèn)完后開(kāi)始看代碼,先直接全局搜索,各種敏感函數(shù)都搜一遍,發(fā)現(xiàn)有call_user_func_array:

從第一個(gè)開(kāi)始看,iswaf.php文件,call_user_func_array在execute方法里,代碼如下:

functionexecute($function,$args = '',$path = 'extensions') { $function = basename($function); $path= basename($path); self::$model = $function; if(file_exists(iswaf_root.$path.'/'.$function.'.php')) { include_once iswaf_root.$path.'/'.$function.'.php'; $classname = 'plus_'.$function; $class = new $classname; self::$models[] = $function; if(!is_array($args)) $args = array($args); $a = call_user_func_array(array($class, $function),$args); self::debuginfo($function); return $a; } }

追蹤execute方法,有個(gè)runapi方法調(diào)用,代碼如下:

function runapi() { if(isset($_POST['action']) && isset($_POST['args']) &&($_POST['key'] == md5(iswaf_connenct_key) || self::$mode == 'debug')){ $get['args'] =unserialize(self::authcode($_POST['args'],'DECODE')); $get['function'] = $_POST['action']; if($get['function']) { if(!isset($_GET['debug']) &&!isset($_GET['key']) && $_GET['key'] !==md5(iswaf_connenct_key)) { echoself::authcode(self::execute($get['function'],$get['args'],'apis'),'ENCODE'); }else{ print_r(unserialize(self::execute($get['function'],$get['args'],'apis'))); } exit; } } }

那么下一步要看一下怎么調(diào)用這個(gè)runapi方法。runapi方法屬于iswaf類,而在iswaf類內(nèi)有一行代碼直接調(diào)用了這個(gè)方法,iswaf文件在最后會(huì)new一個(gè)對(duì)象且調(diào)用到那個(gè)方法:


所以只要直接訪問(wèn)iswaf文件,就可以調(diào)用runapi方法。
runapi方法接收三個(gè)請(qǐng)求參數(shù),分別是action、args和key,然后對(duì)三個(gè)參數(shù)進(jìn)行判斷,先判斷請(qǐng)求體的action、args不為空,key是md5加密的iswaf_connect_key,這個(gè)是寫死的,定義在conf.php里面:

滿足了這幾個(gè)條件后,就是處理請(qǐng)求里的action和args。action沒(méi)有做特殊處理,只是做了個(gè)賦值。
args走了反序列化和一層authcode方法加密,所以這里的args參數(shù)是要經(jīng)過(guò)序列化的。至于加密方法authcode,代碼太長(zhǎng)了,就不貼出來(lái)了,反正整個(gè)方法直接拉出來(lái)用就行了。
接下來(lái)看下一個(gè)判斷,是get[′function′],為true。其實(shí)就是請(qǐng)求體里的action,所以這個(gè)不用管。然后還有一層,是判斷get['function'],為true。其實(shí)就是請(qǐng)求體里的action,所以這個(gè)不用管。 然后還有一層,是判斷get[function]true實(shí)請(qǐng)action個(gè)_GET請(qǐng)求參數(shù)debug和key都為空和key值,如果走if里的代碼,就是加密,這里要走的是else里的代碼,所以隨便加個(gè)debug=1或者key=1。最后請(qǐng)求包大概就是這樣:

到此,runapi方法就分析完畢了,構(gòu)造好這樣的請(qǐng)求包后,就會(huì)走到execute方法里面。繼續(xù)看一下execute方法:

依舊是有三個(gè)參數(shù),function和args可以通過(guò)runapi方法控制,第三個(gè)參數(shù)是寫死的:

下面這里就重點(diǎn)關(guān)注call_user_func_array了,先通過(guò)if判斷文件是否存在,iswaf_root文件目錄路徑,path前面已經(jīng)看到是apis,function可控。
然后包含文件,拼接plus_和function,之后和args作為參數(shù)傳遞給call_user_func_array執(zhí)行,看一下apis目錄下的文件和代碼,可以發(fā)現(xiàn)這里是專門用于執(zhí)行這些文件代碼的:

而這里面又有一個(gè)write_config方法,可以寫入配置文件:

但是測(cè)試了半天,因?yàn)橐?hào)會(huì)被轉(zhuǎn)義,死活繞不過(guò)去,只能放棄。最后看到一個(gè)讀取文件的方法:

沒(méi)有任何過(guò)濾:

先嘗試讀一下數(shù)據(jù)庫(kù)配置文件:

測(cè)試連接,發(fā)現(xiàn)支持外聯(lián),并且主站的數(shù)據(jù)庫(kù)也在里面。
最后,在其中找到管理員賬號(hào)密碼,解密哈希,進(jìn)入后臺(tái),發(fā)現(xiàn)有任意文件上傳漏洞沒(méi)有修改,可以直接上傳任意文件,這些操作都很常規(guī),就不截圖了。

四、總結(jié)

整體流程走下來(lái),感覺(jué)自己還是運(yùn)氣比較好,目標(biāo)數(shù)據(jù)庫(kù)開(kāi)了外聯(lián),并且找到了主站管理員密碼。
目標(biāo)也是百密一疏,前臺(tái)漏洞都修復(fù)了,可能覺(jué)得后臺(tái)一般進(jìn)不去,就沒(méi)有修復(fù)漏洞。
個(gè)人最大的體會(huì),還是測(cè)試過(guò)程需要多做一些信息收集工作,說(shuō)不定在某個(gè)地方就會(huì)柳暗花明。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的【渗透技术】一个渗透测试工具人是怎样操作的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。