web漏洞之命令執行


 一、概述

1.1何為命令執行

  攻擊者通過web應用可以執行系統命令,從而獲得敏感信息,進而控制服務器攻擊內網。

1.2產生條件

       1.應用調用執行命令的函數

       2.將用戶輸入作為系統命令的參數拼接到命令中

  3.沒有對用戶輸入的過濾或者過濾不嚴格

1.2常見命令

1.2.1 Windows

dir

列出目錄

Ipconfig

查看ip

arp -a

查看路由表

Calc

打開計算器

Regedit

打開注冊表

netstat -ano

查看服務端口信息

1.2.2 linux

Cat /etc/passwd

查看password文件內容

Id

查看當前用戶的id號(Windows中500表示admin,501表示游客,自定義用戶100以上)

Cat /etc/group

查看用戶組文件內容

Pwd

顯示當前目錄

Uname -a

查看當前系統版本

Natstat -pantu

查看當前服務的端口信息

Netstat -nr

查看網關和路由

 

1.3常見命令拼接符

格式

內容

A;B

先執行A,再執行B

A&B

簡單拼接,A B之間無制約關系

A|B

顯示B的執行結果

A&&B

A執行成功,然后才會執行B

A||B

A執行失敗,然后才會執行B

 

 

二、產生原理

  應用有時需要調用一些執行系統命令的函數,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,當用戶能控制這些函數中的參數時,就可以將惡意系統命令拼接到正常命令中,從而造成命令執行攻擊。

三、防御方法

  1.盡量少用執行命令的函數或者直接禁用

       2.參數值盡量使用引號包括,並在拼接前調用addslashes函數進行轉義

       3.在使用動態函數之前,確保使用的函數是指定的函數之一

       4.在進入執行命令的函數方法之前,對參數進行過濾,對敏感字符進行轉義

  5.對於可控點是程序參數的情況下,使用escapeshellcmd函數進行過濾,對於可控點是程序參數值的情況下,使用  escapeshellarg函數進行過濾

四、危害

       1.繼承Web服務程序的權限去執行系統命令或讀寫文件。

       2.反彈shell

       3.控制整個網站甚至控制服務器。

  4.進一步內網滲透

五、php常見危險函數

       system:成功則返回命令輸出的最后一行,失敗則返回FALSE。

       exec:命令執行結果的最后一行內容。

       shell_exec:命令執行的輸出。如果執行過程中發生錯誤或者進程不產生輸出,則返回NULL。

       passthru:執行外部程序並且顯示原始輸出。

  eval:將輸入的字符串參數當做PHP程序代碼來執行  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM