亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php命令執行與代碼執行漏洞怎么解決

發布時間:2022-03-19 17:00:20 來源:億速云 閱讀:479 作者:iii 欄目:大數據

本文小編為大家詳細介紹“php命令執行與代碼執行漏洞怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“php命令執行與代碼執行漏洞怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

注:本文僅供參考學習

命令執行定義
當應用需要調用一些外部程序去處理內容的情況下,就會用到一些執行系統命令的函數。如PHP中的system,exec,shell_exec等,當用戶可以控制命令執行函數中的參數時,將可注入惡意系統命令到正常命令中,造成命令執行攻擊。

形成原因
腳本語言優點是簡潔,方便,但也伴隨著一些問題,如速度慢,無法解除系統底層,如果我們開發的應用需要一些除去web的特殊功能時,就需要調用一些外部程序。帶來方便的同時也存在威脅。

漏洞危害
繼承Web服務程序的權限去執行系統命令或讀寫文件
反彈shell
控制整個網站甚至控制服務器
進一步內網滲透

代碼執行與命令執行的區別
命令執行漏洞:
直接調用操作系統命令(相當于在cmd下敲命令)
命令執行漏洞的原理:在操作系統中,“&、|、||”都可以作為命令連接符使用,用戶通過瀏覽器提交執行命令,由于服務器端沒有針對執行函數做過濾,導致在沒有指定絕對路徑的情況下就執行命令(如添加一個名為admin 密碼為admin的用戶 net user admin admin/add net localgroup administrators admin /add 加入管理員組(賦予管理員權限))

php命令執行與代碼執行漏洞怎么解決

command1&command2 兩個命令同時執行
command1&&command2 只有前面命令執行成功,后面命令才繼續執行
command1;command2 不管前面命令執行成功沒有,后面的命令繼續執行
command1||command2 順序執行多條命令,當碰到執行正確的命令后將不執行后面的命令

命令執行常用函數

 1. System:system函數可以用來執行一個外部的應用程序并將相應的執行結果輸出,函數原型如下:
string system(string command, int&return_var)
其中,command是要執行的命令,return_var存放執行命令的執行后的狀態值。
2. Exec:exec函數可以用來執行一個外部的應用程序
string exec (string command, array&output, int &return_var)
其中,command是要執行的命令,output是獲得執行命令輸出的每一行字符串,return_var存放執行命令后的狀態值。
3.Passthru:passthru函數可以用來執行一個UNIX系統命令并顯示原始的輸出,當UNIX系統命令的輸出是二進制的數據,并且需要直接返回值給瀏覽器時,需要使用passthru函數來替代system與exec函數。Passthru函數原型如下:
void passthru (string command, int&return_var)
其中,command是要執行的命令,return_var存放執行命令后的狀態值。
4. Shell_exec:執行shell命令并返回輸出的字符串,函數原型如下:
string shell_exec (string command)
其中,command是要執行的命令。

代碼執行漏洞:
應用程序在調用一些能夠將字符串轉換為代碼的函數(如PHP中的eval)時,沒有考慮用戶是否控制這個字符串,將造成代碼執行漏洞。
很難通過黑盒查找漏洞,大部分都是根據源代碼判斷代碼執行漏洞。

php命令執行與代碼執行漏洞怎么解決

代碼執行相關函數:
PHP: eval、assert、preg_replace()、+/e模式(PHP版本<5.5.0)

漏洞分類

**1.代碼層過濾不嚴
商業應用的一些核心代碼封裝在二進制文件中,在web應用中通過system函來調用:
system("/bin/program --arg$arg");
2.系統的漏洞造成命令注入
bash破殼漏洞(CVE-2014-6271)
3.調用的第三方組件存在代碼執行漏洞
如WordPress中用來處理圖片的ImageMagick組件
JAVA中的命令執行漏洞(struts2/ElasticsearchGroovy等)
ThinkPHP命令執行**

實戰
下面來看看TP5.1的命令執行漏洞
php命令執行與代碼執行漏洞怎么解決

在url添加上poc

/index.php?s=index/\think\Container/invokeFunction&function=call_user_func_array&vars[]=system&vars[1][]=dir

php命令執行與代碼執行漏洞怎么解決
php命令執行與代碼執行漏洞怎么解決
成功執行命令
TP的漏洞還有很多大家可以去試試

修復方案

1.盡量少用執行命令的函數或者直接禁用
2.參數值盡量使用引號包括
3.在使用動態函數之前,確保使用的函數是指定的函數之一
4.在進入執行命令的函數/方法之前,對參數進行過濾,對敏感字符進行轉義
5.能使用腳本解決的工作,不要調用其他程序處理。盡量少用執行命令的函數,并在disable_functions中禁用
6.對于可控點是程序參數的情況下,使用escapeshellcmd函數進行過濾,對于可控點是程序參數值的情況下,使用escapeshellarg函數進行過濾
7.參數的值盡量使用引號包裹,并在拼接前調用addslashes進行轉義
而針對由特定第三方組件引發的漏洞,我們要做的就是及時打補丁,修改安裝時的默認配置。

讀到這里,這篇“php命令執行與代碼執行漏洞怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

长治市| 汉中市| 德清县| 新沂市| 合水县| 调兵山市| 安龙县| 饶阳县| 茶陵县| 革吉县| 翁牛特旗| 武冈市| 龙川县| 马尔康县| 靖远县| 梁山县| 东阿县| 永福县| 凤凰县| 镇雄县| 郧西县| 潍坊市| 晋城| 汉源县| 宝丰县| 安达市| 宁陕县| 建阳市| 七台河市| 平凉市| 安徽省| 巫溪县| 长治市| 定陶县| 宕昌县| 依兰县| 恩施市| 甘肃省| 彰化县| 赤城县| 淄博市|