0

Go + gorilla/mux v1.4 フレームワークを使用して RESTful Web アプリケーションに取り組んでいます。リリース後のいくつかの基本的なセキュリティ テストで、アプリにオープン URL リダイレクトの脆弱性があることが明らかになりました。この脆弱性により、ユーザーは、サーバーが 301 リダイレクトで応答する外部 URL を使用して特別に細工されたリクエストを送信できるようになります。

Burp Suiteを使用してこれをテストしたところ、アプリ内の外部 URL にリダイレクトするすべてのリクエストが 301 Moved Permanently で応答しているように見えることがわかりました。301 が送信される前にこれらのリクエストを傍受する方法をすべて調べましたが、この動作は net/http サーバーの実装に組み込まれているようです。

サーバーに送信された生のリクエストは次のとおりです (myapp.mycompany.com:8000):

GET http://evilwebsite.com HTTP/1.1
Accept: */*
Cache-Control: no-cache
Host: myapp.mycompany.com:8000
Content-Length: 0

そして、いつでも応答は次のとおりです。

HTTP/1.1 301 Moved Permanently
Location: http://evilwebsite.com/
Date: Fri, 13 Mar 2020 08:55:24 GMT
Content-Length: 0

http.handler でのこのタイプのリダイレクトを防ぐために request.URL のチェックを入れたにもかかわらず、ハンドラーに到達するためのリクエストを得ることができませんでした。PathPrefix("/").Handler コードで定義されているカスタム ハンドラー コードにアクセスすることを許可せずに、ベース http Web サーバーがリダイレクトを実行しているようです。

私の目標は、アプリケーションがそのような要求に対して 404-Not Found または 400-Bad Request を返すようにすることです。ゴリラ/マックスでこのシナリオに直面した人はいますか? Jetty Web アプリで同じことを試してみたところ、完全に有効な 404 が返されることがわかりました。これを数日間行って、実際にいくつかのアイデアを使用することができました。

4

1 に答える 1