一、RCE概述
1.1 什么是RCE?
RCE漏洞,可以讓攻擊者直接向后台服務器遠程注入操作系統命令或者代碼,從而控制后台系統。
1.2 遠程系統命令執行
一般出現這種漏洞,是因為應用系統從設計上需要給用戶提供指定的遠程命令操作的接口,比如我們常見的路由器、防火牆、入侵檢測等設備的web管理界面上。一般會給用戶提供一個ping操作的web界面,用戶從web界面輸入目標IP,提交后,后台會對該IP地址進行一次ping測試,並返回測試結果。如果設計者在完成該功能時,沒有做嚴格的安全控制,則可能會導致攻擊者通過該接口提交"意想不到"的命令,從而讓后台進行執行,從而控制整個后台服務器
現在很多的甲方企業都開始實施自動化運維,大量的系統操作會通過"自動化運維平台"進行操作。 在這種平台上往往會出現遠程系統命令執行的漏洞,不信的話現在就可以找你們運維部的系統測試一下,會有意想不到的"收獲"-_-
1.3 遠程代碼執行
同樣的道理,因為需求設計,后台有時候也會把用戶的輸入作為代碼的一部分進行執行,也就造成了遠程代碼執行漏洞。 不管是使用了代碼執行的函數,還是使用了不安全的反序列化等等。
因此,如果需要給前端用戶提供操作類的API接口,一定需要對接口輸入的內容進行嚴格的判斷,比如實施嚴格的白名單策略會是一個比較好的方法。
二、演示
1、在pikachu實驗平台RCE模塊exec"ping"子選項內,我們在輸入框輸入一個127.0.0.1的本機回環地址,點擊"ping",會出現如下的頁面。
2、如果我們的程序員在設計系統的時候,對於用戶輸入的命令不進行安全檢測,就給攻擊者造成了可乘之機!比如我們輸入127.0.0.1 & ifconfig ,作用是執行完ping 127.0.0.1就會緊接着執行系統命令ipconfig
3、下面我們來看一下源碼。
4、接下來演示遠程代碼執行。來到exec"evel"子選項,在輸入框中隨便輸入一個字符串,提交。
5、接下來我們在輸入框內輸入一個系統函數代碼:phpinfo();
6、我們再來看一下對應的代碼。