自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP漏洞全解(二)-命令注入攻擊

系統(tǒng) Linux
本文主要介紹針對PHP網(wǎng)站常見的攻擊方式中的命令攻擊。Command Injection,即命令注入攻擊,是指這樣一種攻擊手段,黑客通過把HTML代碼輸入一個輸入機(jī)制(例如缺乏有效驗(yàn)證限制的表格域)來改變網(wǎng)頁的動態(tài)生成的內(nèi)容。使用系統(tǒng)命令是一項(xiàng)危險的操作,尤其在你試圖使用遠(yuǎn)程數(shù)據(jù)來構(gòu)造要執(zhí)行的命令時更是如此。如果使用了被污染數(shù)據(jù),命令注入漏洞就產(chǎn)生了。

命令注入攻擊

PHP中可以使用下列5個函數(shù)來執(zhí)行外部的應(yīng)用程序或函數(shù)

system、exec、passthru、shell_exec、“(與shell_exec功能相同)

函數(shù)原型

string system(string command, int &return_var)

      command 要執(zhí)行的命令

      return_var 存放執(zhí)行命令的執(zhí)行后的狀態(tài)值

string exec (string command, array &output, int &return_var)

      command 要執(zhí)行的命令

      output 獲得執(zhí)行命令輸出的每一行字符串

      return_var 存放執(zhí)行命令后的狀態(tài)值

void passthru (string command, int &return_var)

      command 要執(zhí)行的命令

      return_var 存放執(zhí)行命令后的狀態(tài)值

      string shell_exec (string command)

      command 要執(zhí)行的命令

漏洞實(shí)例

例1:

  1. //ex1.php 
  2. $dir = $_GET["dir"]; 
  3. if (isset($dir)) 
  4. echo "
    "
  5. system("ls -al ".$dir); 
  6. echo "
"
  • ?> 
  • 我們提交http://www.sectop.com/ex1.php?dir=| cat /etc/passwd

    提交以后,命令變成了 system("ls -al | cat /etc/passwd");

    eval注入攻擊

    eval函數(shù)將輸入的字符串參數(shù)當(dāng)作PHP程序代碼來執(zhí)行

    函數(shù)原型:

    mixed eval(string code_str) //eval注入一般發(fā)生在攻擊者能控制輸入的字符串的時候

    1. //ex2.php 
    2. $var = "var"
    3. if (isset($_GET["arg"])) 
    4. $arg = $_GET["arg"]; 
    5. eval("\$var = $arg;"); 
    6. echo "\$var =".$var
    7. ?> 

    當(dāng)我們提交http://www.sectop.com/ex2.php?arg=phpinfo();漏洞就產(chǎn)生了;

    動態(tài)函數(shù)

    1. php 
    2. func A() 
    3. dosomething(); 
    4. func B() 
    5. dosomething(); 
    6. if (isset($_GET["func"])) 
    7. $myfunc = $_GET["func"]; 
    8. echo $myfunc(); 
    9. ?> 

    程序員原意是想動態(tài)調(diào)用A和B函數(shù),那我們提交http://www.sectop.com/ex.php?func=phpinfo漏洞產(chǎn)生

    防范方法

    1、盡量不要執(zhí)行外部命令

    2、使用自定義函數(shù)或函數(shù)庫來替代外部命令的功能

    3、使用escapeshellarg函數(shù)來處理命令參數(shù)

    4、使用safe_mode_exec_dir指定可執(zhí)行文件的路徑

    esacpeshellarg函數(shù)會將任何引起參數(shù)或命令結(jié)束的字符轉(zhuǎn)義,單引號“’”,替換成“\’”,雙引號“"”,替換成“\"”,分號“;”替換成“\;”

    用safe_mode_exec_dir指定可執(zhí)行文件的路徑,可以把會使用的命令提前放入此路徑內(nèi)

    safe_mode = On

    safe_mode_exec_dir = /usr/local/php/bin/

    責(zé)任編輯:yangsai 來源: DoDo's Blog
    相關(guān)推薦

    2012-04-12 15:06:44

    2012-04-12 14:45:13

    2012-04-12 16:05:50

    2012-04-12 15:42:35

    2012-04-12 15:59:09

    2012-04-12 15:27:44

    2012-04-12 11:28:04

    2012-12-19 10:36:06

    2013-12-13 10:45:26

    2015-02-04 14:50:29

    2010-09-14 16:00:16

    2015-12-29 10:41:16

    2010-08-06 14:08:50

    路由器配置命令

    2013-04-26 11:26:00

    2017-08-09 17:09:47

    2014-11-27 09:31:26

    2025-01-22 12:37:21

    2021-05-11 11:11:00

    漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

    2019-09-17 10:06:46

    數(shù)據(jù)庫程序員網(wǎng)絡(luò)安全

    2015-07-09 14:36:12

    點(diǎn)贊
    收藏

    51CTO技術(shù)棧公眾號