中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

php命令注入攻擊的示例分析

發布時間:2021-07-01 10:22:54 來源:億速云 閱讀:140 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關php命令注入攻擊的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

命令注入攻擊

命令注入攻擊(Command Injection),是指黑客通過利用HTML代碼輸入機制缺陷(例如缺乏有效驗證限制的表格域)來改變網頁的動態生成的內容。從而可以使用系統命令操作,實現使用遠程數據來構造要執行的命令的操作。
PHP中可以使用下列四個函數來執行外部的應用程序或函數:system、exec、passthru、shell_exec。

信息來源——合天網安實驗室

命令攻擊為什么會形成漏洞?
首先是因為應用需要調用一些執行系統命令的函數,比如上面說的php中的system等函數。其次,當用戶能夠控制這些函數中的參數,就可以將一些惡意的命令拼接到一個正常的命令當中,然后就會造成命令執行漏洞。
所以我們可以得出命令執行漏洞需要的條件:

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

  2. 用戶可以對命令進行控制,從而拼接惡意命令

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

通過命令執行漏洞,我們可以讀寫一些服務器上的文件,并且這些文件是不想讓用戶看到的,比如密碼類的敏感文件。而且,我們可以通過命令打開服務器的遠程服務,這樣就可以拿到服務器的shell,從而操控服務器或者這個網頁。再者,我們還可以對內網進行進一步的滲透。

下面開始實驗。

1.使遠程服務器執行whoami的命令。(whoami命令是查詢當前用戶身份的命令,比如管理員或普通用戶)
打開實驗環境,如下圖所示,我們要使其執行whoami命令。

php命令注入攻擊的示例分析

從返回的結果來看服務器應該是windows系統,后面有補充。

服務器中關鍵代碼如下:

php命令注入攻擊的示例分析

程序獲取GET參數ip,然后拼接到system()函數中,利用system()函數執行ping的功能,但是此處沒有對參數ip進行過濾和檢測,導致可以利用管道符執行其它的系統命令,后面有管道符的補充。

“|”在windows中的意思是:把前面的結果當成后面的輸入,我們用ip=127.0.0.1|whoami來試一下

php命令注入攻擊的示例分析

后面的命令執行成功,得到我們的身份是system

“&”在windows中的意思是:兩條命令一起執行,先執行前面再執行后面,我們用ip=127.0.0.1&whoami來試一下

php命令注入攻擊的示例分析

可以看出whoami命令并沒有成功被執行,原因是在ulr中,“&”是一個連接符號,會被轉義成“%26”,那我們直接使用“%26”,它就會被轉義成真正的“&”,所以我們不妨使用ip=127.0.0.1%26whoami再試一下

php命令注入攻擊的示例分析

命令執行成功,可以看到服務器執行了兩個命令(ping和whoami),我們的身份是system

“||”在windows中的意思是:當前面一個執行失敗,則執行后面的,我們用ip=127.0.0.1||whoami來試一下

php命令注入攻擊的示例分析

這一次whoami命令并沒有被執行,這是因為前面的命令可以執行,我們只要把前面的命令搞成不能執行的,讓它自動執行下一條命令,根據前面提供的關鍵代碼,我們知道只要傳入了正常的ip地址,命令(ping)就會成功執行,所以我們試試把ip地址消除,用ip=||whoami來試一下

php命令注入攻擊的示例分析

命令執行成功,我們的身份是system

2.使遠程服務器執行ipconfig命令

服務器的關鍵代碼如下

php命令注入攻擊的示例分析

補充一下:

preg_match() 函數用于進行正則表達式匹配,成功返回 1 ,否則返回 0 。
preg_match() 匹配成功一次后就會停止匹配,如果要實現全部結果的匹配,則需使用 preg_match_all() 函數。
header()函數的作用是:發送一個原始 HTTP 標頭[Http Header]到客戶端。標頭 (header) 是服務器以 HTTP 協義傳 HTML 資料到瀏覽器前所送出的字串,在標頭與 HTML 文件之間尚需空一行分隔。

這段代碼對ip地址進行了簡單的過濾,如果它匹配到,它會執行下面system那條命令,如果它沒有匹配到,它就無法執行下面那條命令(即ping),也就是我們開始時看到的界面:

php命令注入攻擊的示例分析

所以,我們想要讓服務器執行ipconfig,首先想到的思路就是讓它發生錯誤,執行失敗,使用雙管道讓它執行ipconfig,接下來我們用ip=127.||ipconfig試一下:

php命令注入攻擊的示例分析

成功

同理,我們使用單管道(ip=127.0.0.1|ipconfig)試一試:

php命令注入攻擊的示例分析

成功

繼續,我們使用“%26”(ip=127.0.0.1%26ipconfig)試一試:

php命令注入攻擊的示例分析
php命令注入攻擊的示例分析

執行了兩個命令,成功!

知識補充

我們可以通過ping命令返回結果中的TTL項查看服務器的操作系統:LINUX——64 WIN2K/NT——128 WINDOWS系列——32 UNIX系列——255(前面為操作系統,后面為TTL值) 通過ping返回結果,看TTL值與哪項最為接近,服務器就是哪個操作系統。

我們ping一下百度的試試

php命令注入攻擊的示例分析

TTL值為52,則它與64之間跨了12個路由,所以它的服務器應該是LINUX。

接下來補充一些常用的管道符:

Windows系統支持的管道符如下:

  1. “|”:直接執行后面的語句。

  2. “||”:如果前面的語句執行失敗,則執行后面的語句,前面的語句只能為假才行。

  3. “&”:兩條命令都執行,如果前面的語句為假則直接執行后面的語句,前面的語句可真可假。

  4. “&&”:如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真。

Linux系統支持的管道符如下:

  1. “;”:執行完前面的語句再執行后面的語句。

  2. “|”:顯示后面語句的執行結果。

  3. “||”:當前面的語句執行出錯時,執行后面的語句。

  4. “&”:兩條命令都執行,如果前面的語句為假則執行執行后面的語句,前面的語句可真可假。

  5. “&&”:如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真。

感謝各位的閱讀!關于“php命令注入攻擊的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

php
AI

栖霞市| 临沂市| 焦作市| 南和县| 彭泽县| 闵行区| 吴堡县| 邵东县| 安国市| 精河县| 宁陵县| 沧州市| 许昌市| 彭州市| 卓尼县| 敖汉旗| 闽侯县| 平江县| 桐梓县| 塔城市| 疏附县| 南宫市| 哈巴河县| 建湖县| 盖州市| 蛟河市| 繁峙县| 靖州| 镇原县| 宜阳县| 伊金霍洛旗| 景谷| 赤水市| 东港市| 郯城县| 民勤县| 京山县| 禄丰县| 四平市| 溆浦县| 靖边县|