国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php使用exec shell命令注入的方法講解

2024-05-04 23:19:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
使用系統(tǒng)命令是一項(xiàng)危險(xiǎn)的操作,尤其在你試圖使用遠(yuǎn)程數(shù)據(jù)來(lái)構(gòu)造要執(zhí)行的命令時(shí)更是如此。如果使用了被污染數(shù)據(jù),命令注入漏洞就產(chǎn)生了。
exec()是用于執(zhí)行shell命令的函數(shù)。它返回執(zhí)行并返回命令輸出的最后一行,但你可以指定一個(gè)數(shù)組作為第二個(gè)參數(shù),這樣輸出的每一行都會(huì)作為一個(gè)元素存入數(shù)組。使用方式如下:

復(fù)制代碼 代碼如下:


<?php
$last = exec('ls', $output, $return);
print_r($output);
echo "Return [$return]";
?>


假設(shè)ls命令在shell中手工運(yùn)行時(shí)會(huì)產(chǎn)生如下輸出:

復(fù)制代碼 代碼如下:


$ ls
total 0
-rw-rw-r--  1 chris chris 0 May 21 12:34 php-security
-rw-rw-r--  1 chris chris 0 May 21 12:34 chris-shiflett


當(dāng)通過(guò)上例的方法在exec()中運(yùn)行時(shí),輸出結(jié)果如下:

復(fù)制代碼 代碼如下:


Array
(
  [0] => total 0
  [1] => -rw-rw-r--  1 chris chris 0 May 21 12:34 php-security
  [2] => -rw-rw-r--  1 chris chris 0 May 21 12:34 chris-shiflett
)
Return [0]


這種運(yùn)行shell命令的方法方便而有用,但這種方便為你帶來(lái)了重大的風(fēng)險(xiǎn)。如果使用了被污染數(shù)據(jù)構(gòu)造命令串的話(huà),攻擊者就能執(zhí)行任意的命令。
我建議你有可能的話(huà),要避免使用shell命令,如果實(shí)在要用的話(huà),就要確保對(duì)構(gòu)造命令串的數(shù)據(jù)進(jìn)行過(guò)濾,同時(shí)必須要對(duì)輸出進(jìn)行轉(zhuǎn)義:

復(fù)制代碼 代碼如下:


<?php
$clean = array();
$shell = array();
/* Filter Input ($command, $argument) */
$shell['command'] = escapeshellcmd($clean['command']);
$shell['argument'] = escapeshellarg($clean['argument']);
$last = exec("{$shell['command']} {$shell['argument']}", $output, $return);
?>


盡管有多種方法可以執(zhí)行shell命令,但必須要堅(jiān)持一點(diǎn),在構(gòu)造被運(yùn)行的字符串時(shí)只允許使用已過(guò)濾和轉(zhuǎn)義數(shù)據(jù)。其他需要注意的同類(lèi)函數(shù)有passthru( ), popen( ), shell_exec( ),以及system( )。我再次重申,如果有可能的話(huà),建議避免所有shell命令的使用。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大同市| 高陵县| 新乡县| 剑阁县| 闽侯县| 阳江市| 香格里拉县| 岳池县| 慈溪市| 和田市| 惠安县| 南川市| 汉中市| 寿阳县| 柳州市| 丹江口市| 商南县| 德令哈市| 长治县| 毕节市| 潜山县| 南漳县| 清流县| 江北区| 阳城县| 修水县| 察雅县| 龙胜| 曲周县| 晴隆县| 安顺市| 赫章县| 永寿县| 托克托县| 凉山| 凤山县| 孝义市| 浦城县| 信丰县| 潍坊市| 东乌珠穆沁旗|