命令注入(command injection)是指通過提交惡意構造的引數破壞命令語句結構。從而達到執行惡意命令的目的。
檢視命令注入的流程:
1;檢視是否呼叫系統命令。
2;函式以及函式的引數是否可控。
3;是否拼接命令注入。
下面我們使用dvwa來做測試。
a;我們先將安全等級調整為「low」
1;檢視源**
<?php";if( isset( $_post[ 'submit'] ) )
else
//feedback for the end user
echo "
}?>
2;**分析:
核心函式shell_exec(),該函式的功能就是通過shell執行命令並將完整輸出作為字串返回。整個**看下來並沒有對輸入的引數做一些過濾。幾乎可以判定存在命令注入的漏洞。
3;漏洞利用:
使用&&來執行多條命令(window和linux都可以使用)輸入命令「127.0.0.1 && ifconfig 」這個時候我們發現ifconfig 命令也成功被執行且返回效果。
b;下面我們將安全等級調整為「medium」
1;檢視**
<?php";if( isset( $_post[ 'submit'] ) )
else
//feedback for the end user
echo "
}?>
2;**分析:
這裡我們發現**中採用了黑名單的方法過濾了字串「&&」,「;」也就說類似於127.0.0.1 && ifconfg 這樣使用被過濾的連線符號就無法在成功執行。
我們都知道,採用黑名單並不是絕對安全的,比如上面**當中就沒有過濾「&」那麼下面我們就可以利用這點。
3;漏洞利用:
輸入127.0.0.1 & ifconfig
c;安全等級「high」
1;分析**,這裡我們可以看到只是補充了黑名單。黑名單在過濾的過程中一般會出現遺漏關鍵字的問題。另外就是關鍵字過濾不當的問題。比如下面**我們發現黑名單當中'| ' 這麼符號的過濾,我們仔細發現後面有乙個空格,也就是說如果我們輸入的引數管道符不帶空格,**就無法匹配到。
<?php";if( isset( $_post[ 'submit'] ) )
else
//feedback for the end user
echo "
}?>
2;漏洞利用:
注入**:127.0.0.1|ifconfig 我們可以發現命令ifconfig可以被成功執行。
c;impossible
1;檢視**
<?php";if( isset( $_post[ 'submit'] ) )
else
//feedback for the end user
echo "
}else}//
generate anti-csrf token
generatesessiontoken();
?>
2;**分析:
這段**一共進行了兩點防護,第一是對token進行了驗證。第二對輸入資料進行了嚴格的限定(這裡功能是執行ping命令。所以嚴格設定了輸入形式為ip 的形式)
注釋:token可以預防csrf的攻擊。預防原理是
1;當客戶端請求頁面時,伺服器會生成乙個隨機數token,並且將token放置到session當中。然後將token發給客戶端(一般通過構造hidden表單)
2; 客戶端提交請求時,token會隨著表單一起提交到伺服器端。
然後,如果應用於"anti csrf攻擊",則伺服器端會對token值進行驗證,判斷是否和session中的token值相等,若相等,則可以證明請求有效,不是偽造的。
Web高階漏洞 XPath注入
xpath 是一門在 xml 文件中查詢資訊的語言。xpath使用路徑表示式在 xml 文件中通過元素和屬性進行導航。haha 1 hehe 2 因為xpath 使用路徑表示式在 xml 文件中選取節點 列出幾個常用的路徑表示式 nodename 選取此節點的所有子節點。從根節點擊取。從匹配選擇的當...
dvwa命令注入漏洞
在windows下測試命令執行漏洞時,返回的都是亂碼 找到www dvwa master dvwa includes dvwapage.inc.php 將277 286行的utf 8改為gb2312 只改head中的值還不起作用,還要改http header中content type的內容 或者在p...
命令注入漏洞總結
漏洞本身原理很簡單,使用者的輸入作為 要執行命令的一部分被 一些執行系統命令的函式去執行,如果不注意就能夠讓攻擊者執行系統命令。相關的工具 測試環境 win 10 phpstudy testbed 部署在 乙個最簡單的例子 scenarios regular get classic.php或取 ge...