程式碼注入漏洞以及修復方法
1.漏洞概述
PHP程式碼執行漏洞指應用程式本身過濾不嚴格,使用者可以通過請求將程式碼注入到程式中執行,類似於SQL隱碼攻擊漏洞,可以把SQL語句通過網頁注入到SQL服務執行,而PHP程式碼執行漏洞則是可以把程式碼注入應用到網站後端中,如果漏洞沒有特殊的過濾,相當於直接有一個web後門存在,該漏洞主要由動態程式碼執行函式的引數過濾不嚴格導致。
2.技術概述
執行PHP程式碼寫入WebShell
3.風險概述
控制網站甚至伺服器
4.黑盒測試
在自己搭建的平臺上表單處鍵入 phpino()語句
這條語句在後端中沒有被當做正常字串資訊顯示出來而是當做PHP程式碼執行
接下來我們在鍵入一個能寫webshell的語句
顯示正常
伺服器中已經被寫入了一個webshell
5.檢視原始碼,可以看見動態程式碼執行函式eval,該函式將字串直接以PHP程式碼形式執行,反斜槓‘\’作為轉義符號將從表單提交的資料轉義成了字串,這樣就構成了程式碼注入的漏洞,即輸入的程式碼被轉義為字串又被eval以php形式執行。
6.修復方案
業內最新的修復方案基於黑名單的思想,將一些函式必有的符號進行過濾。
<?php
//判斷字串包含函式
function checkstr($str,$find){
$find_str = $find;
$tmparray = explode($find_str,$str); //explode()函式把字串通過某個指定的字元拆分為陣列。$str為原始字串 $findstr為
if(count($tmparray)>1){ //要查詢的字元,如果存$findstr 那麼這個字串就會被拆分成兩份或者兩份以上 那麼陣列裡的元素就在兩個或者兩個以上
return true;
} else{
return false;
}
}
/*判斷請求表單欄位含下劃線,左括號,右括號,分號 */
if(isset($_REQUEST['submit']) && !checkstr($_REQUEST['name'],';') && !checkstr($_REQUEST['name'],'(') && !checkstr($_REQUEST['name'],')') && !checkstr($_REQUEST['name'],'_')&& !checkstr($_REQUEST['email'],';') && !checkstr($_REQUEST['email'],'(') && !checkstr($_REQUEST['email'],')') && !checkstr($_REQUEST['email'],'_')&& !checkstr($_REQUEST['message'],';') && !checkstr($_REQUEST['message'],'(') && !checkstr($_REQUEST['message'],')') && !checkstr($_REQUEST['message'],'_')){
/*用filter過濾特殊編碼*/
//filter 函式編碼,過濾特殊字元HTML 轉義字元 '"<>& 以及 ASCII 值小於 32 的字元。
$name = filter_var($_REQUEST["name"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函式編碼,過濾特殊字元HTML 轉義字元 '"<>& 以及 ASCII 值小於 32 的字元。
$email = filter_var($_REQUEST["email"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函式編碼,過濾特殊字元HTML 轉義字元 '"<>& 以及 ASCII 值小於 32 的字元。
$message = filter_var($_REQUEST["message"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函式編碼,過濾特殊字元HTML 轉義字元 '"<>& 以及 ASCII 值小於 32 的字元。
@eval("\$var1 = $name;");
echo $var1;
@eval("\$var2 = $email;");
echo $var2;
@eval("\$var3 = $message;");
echo $var3;
}else{
echo "<b>請勿提交非法字元</b>";
}
?>
相關文章
- 網站漏洞檢測 wordpress sql注入漏洞程式碼審計與修復網站SQL
- 網站程式碼漏洞審計挖掘與修復方法網站
- phpStudy poc漏洞復現以及漏洞修復辦法PHP
- 網站存在漏洞怎麼修復 如何修補網站程式程式碼漏洞網站
- 修復SQL隱碼攻擊漏洞 兩種方法SQL
- 網站被sql注入的修復方法網站SQL
- thinkcmf 網站最新漏洞修復方法網站
- metinfo sql注入漏洞修復建議與防範辦法SQL
- ecshop漏洞修復以及如何加固ecshop網站安全網站
- 網站漏洞測試php程式碼修復詳情網站PHP
- 框架網站漏洞修復防護方法框架網站
- 微信小程式漏洞怎麼修復微信小程式
- 如何對網站登入進行漏洞測試以及漏洞修復網站
- phpcms網站漏洞修復遠端程式碼寫入快取漏洞利用PHP網站快取
- 突破上傳之檔案包含漏洞以及修復方案
- PrestaShop網站漏洞修復如何修復REST網站
- 網站漏洞修復 上傳webshell漏洞修補網站Webshell
- 怎麼修復網站漏洞騎士cms的漏洞修復方案網站
- 詳解ShellShock 漏洞復現原理,內附ShellShock的修復方法
- 網站漏洞修復之圖片驗證碼的詳細修復方案網站
- 高危漏洞!Apache Log4j 遠端程式碼執行漏洞(附修復建議)Apache
- 怎麼修復網站漏洞之metinfo遠端SQL隱碼攻擊漏洞修補網站SQL
- DVWA中學習PHP常見漏洞及修復方法PHP
- Linuxglibc幽靈漏洞測試與修復方法Linux
- 修復Apache Log4j任意程式碼執行漏洞安全風險通告Apache
- 英特爾釋出新微程式碼 有望修復部分晶片“ 幽靈 ”漏洞晶片
- Android熱修復原理(一)熱修復框架對比和程式碼修復Android框架
- struts2架構網站漏洞修復詳情與利用漏洞修復方案架構網站
- 程式碼注入的三種方法
- 如何修復AppScan漏洞APP
- Mac 上的 5 個常見錯誤程式碼以及修復辦法Mac
- Chrome 77釋出,修復遠端程式碼執行漏洞!請儘快更新!Chrome
- VxWorks釋出安全更新修復多個高危遠端程式碼執行漏洞
- TomcatAJP檔案包含漏洞及線上修復漏洞Tomcat
- 網路分流器-網路丟包以及修復方法
- 網站漏洞修補之ECshop4.0跨站指令碼攻擊修復網站指令碼
- weblogic T3 漏洞修復Web
- WordPress 5.1.1 釋出 修復 CSRF 漏洞