概述
RCE(Remote Command/Code Execute)
給攻擊者向后台服務器遠程注入操作系統命令或者代碼,從而控制后台系統。
遠程系統命令執行
一般出現這種漏洞,是因為應用系統從設計上需要給用戶提供指定的遠程命令操作的接口
比如我們常見的路由器、防火牆、入侵檢測等設備的web管理界面上
一般會給用戶提供一個ping操作的web界面,用戶從web界面輸入目標IP,提交后,后台會對該IP地址進行一次ping測試,並返回測試結果。 如果設計者在完成該功能時,沒有做嚴格的安全控制,則可能會導致攻擊者通過該接口提交“意想不到”的命令,從而讓后台進行執行,從而控制整個后台服務器
遠程代碼執行
同樣的道理,因為需求設計,后台有時候也會把用戶的輸入作為代碼的一部分進行執行,也就造成了遠程代碼執行漏洞。 不管是使用了代碼執行的函數,還是使用了不安全的反序列化等等。因此,如果需要給前端用戶提供操作類的API接口,一定需要對接口輸入的內容進行嚴格的判斷,比如實施嚴格的白名單策略會是一個比較好的方法。你可以通過“RCE”對應的測試欄目,來進一步的了解該漏洞。
exec "ping"
下面是直接輸入 127.0.0.1 的結果
這里中文出現了亂碼,我們可以執行以下步驟
- 1. 同時按"win + R" ,並輸入 regedit 進入注冊表
- 2. 找到 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,如果該項下已存在 CodePage 項,則把值改為十進制 "65001",點擊確定即可;如果不存在,在該項下新建一個 DWORD(32位值),命名為 "CodePage",值設為 "65001"。然后關閉注冊表管理器。
參考文章:https://blog.csdn.net/qq_27682041/article/details/78211922
在命令行執行漏洞中,我們可以嘗試通過 &、&&、|、||、; 等符號拼接執行的命令,比如下面的命令(我的 Pikachu 在Win7虛擬機上)
127.0.0.1 & ipconfig
這時候我們不止會執行 ping 命令,我們輸入的 ipconfig 也執行了
說明后端沒有嚴格處理,可以執行我們需要的命令
exec "eval"
后台會執行響應的 php 代碼,我們可以輸入下面的代碼
phpinfo();
執行結果
下面的是后端代碼,后台會直接執行我們輸入的代碼