
一个基于 C 的简单漏洞,存在于 Webmin 1.890 至 1.920 版本中
简介:
Webmin 漏洞利用是针对 Webmin 服务的一种定向漏洞利用,可在旧版本的 Webmin 上进行利用。该漏洞利用使用多种技术在目标系统上执行恶意代码并获得未经授权的访问权限。
它涉及:
使用 C 和汇编代码在目标系统上执行命令。
利用反调试、XOR 解密以及 execve 和 prctl 等系统调用技术来生成反向 Shell。
功能特性: 反调试:使用 ptrace 系统调用防止对漏洞利用进行调试。
XOR 解密:使用 XOR 加密在内存中解码诸如 kthreadd 和 /bin/sh 之类的加密字符串。
prctl 系统调用:将进程名称更改为 kthreadd,以在进程列表中隐藏漏洞利用。
execve 系统调用:在目标系统上执行 /bin/sh 反向 Shell,以获得完整的系统访问权限。
C 与汇编的结合:该漏洞利用将 C 语言的灵活性与汇编语言的自定义系统调用能力融为一体。
要求: 操作系统:Linux 或任何基于 Unix 的发行版。
所需库:
libcurl:用于在客户端和服务器之间建立连接。
GCC:用于编译该漏洞利用。
-lcurl 库:用于在 C 中加载 curl 库。
使用方法: 环境搭建: 确保你拥有 root 权限,因为某些操作(如 execve)需要提升的权限。
安装所需库:
sudo apt-get install libcurl4-openssl-dev
编译漏洞利用: 将 webmin_exploit.c 文件下载到你的机器上。
使用带 -no-pie 选项的 GCC 编译漏洞利用代码,以禁用 PIE(位置无关可执行文件):
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
注意:如果遇到与 PIE 相关的问题,请务必使用如上所示的 -no-pie。
运行漏洞利用: 配置漏洞利用设置:根据需要修改代码中的目标 URL、LHOST(本地主机)和 LPORT(本地端口)。
执行漏洞利用:编译后,在目标机器上运行该漏洞利用:
./webExploit
接收反向 Shell:
漏洞利用成功执行后,它应建立到你的 LHOST 和 LPORT(例如 192.168.0.174:4444)的反向 Shell 连接。
确保你正在使用 Netcat 或类似工具监听指定端口:
nc -lvnp 4444
技术详解: 代码中的关键指令: 反调试:使用 ptrace 系统调用防止漏洞利用被 gdb 等工具调试。这使得分析人员更难对漏洞利用进行逆向工程。
XOR 解密:字符串 kthreadd 和 /bin/sh 在二进制文件中使用密钥 0x41(ASCII 'A')进行 XOR 加密。这些字符串在运行时于内存中解密。
系统调用:
prctl(PR_SET_NAME, "kthreadd"):将进程名称更改为 kthreadd,帮助漏洞利用避免被检测。
execve("/bin/sh"):执行到 /bin/sh 的反向 Shell,使攻击者获得系统的完全访问权限。
核心指令: mov:将值加载到寄存器中。
xor:对数据执行 XOR 运算。
syscall:执行系统调用,如 execve 和 prctl,用于生成 Shell 和重命名进程。
lea:将地址加载到寄存器中。
故障排除: 如果在编译过程中遇到问题,请仔细检查是否使用了 -no-pie 标志来禁用位置无关可执行文件(PIE)。
如果问题仍然存在,请确保你的开发环境已更新到包含所需库的最新版本。
警告: 仅可在测试环境中使用此漏洞利用。切勿在正式系统或未经明确许可测试的系统上运行此漏洞利用。
如有需要,请禁用目标机器上的防火墙,以确保反向 Shell 能够成功连接。
确保你正在使用 Netcat 或类似工具监听端口,以捕获反向 Shell 连接。