濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解php命令注入攻擊

詳解php命令注入攻擊

熱門標(biāo)簽:海南人工外呼系統(tǒng)有效果嗎 智能電話機器人排名前十名南京 地下城堡2圖九地圖標(biāo)注 抖音有個地圖標(biāo)注是什么意思 阿里云400電話申請加工單 保定crm外呼系統(tǒng)運營商 西區(qū)企業(yè)怎么做地圖標(biāo)注入駐 七魚外呼系統(tǒng)停用嗎 九江外呼系統(tǒng)

這次實驗內(nèi)容為了解php命令注入攻擊的過程,掌握思路。

命令注入攻擊

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

信息來源——合天網(wǎng)安實驗室

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

  1. 應(yīng)用調(diào)用的執(zhí)行系統(tǒng)命令的函數(shù)
  2. 用戶可以對命令進(jìn)行控制,從而拼接惡意命令
  3. 應(yīng)用沒有對用戶的輸入進(jìn)行過濾或者過濾不嚴(yán)格

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

下面開始實驗。

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

從返回的結(jié)果來看服務(wù)器應(yīng)該是windows系統(tǒng),后面有補充。

服務(wù)器中關(guān)鍵代碼如下:

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

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


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

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


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


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

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


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


命令執(zhí)行成功,我們的身份是system

2.使遠(yuǎn)程服務(wù)器執(zhí)行ipconfig命令

服務(wù)器的關(guān)鍵代碼如下


補充一下:

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

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


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


成功

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


成功

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



執(zhí)行了兩個命令,成功!

知識補充

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

我們ping一下百度的試試


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

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

Windows系統(tǒng)支持的管道符如下:

  1. “|”:直接執(zhí)行后面的語句。
  2. “||”:如果前面的語句執(zhí)行失敗,則執(zhí)行后面的語句,前面的語句只能為假才行。
  3. “”:兩條命令都執(zhí)行,如果前面的語句為假則直接執(zhí)行后面的語句,前面的語句可真可假。
  4. “”:如果前面的語句為假則直接出錯,也不執(zhí)行后面的語句,前面的語句為真則兩條命令都執(zhí)行,前面的語句只能為真。

Linux系統(tǒng)支持的管道符如下:

  1. “;”:執(zhí)行完前面的語句再執(zhí)行后面的語句。
  2. “|”:顯示后面語句的執(zhí)行結(jié)果。
  3. “||”:當(dāng)前面的語句執(zhí)行出錯時,執(zhí)行后面的語句。
  4. “”:兩條命令都執(zhí)行,如果前面的語句為假則執(zhí)行執(zhí)行后面的語句,前面的語句可真可假。
  5. “”:如果前面的語句為假則直接出錯,也不執(zhí)行后面的語句,前面的語句為真則兩條命令都執(zhí)行,前面的語句只能為真。

總結(jié)一下:這種需要分析代碼的問題一定不能大意,需要認(rèn)真讀懂什么意思才能破解它的秘密。這次實驗并不是很難,以前在做CTF——Web題有遇到過,那種跟這個差不多,通過分析代碼構(gòu)造url獲取flag。

以上所述是小編給大家介紹的php命令注入攻擊詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • php使用exec shell命令注入的方法講解
  • 淺析PHP反序列化中過濾函數(shù)使用不當(dāng)導(dǎo)致的對象注入問題
  • PHP依賴注入容器知識點淺析
  • PHP使用PDO實現(xiàn)mysql防注入功能詳解
  • PHP防止sql注入小技巧之sql預(yù)處理原理與實現(xiàn)方法分析
  • php+laravel依賴注入知識點總結(jié)
  • php依賴注入知識點詳解
  • php中的依賴注入實例詳解
  • thinkphp5.1框架容器與依賴注入實例分析
  • PHP進(jìn)階學(xué)習(xí)之依賴注入與Ioc容器詳解
  • php反射學(xué)習(xí)之依賴注入示例
  • CTF命令執(zhí)行及繞過技巧

標(biāo)簽:甘肅 梅河口 涼山 遼陽 韶關(guān) 十堰 九江 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解php命令注入攻擊》,本文關(guān)鍵詞  詳解,php,命令,注入,攻擊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解php命令注入攻擊》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解php命令注入攻擊的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    湘阴县| 福建省| 嘉黎县| 内江市| 兖州市| 山东| 甘洛县| 淄博市| 广西| 江口县| 石家庄市| 西丰县| 永寿县| 嵊州市| 赤城县| 苏州市| 油尖旺区| 阿巴嘎旗| 五莲县| 南乐县| 西安市| 扎赉特旗| 长兴县| 根河市| 昌黎县| 富源县| 武宣县| 连山| 茂名市| 沈丘县| 斗六市| 义马市| 九台市| 个旧市| 辽中县| 黎平县| 尚义县| 武定县| 浪卡子县| 鄂尔多斯市| 甘孜县|