天天看點

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

1.指令行注入介紹

指令執行概念

       指令執行漏洞指在可以随意執行系統指令,屬于高危漏洞之一,也屬于代碼執行範圍内,好比說一句話木馬<[email protected]($_POST[‘cmd’]);?>

分類

代碼過濾不嚴格或者無過濾

系統漏洞造成的指令執行,bash破殼漏洞,該漏洞可以構造環境變量的值來執行具有攻擊力的腳本代碼,會影響到bash互動的多種應用,例如http,ssh,dhcp

調用第三方元件,例如php(system(),shell_exec(),exec(),eval()),java(struts2),thinkphp(老牌的php架構)

&&和&和|和||

&&: command1&&command2

指令執行順序:兩個都執行,如果第一個指令不可執行第二個也不執行了。

&:command1&command2

指令執行順序:兩個都執行第一個指令不可執行第二個也可以執行

|:command1|command2

指令執行順序:隻執行command2的指令

||:command1||command2

指令執行順序:隻執行command1的指令,如果第一個執行不了,就執行第二個指令

一些常用指令

windows下

dir,

ipconfig,

arp-a,

calc,

regedit,

netstat-ano

arp-a:(arp欺騙攻擊)在這個表裡面假設

linux下

cat /etc/passwd,

id,

groups,

cat /etc/group,whoami,pwud,

name-a,

netstat-pantu,

netstat-nr

2.Command Injection(指令行注入)

實驗環境

  1. Windows伺服器:Windows xp,IP位址:192.168.65.128;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    2.測試機:Windows10實體機(開啟代理,代理伺服器為burpsuit)

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

實驗過程

安全級别:Low

  1. 設定安全級别;
菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    2.檢視源碼;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    3.源碼分析;

stristr(string,search,before_search)

string 必需。規定被搜尋的字元串。
search

必需。規定要搜尋的字元串。

如果該參數是數字,則搜尋比對該數字對應的 ASCII 值的字元。

before_search

可選。預設值為 "false" 的布爾值。

如果設定為 "true",它将傳回 search 參數第一次出現之前的字元串部分。

php_uname(mode)

這個函數會傳回運作php的作業系統的相關描述,參數mode可取值”a” (此為預設,包含序列”s n r v m”裡的所有模式),”s ”(傳回作業系統名稱),”n”(傳回主機名),” r”(傳回版本名稱),”v”(傳回版本資訊), ”m”(傳回機器類型)。

可以看到,伺服器通過判斷作業系統執行不同ping指令,但是對ip參數并未做任何的過濾,進而導緻了嚴重的指令注入漏洞;

    4.實驗操作;

指令行執行漏洞

127.0.0.1

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

127.0.0.1&&ipconfig

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

127.0.0.1&ipconfig

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

127.0.01|ipconfig

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

127.0.0.1||ipconfig

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

安全級别:Medium

  1. 設定安全級别;
菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    2.檢視源碼;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    3.源碼分析;

Medium級别相比Low級别的代碼,伺服器端對ip參數做了一定過濾,把”&&”“ ;”;”替換為空;

Medium級别的過濾方式本質上采用的是黑名單機制,相比白名單依舊存在安全問題;

    4.實驗過程

4.1 嘗試使用&&,被過濾;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

4.2 伺服器過濾了&&,并未過濾&;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

4.3 伺服器過濾了&&,并未過濾 | ;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

繞過方法

4.4 繞過方法1 : 采用&&&的方式;這種方法實際就是&模式;

4.5  繞過方法2 : 采用&;&的方式;(沒有循環檢測機制,是以這裡相當于還是過濾了;于是還可以用&&);

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

安全級别:High

    1.設定安全級别;

    2.檢視源碼;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    3.源碼分析;

  '&'  => '',

  ';'  => '',

  '|  ' => '',   #“| ”後面有個空格;

  '-'  => '',

  '$'  => '',

  '('  => '',

  ')'  => '',

  '`'  => '',

  '||' => '

伺服器對IP參數做了限制,過濾了如上字元,将如上字元都替換為空;

注:源碼中是将“| ”替換為空,并不是“|”,是以可以采用“|”的方式繞過;

    4.實驗過程;

4.1 嘗試采用"&","|   "等方式實作指令行注入;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

繞過方式

4.2 繞過方法“|”;

安全級别:Impossible

    1.設定安全級别;

    2.檢視源碼;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)

    3.源碼分析;

在Impossible級别中,代碼加入了Anti-CSRF token,同時對參數ip進行了嚴格的限制,隻有諸如“數字.數字.數字.數字”的輸入才會被接收執行,杜絕了指令注入漏洞;

    4.實驗過程;

菜鳥滲透日記22——DVWA下使用Command Injection(指令行注入)1.指令行注入介紹2.Command Injection(指令行注入)