php代碼混淆提權(quán)在服務(wù)器沒有配置錯誤的情況下如何處理漏洞php混淆在線解密
2022-07-07
是黑客經(jīng)常使用的惡意腳本。其目的是為了獲得服務(wù)器的權(quán)限來執(zhí)行操作,例如執(zhí)行系統(tǒng)命令、竊取用戶數(shù)據(jù)、刪除網(wǎng)頁、修改主頁等。它的危害是不言而喻的。黑客通常利用 SQL 注入、遠(yuǎn)程文件包含 (RFI)、FTP 等常見漏洞,甚至使用跨站點腳本 (XSS) 作為社會工程攻擊的一部分,最終控制網(wǎng)站服務(wù)器。
常用的編程語言有asp、jsp和php。本文將以php為例,詳細(xì)講解常用功能、工作方法、常用隱藏技巧。
為什么受到黑客青睞
黑客使用的第一步通常是將其上傳到可訪問的服務(wù)器,例如利用用戶CMS系統(tǒng)的第三方插件中的漏洞進(jìn)行簡單的php上傳。當(dāng)然,類型和功能并不完全相同。一些簡單的僅用于連接外部世界,允許黑客插入更精確的惡意腳本并執(zhí)行他們需要的指令;其他的可能更復(fù)雜,有數(shù)據(jù)庫或文件瀏覽 一種允許黑客從數(shù)千英里外查看受感染系統(tǒng)的代碼和數(shù)據(jù)的設(shè)備。無論設(shè)計如何,它都是極其危險的,并且是網(wǎng)絡(luò)犯罪分子和高級持續(xù)威脅 (APT) 的常用工具。常見的攻擊特征如下:
持久遠(yuǎn)程訪問
腳本通常包含后門。黑客上傳后,可以充分利用后門實現(xiàn)遠(yuǎn)程訪問和控制服務(wù)器,從而達(dá)到長期控制網(wǎng)站服務(wù)器的目的。此外,在上傳后,黑客選擇自己修復(fù)漏洞,以確保沒有其他人會利用該漏洞。通過這種方式php代碼混淆,黑客可以保持低調(diào),避免與管理員進(jìn)行任何互動,同時仍然獲得相同的結(jié)果。
特權(quán)提升
只要服務(wù)器沒有配置錯誤,它就會在網(wǎng)絡(luò)服務(wù)器的用戶權(quán)限下運(yùn)行php代碼混淆網(wǎng)站制作,這是有限的。通過這個,黑客可以利用系統(tǒng)上的本地漏洞來實現(xiàn)提權(quán)以獲得root權(quán)限,這樣黑客基本上可以在系統(tǒng)上做任何事情,包括安裝軟件、更改權(quán)限、添加和刪除用戶、竊取密碼、閱讀電子郵件和還有更多。
高度隱蔽
可以在普通網(wǎng)頁中嵌套運(yùn)行,不易被檢測和殺死。它也可以通過服務(wù)器防火墻。由于與受控服務(wù)器或遠(yuǎn)程主機(jī)交互的數(shù)據(jù)是通過 80 端口傳輸?shù)模虼瞬粫环阑饓r截。在沒有記錄流量的情況下,使用 post 數(shù)據(jù)包發(fā)送,不會被防火墻發(fā)送。記錄在系統(tǒng)日志中,只有部分?jǐn)?shù)據(jù)提交記錄會記錄在web日志中。
常用的PHP函數(shù)
適用于幾乎所有的網(wǎng)絡(luò)編程語言。 PHP 是焦點,因為它是 Web 上使用最廣泛的編程語言。下面是 PHP 中一些最常用的執(zhí)行命令的函數(shù)。
()
() 函數(shù)將命令作為參數(shù)并輸出結(jié)果。
以下示例在操作系統(tǒng)上運(yùn)行 dir 命令,并返回 PHP 文件所在目錄的目錄列表。
同樣,在機(jī)器上執(zhí)行 ls 命令會得到類似的結(jié)果。
執(zhí)行()
exec() 函數(shù)將命令作為參數(shù),但不輸出結(jié)果。如果指定了第二個可選參數(shù),則結(jié)果以數(shù)組形式返回。否則,如果回顯,則只顯示結(jié)果的最后一行。
使用exec()函數(shù)執(zhí)行echo命令,只會輸出最后一行命令結(jié)果。
如果指定第二個參數(shù),結(jié)果是一個數(shù)組。
()
() 函數(shù)類似于 exec(),但它的整個輸出是一個字符串。
()
() 執(zhí)行命令并以原始格式返回輸出。
()
() 函數(shù)可能很難理解。簡單來說,我們可以使用(),來創(chuàng)建一個(進(jìn)程),實現(xiàn)腳本與要運(yùn)行的程序之間的通信。
反引號
許多 PHP 開發(fā)人員沒有意識到這一點,但 PHP 將首先執(zhí)行命令中反引號 (`) 內(nèi)的任何內(nèi)容。請注意,反引號 (`) 與單引號 (') 不同。
基于以上,下面是一個簡單的PHP。
它使用()函數(shù)執(zhí)行'cmd'HTTP請求的GET參數(shù)中傳遞的命令。
我們已經(jīng)確定這些功能(以及其他一些功能)可能非常危險。更危險的是,在安裝 PHP 時,所有這些內(nèi)置的 PHP 命令都默認(rèn)啟用,并且大多數(shù)系統(tǒng)管理員不會禁用它們。如果您不確定您的系統(tǒng)是否啟用了這些功能,請輸入以下內(nèi)容將返回已啟用的危險功能列表。
在默認(rèn)安裝的情況下,默認(rèn)啟用以下功能。
黑客如何隱藏
修改標(biāo)題
黑客使用用戶代理字符串而不是 $ 參數(shù)來傳遞命令。
然后,黑客可以通過將命令放在 User-HTTP 標(biāo)頭中來制作特定的 HTTP 請求。
在服務(wù)器日志中可以看到這種行為的影響,其中第二個請求中的 HTTP User- 被 cat /etc/ 命令替換。
上述方法可能會很吵,并且很容易提示管理員查看服務(wù)器日志。但是通過以下方法,管理員很難發(fā)現(xiàn)。
這種方法不會留下正在執(zhí)行的命令的可見痕跡(至少在訪問日志中)。
隱藏在普通文件中
黑客可以隱藏的最簡單方法之一是將它們上傳到深層子目錄和/或使用隨機(jī)名稱。
另外,一種更有效的方法是將代碼嵌入到現(xiàn)有的法律文件中。
或使用 CMS(例如)
注意:黑客通常在函數(shù)前使用@操作符寫入錯誤日志,以防萬一發(fā)生錯誤。
混亂
黑客使用各種混淆技術(shù)來避免被管理員檢測到。他們不斷想出新的和更復(fù)雜的方法來隱藏他們的代碼和繞過安全系統(tǒng)。以下是我們見過的一些最常見的技術(shù):
刪除空格和換行符
通過從代碼塊中刪除空白換行符,代碼看起來像一個大字符串,這會降低代碼的可讀性并且更難識別腳本試圖實現(xiàn)的目標(biāo)。
加密技術(shù)
這種技術(shù)會加密代碼,降低代碼可讀性,并利用可在運(yùn)行時重構(gòu)代碼的各種功能。
使用十六進(jìn)制進(jìn)行混淆
十六進(jìn)制值
字符也可以用來進(jìn)一步混淆命令,下面的例子很好的說明了混淆技術(shù)在.
中的應(yīng)用
以下是上述字符串的十六進(jìn)制值。
因此,以下代碼可用于接受十六進(jìn)制編碼的字符串并將其轉(zhuǎn)換為 PHP 代碼。
輸出類似于下圖。
通過可控輸入
PHP中常用的可控輸入包括:$_GET、$、$、$、$、$等,它們是PHP中的預(yù)定義變量網(wǎng)站建設(shè),可以將黑客定義的值傳遞給瀏覽器。
下面的例子很簡單但很有用。雖然代碼沒有被編碼或加密,因為它沒有使用任何可疑的函數(shù)名(例如 eval() 或 ())、冗長的編碼字符串、復(fù)雜的代碼,它的可檢測性比之前的代碼還低。最重要的是,管理員查看日志時不會造成任何危險。
如何使用
我們舉一個例子來分析它是如何使用的。是一個類似 PHP 的輕量級,有幾個選項,我們將在本例中使用。
出于演示目的,我們將使用創(chuàng)建后門代理在目標(biāo)服務(wù)器上進(jìn)行部署。我們只需要指定密碼和文件名。然后使用密碼訪問后門。
.php 包含以下編碼文件。
將 .php 重命名為 ma.php 并將其上傳到受感染的服務(wù)器。然后,我們不使用瀏覽器訪問文件,而是使用文件連接。
現(xiàn)在我們有了目標(biāo)服務(wù)器的后門,我們可以執(zhí)行命令了。
檢查服務(wù)器的訪問日志,我們會發(fā)現(xiàn)一些奇怪的東西。
發(fā)送的請求經(jīng)過編碼,原始 URL 似乎是。如果我們要分析惡意活動的日志,這很可能會困擾我們,因為它應(yīng)該是合法的引薦來源網(wǎng)址。當(dāng)然,這是防止檢測策略的一部分。
我們使用的另一個有趣的功能是反彈 TCP 選項。這意味著受感染的服務(wù)器將連接回我們,或者我們請求連接。
在源機(jī)器上,我們在端口 8181 上設(shè)置了一個監(jiān)聽器。
使用已建立的后門連接發(fā)起退回的 TCP 請求。
反彈連接現(xiàn)已建立 (192.168.5.25 192.168.5.26)@ >.
通過使用反彈 TCP 控制服務(wù)器,在訪問或錯誤日志中沒有任何痕跡,因為通信是通過 TCP(第 4 層)而不是 HTTP(第 7 層)進(jìn)行的。
總結(jié)
代碼簡單且易于使用,但由于許多 Web 服務(wù)器的設(shè)置方式,即使是簡單的腳本也會造成嚴(yán)重破壞。這就是為什么有成千上萬的披露。變種太多,入侵檢測和入侵防御系統(tǒng) (IDS/IPS) 很難檢測到它們,尤其是在使用簽名檢測此類時。有些非常復(fù)雜,即使通過行為分析,也幾乎無法檢測到。
話雖如此,它只是一個后利用實施工具,這意味著首先要盡早檢測到它,以防止它被上傳然后被利用。