RCE - Pikachu
阿新 • • 發佈:2020-08-11
概述:
遠端系統命令執行
一般出現這種漏洞,是因為應用系統從設計上需要給使用者提供指定的遠端命令操作的介面
比如我們常見的路由器、防火牆、入侵檢測等裝置的web管理介面上
一般會給使用者提供一個ping操作的web介面,使用者從web介面輸入目標IP,提交後,後臺會對該IP地址進行一次ping測試,並返回測試結果。
如果,設計者在完成該功能時,沒有做嚴格的安全控制,則可能會導致攻擊者通過該介面提交“意想不到”的命令,從而讓後臺進行執行,從而控制整個後臺伺服器
現在很多的甲方企業都開始實施自動化運維,大量的系統操作會通過"自動化運維平臺"進行操作。 在這種平臺上往往會出現遠端系統命令執行的漏洞。
遠端程式碼執行
同樣的道理,因為需求設計,後臺有時候也會把使用者的輸入作為程式碼的一部分進行執行,也就造成了遠端程式碼執行漏洞。 不管是使用了程式碼執行的函式,還是使用了不安全的反序列化等等。
因此,如果需要給前端使用者提供操作類的API介面,一定需要對介面輸入的內容進行嚴格的判斷,比如實施嚴格的白名單策略會是一個比較好的方法。
exec "ping":
1.先測試一下,127.0.0.1,
補充:
這裡中文出現了亂碼,我們可以執行以下步驟
- 1. 同時按"win + R" ,並輸入 regedit 進入登錄檔
- 2. 找到 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,如果該項下已存在 CodePage 項,則把值改為十進位制 "65001",點選確定即可;如果不存在,在該項下新建一個 DWORD(32位值),命名為 "CodePage",值設為 "65001"。然後關閉登錄檔管理器。
2.在命令列執行漏洞中,我們可以嘗試通過&、&&、|、||、;等符號拼接執行的命令。
我們測試有如下回顯,說明後端沒有嚴格處理,可以執行我們需要的命令。
127.0.0.1 & ipconfig
3.執行如下命令同樣出現回顯,
127.0.0.1 | whoami
補充:
在我們得知目標系統是Linux的情況下, 我們可以利用以下命令來RCE攻擊:
- cmd1 && cmd2 // 只有成功執行了cmd1才能執行cmd2
- cmd1 & cmd2 // 不管成功與否, 都執行兩個命令
exec "eval":
1.測試,返回頁面
phpinfo();
2.測試
system("ipconfig");
3.web是將使用者輸入的字串當做php指令碼瞭解析執行了, 並且沒有做嚴格的過濾處理, 導致了漏洞的產生。