dvwa-Command Injection

Command Injection筐摘,即命令注入衅斩,是指通過(guò)提交惡意構(gòu)造的參數(shù)破壞命令語(yǔ)句結(jié)構(gòu)既绩,從而達(dá)到執(zhí)行惡意命令的目的。PHP命令注入攻擊漏洞是PHP應(yīng)用程序中常見(jiàn)的腳本漏洞之一

LOW

1 查看服務(wù)器端源代碼

image.png

2 相關(guān)函數(shù)

stristr(string,search,before_search)

stristr函數(shù)搜索字符串在另一字符串中的第一次出現(xiàn)馒铃,返回字符串的剩余部分(從匹配點(diǎn)),如果未找到所搜索的字符串痕惋,則返回 FALSE

參數(shù) 描述
string 必需区宇。規(guī)定被搜索的字符串。
search 必需值戳。規(guī)定要搜索的字符串议谷。
如果該參數(shù)是數(shù)字,則搜索匹配該數(shù)字對(duì)應(yīng)的 ASCII 值的字符述寡。
before_search 可選柿隙。默認(rèn)值為 "false" 的布爾值。
如果設(shè)置為 "true"鲫凶,它將返回 search 參數(shù)第一次出現(xiàn)之前的字符串部分禀崖。

php_uname() 返回了運(yùn)行 PHP 的操作系統(tǒng)的描述

參數(shù) 描述
”a” (此為默認(rèn),包含序列”s n r v m”里的所有模式)
”s ” (返回操作系統(tǒng)名稱)
”n” (返回主機(jī)名)
” r” (返回版本名稱)
”v” (返回版本信息)
”m” (返回機(jī)器類型)螟炫。

可以看到波附,服務(wù)器通過(guò)判斷操作系統(tǒng)執(zhí)行不同ping命令,但是對(duì)ip參數(shù)并未做任何的過(guò)濾昼钻,導(dǎo)致了嚴(yán)重的命令注入漏洞

命令執(zhí)行漏洞概念:當(dāng)web應(yīng)用程序需要調(diào)用一些外部程序去處理內(nèi)容的情況下掸屡,就會(huì)用到一些執(zhí)行系統(tǒng)命令的函數(shù) 在遠(yuǎn)程服務(wù)器上執(zhí)行任意系統(tǒng)命令

命令執(zhí)行漏洞

常用命令執(zhí)行函數(shù)

exec()、system()然评、popen()仅财、passthru()、proc_open()碗淌、pcntl_exec()盏求、shell_exec() 、反引號(hào)` 實(shí)際上是使用shell_exec()函數(shù)

system() 輸出并返回最后一行shell結(jié)果亿眠。
exec() 不輸出結(jié)果碎罚,返回最后一行shell結(jié)果,所有結(jié)果可以保存到一個(gè)返回的數(shù)組里面纳像。
passthru() 只調(diào)用命令荆烈,把命令的運(yùn)行結(jié)果原樣地直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。

漏洞利用及繞過(guò)姿勢(shì)

| 命令管道符

<>>> 文件重定向符

測(cè)試: 0 | dir c:

代碼只過(guò)濾了部分特殊字符竟趾,可以考慮用其他字符進(jìn)行測(cè)試憔购,這邊列舉一下Window/Linux可利用的特殊字符:

windows支持:

| 直接執(zhí)行后面的語(yǔ)句 ping 127.0.0.1|whoami

|| 前面出錯(cuò)執(zhí)行后面的 宫峦,前面為假 ping 2 || whoami

& 前面的語(yǔ)句為假則直接執(zhí)行后面的,前面可真可假 ping 127.0.0.1&whoami

&&前面的語(yǔ)句為假則直接出錯(cuò),后面的也不執(zhí)行倦始,前面只能為真 ping 127.0.0.1&&whoami

Linux支持:

; 前面的執(zhí)行完執(zhí)行后面的 ping 127.0.0.1;whoami

| 管道符斗遏,顯示后面的執(zhí)行結(jié)果 ping 127.0.0.1|whoami

ll 當(dāng)前面的執(zhí)行出錯(cuò)時(shí)執(zhí)行后面的 ping 1||whoami

& 前面的語(yǔ)句為假則直接執(zhí)行后面的,前面可真可假 ping 127.0.0.1&whoami

&&前面的語(yǔ)句為假則直接出錯(cuò),后面的也不執(zhí)行鞋邑,前面只能為真 ping 127.0.0.1&&whoami

解題:

由服務(wù)端代碼知 沒(méi)有對(duì)特殊字符進(jìn)行過(guò)濾
輸入

127.0.0.1
image.png

輸入

127.0.0.1&&net user
image.png

Linux下輸入127.0.0.1&&cat /etc/shadow甚至可以讀取shadow文件诵次,可見(jiàn)危害之大

DVWA亂碼問(wèn)題的解決辦法:

  1. 到DVWA安裝目錄下(.../WWW/DVWA-master/dvwa/includes)尋找文件dvwaPage.inc.php

  2. 打開(kāi)這個(gè)文件,然后在全文查找charset=utf-8枚碗,將所有utf-8修改為gb2312逾一。

    注意:有好幾處charset=utf-8,要全部修改成charset=gb2312肮雨。記得保存遵堵。

  3. 接下來(lái)再使用DVWA就不會(huì)亂碼啦。

Medium

1 查看服務(wù)器端代碼

image.png

str_replace() 函數(shù)替換字符串中的一些字符(區(qū)分大小寫)
str_replace(find,replace,string,count)

參數(shù) 描述
find 必需怨规。規(guī)定要查找的值陌宿。
replace 必需。規(guī)定替換 find 中的值的值波丰。
string 必需壳坪。規(guī)定被搜索的字符串。
count 可選掰烟。一個(gè)變量爽蝴,對(duì)替換數(shù)進(jìn)行計(jì)數(shù)。

array_keys() 函數(shù)返回包含數(shù)組中所有鍵名的一個(gè)新數(shù)組
array_keys(array,value,strict)

參數(shù) 描述
array 必需纫骑。規(guī)定數(shù)組蝎亚。
value 可選。您可以指定鍵值先馆,然后只有該鍵值對(duì)應(yīng)的鍵名會(huì)被返回发框。
strict 可選。與 value 參數(shù)一起使用煤墙$偷祝可能的值:
true - 返回帶有指定鍵值的鍵名。依賴類型番捂,數(shù)字 5 與字符串 "5" 是不同的。
false - 默認(rèn)值江解。不依賴類型设预,數(shù)字 5 與字符串 "5" 是相同的。

運(yùn)行實(shí)例

<!DOCTYPE html>
<html>
<body>

<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
?>

</body>
</html>
輸出結(jié)果:  Array ( [0] => Volvo [1] => BMW [2] => Toyota )

相比Low級(jí)別的代碼犁河,服務(wù)器端對(duì)ip參數(shù)做了一定過(guò)濾鳖枕,即把”&&” 魄梯、”;”刪除,本質(zhì)上采用的是黑名單機(jī)制
但是對(duì) "&" 沒(méi)有進(jìn)行過(guò)濾
”&&”與” &”的區(qū)別:

Command 1&&Command 2
先執(zhí)行Command 1宾符,執(zhí)行成功后執(zhí)行Command 2酿秸,否則不執(zhí)行Command 2

Command 1&Command 2
先執(zhí)行Command 1,不管是否成功魏烫,都會(huì)執(zhí)行Command 2
所以可以輸入

 127.0.0.1&net user
image.png

由于使用的是str_replace把”&&” 辣苏、”;”替換為空字符,因此可以采用以下方式繞過(guò):
127.0.0.1&;&ipconfig
這是因?yàn)椤?27.0.0.1&;&ipconfig”中的” ;”會(huì)被替換為空字符哄褒,這樣一來(lái)就變成了”127.0.0.1&& ipconfig” 稀蟋,會(huì)成功執(zhí)行


image.png

High

服務(wù)器端核心代碼


image.png

從源碼可以知道
黑名單看似過(guò)濾了所有的非法字符,但仔細(xì)觀察到是把”| ”(注意這里|后有一個(gè)空格)替換為空字符呐赡,于是 ”|”成了“漏網(wǎng)之魚(yú)”退客。
127.0.0.1|net user


image.png

Command 1 | Command 2
“|”是管道符,表示將Command 1的輸出作為Command 2的輸入链嘀,并且只打印Command 2執(zhí)行的結(jié)果

Impossible

服務(wù)端代碼


image.png

相關(guān)函數(shù)
stripslashes() 函數(shù)刪除由 addslashes() 函數(shù)添加的反斜杠
stripslashes函數(shù)會(huì)刪除字符串中的反斜杠萌狂,返回已剝離反斜杠的字符串
explode() 函數(shù)把字符串打散為數(shù)組

參數(shù) 描述
separator 必需。規(guī)定在哪里分割字符串怀泊。
string 必需茫藏。要分割的字符串。
limit 可選包个。規(guī)定所返回的數(shù)組元素的數(shù)目

is_numeric(string)
檢測(cè)string是否為數(shù)字或數(shù)字字符串刷允,如果是返回TRUE,否則返回FALSE碧囊。

Generate Anti-CSRF token
生成反CSRF令牌

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末树灶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子糯而,更是在濱河造成了極大的恐慌天通,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄驼,死亡現(xiàn)場(chǎng)離奇詭異像寒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瓜贾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門诺祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人祭芦,你說(shuō)我怎么就攤上這事筷笨。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵胃夏,是天一觀的道長(zhǎng)轴或。 經(jīng)常有香客問(wèn)我,道長(zhǎng)仰禀,這世上最難降的妖魔是什么照雁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮答恶,結(jié)果婚禮上饺蚊,老公的妹妹穿的比我還像新娘。我一直安慰自己亥宿,他們只是感情好卸勺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著烫扼,像睡著了一般曙求。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上映企,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天悟狱,我揣著相機(jī)與錄音,去河邊找鬼堰氓。 笑死挤渐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的双絮。 我是一名探鬼主播浴麻,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼囤攀!你這毒婦竟也來(lái)了软免?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤焚挠,失蹤者是張志新(化名)和其女友劉穎膏萧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蝌衔,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榛泛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了噩斟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曹锨。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剃允,靈堂內(nèi)的尸體忽然破棺而出艘希,到底是詐尸還是另有隱情硼身,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布覆享,位于F島的核電站,受9級(jí)特大地震影響营袜,放射性物質(zhì)發(fā)生泄漏撒顿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一荚板、第九天 我趴在偏房一處隱蔽的房頂上張望凤壁。 院中可真熱鬧,春花似錦跪另、人聲如沸拧抖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)唧席。三九已至,卻和暖如春嘲驾,著一層夾襖步出監(jiān)牢的瞬間淌哟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工辽故, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徒仓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓誊垢,卻偏偏與公主長(zhǎng)得像掉弛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喂走,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評(píng)論 0 5
  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多殃饿,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,047評(píng)論 1 19
  • Command Injection缴啡,即命令注入壁晒,是指通過(guò)提交惡意構(gòu)造的參數(shù)破壞命令語(yǔ)句結(jié)構(gòu),從而達(dá)到執(zhí)行惡意命令的...
    yemansleep閱讀 326評(píng)論 0 0
  • 作者:Gilberto Najera-Gutierrez譯者:飛龍協(xié)議:CC BY-NC-SA 4.0 簡(jiǎn)介 這章...
    三月行者閱讀 1,877評(píng)論 2 7
  • 一业栅、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,720評(píng)論 0 10