私は、HackTheBoxプラットフォームからマシンのファイナライズのために送信されたソリューションを引き続き公開しています。
この記事では、サイトのディレクトリとサブドメインを一覧表示し、LFIを利用し、アクセスできないファイルのバックアップを作成し、暗号化されたボリュームをマウントします。
実験室への接続はVPN経由です。情報セキュリティについて何か知っている人とのプライベートネットワークにいるので、仕事用のコンピューターや重要なデータがあるホストから接続しないことをお勧めします。
組織情報
偵察
このマシンのIPアドレスは10.10.10.183で、/ etc / hostsに追加します。
10.10.10.183 forwardslash.htb
まず、開いているポートをスキャンします。nmapですべてのポートをスキャンするには長い時間がかかるため、最初にmasscanを使用してスキャンします。tun0インターフェースからすべてのTCPおよびUDPポートを毎秒500パケットでスキャンします。
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.183 --rate=500
ここで、ポートで実行されるサービスに関する詳細情報を取得するには、-Aオプションを指定してスキャンを実行します。
nmap -A forwardslash.htb -p22,80
サーバーはSSHサービスとWebサーバーを実行します。私たちはウェブサーバーに行き、彼らが私たちに何を提供できるかを見ます。
これは、ホストのハッキングについて知らされている方法であり、XMLとFTPが言及されています。gobusterでディレクトリをループしてみましょう。パラメータでは、128(-t)、URL(-u)、ディクショナリ(-w)、および関心のある拡張(-x)のストリーム数を指定します。
gobuster dir -t 128 -u http://forwardslash.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt
そして、note.txtを見つけます。読みましょう。
サイトをハッキングしたグループとバックアップが存在することが報告されています。サブドメインを検索してみましょう。フィルターとして、文字数を0以外に設定します。
wfuzz -H 'HOST:FUZZ.forwardslash.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u forwardslash.htb --hh 0
そして、バックアップサブドメインに移動します。/ etc / hostsファイルに追加しましょう。
10.10.10.183 backup.forwardslash.htb
このドメインのディレクトリも見てみましょう。
gobuster dir -t 128 -u http://backup.forwardslash.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt
そして、私たちはこのアドレスに行きます。
エントリーポイント
承認フォームでお迎えします。
登録の可能性もあります。登録してログインしましょう。
リンクをたどると、名前、パスワードを変更するためのフォームが見つかり、プロフィール写真を設定することもできます。それについて考えましょう。
この機能はハッキングにより無効にされたと報告されています。この場合、入力フィールドは利用できません。おそらくHTMLでは無効になっています。
このプロパティを両方の要素から削除します。ローカルマシンでWebサーバーを起動し、フィールドにtest.txtファイルへのリンクを示しました。
フィルターがないので、LFIベクトルを試してみましょう。ビジネスの便宜上、これはBurp Suiteにあります。
そして、LFIがあります!
ユーザー
Apacheの設定を確認してみましょう。
しかし、phpファイルを読み取ろうとすると、テキストとして表示されません。代わりに実行されます。
ただし、base64などのphpフィルターを使用できます。これは、phpファイルが最初にエンコードされ、次にページに表示される方法です。したがって、実行されません。
php://filter/convert.base64-encode/resource=../../../../var/www/backup.forwardslash.htb/index.php
目的のフラグメントを選択し、Ctrl + Shift + Bを押します。
デコードされたコードを取得します。このメソッドを使用して、スキャン中に見つかったすべてのファイルを読み取ってみましょう。config.phpファイルでデータベースに接続するためのパスワードを見つけます。
/dev/index.phpも見てみましょう。そしてそこに、ユーザーchivの認証データがあります。
このユーザーはシステム内にあり、/ etc / passwdからこれを学習します。このデータをSSH経由で接続してみましょう。
USER2
システムでデータを収集するには、LinPEASスクリプトを使用します。そして、バックアップにある種のメモが見つかります。
したがって、バックアップにはパスワード付きの古い構成があります。それは痛みに属します。
したがって、バックアッププログラムにはSUIDビットがあります。つまり、ユーザーの痛みとしてプログラムを実行できます。
バックアップは作成できますが、特定のランダムファイルのみです。
バックアッププログラムから提示された名前を付けることで、構成のバックアップへのリンクを作成できます。しかし、数秒で完成させる必要があります。したがって、スクリプトを作成します。まず、ファイル名を取得しましょう。
次に、リンクの作成と再バックアップを追加します。
ユーザーのホームディレクトリから実行して、ファイルを取得しましょう。
このパスワードを入力してユーザーを変更します。
ルート
パスワードなしでコマンドを実行するための裁判所の設定を見てみましょう。
したがって、暗号化されたボリュームがあります。それを復号化してマウントするには、パスワードが必要です。
暗号文とプログラムがあります。
復号化には、次のコードを使用します。
def decrypt(key, msg):
key = list(key)
msg = list(msg)
for char_key in reversed(key):
for i in reversed(range(len(msg))):
if i == 0:
tmp = ord(msg[i]) - (ord(char_key) + ord(msg[-1]))
else:
tmp = ord(msg[i]) - (ord(char_key) + ord(msg[i-1]))
while tmp < 0:
tmp += 256
msg[i] = chr(tmp)
return ''.join(msg)
ciphertext = open('ciphertext', 'r').read().rstrip()
for i in range(1, len(ciphertext)):
for j in range(256):
key = chr(j) * i
text = decrypt(key, ciphertext)
if ' the ' in text or ' to ' in text:
print(key)
print(text)
exit()
そして、メッセージを正常に復号化します。
指定されたパスに沿って何があるか見てみましょう。
ボリュームを復号化しましょう。
そして、マウントします。
SSHキーはそこにあります。
接続してフラグを取得します。Telegramに
参加できます。興味深い資料、リークされたコース、ソフトウェアを見つけることができます。ITの多くの分野に精通している人々が集まるコミュニティを集めましょう。そうすれば、ITと情報セキュリティの問題について常に互いに助け合うことができます。