PCIコンフィランスに合格しようとしていますが、クロスサイトスクリプトの問題があります

StackOverflow https://stackoverflow.com/questions/4671218

質問

私は現在、クライアントのサイトの1つのPCIコンプライアンスに合格しようとしていますが、テスト会社は私が理解していない脆弱性にフラグを立てています!

テスト会社からの(サイト削除)詳細は次のとおりです。

ここでの問題は、eコマースアプリケーションに一般的に関連付けられているクロスサイトスクリプトの脆弱性です。テストの1つは、サイトURLの最後にGETリクエストに無害なスクリプトを追加しました。ユーザー(私たちのスキャナー)によって入力されたこの同じスクリプトが、ヘッダーでは解決されていないサーバーによって返されたため、クロスサイトスクリプトの脆弱性としてフラグが付けられました。この場合、スクリプトはヘッダーに返されたため、スキャナーは脆弱性にフラグを立てました。

これがターミナルから実行したテストです。これを複製します。

get/?oscsid =%22%3e%3ciframe%20src = foo%3e%3c/iframe%3e http/1.0ホスト:(削除)

HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
</body></html>

この問題の解決策は、これらのタイプのリクエストに関するユーザー入力をサニタイズし、実行可能なスクリプトをトリガーする可能性のある文字がヘッダーまたはページに返されないことを確認することです。

まず、テスターが行った結果を得ることができません。場所を含まない200ヘッダーのみを返したり、オブジェクト移動ページを返したりすることもありません。第二に、クエリ文字列が入ってヘッダーを返すのを止める方法(IIS 6で)はわかりません!最後に、なぜヘッダーのコードが問題になるのか、確かにブラウザは実際にHTTPヘッダーからコードを実行しないのですか?

役に立ちましたか?

解決 2

httpsからアクセスされるページに対して、安全である必要がない任意のページのRedirectがあり、これがリダイレクトの一部として場所を返していることが判明しました。これを変更してください:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", Request.Url.AbsoluteUri.Replace("https:", "http:"));
Response.End();

問題を修正しました

他のヒント

リクエスト: GET /?osCsid=%22%3E%3Ciframe%20src=foo%3E%3C/iframe%3E HTTP/1.0 Host:(removed)

<iframe src=foo></iframe> ここで問題です。

応答テキスト:

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
 </body></html>

応答リンクは次のとおりです。

  http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>

リクエスト文字列の内容が含まれています。

基本的に、誰かが他の誰かにあなたのOSCSIDにページを別の方法でレンダリングできるようにするテキストが含まれているリンクを送ることができます。 OSCSIDがこのようなものに対して入力またはフィルターを消毒することを確認する必要があります。たとえば、必要なJavaScriptをロードできる文字列を提供したり、ページをまったく異なるレンダリングにしたりすることもできます。


サイドノートとして、ブラウザをその存在しないページに転送しようとします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top