私はこれを解決しようとしています webチャレンジ htaccessベースのフォーム認証をバイパスする必要があります。いくつかの調査の後、リクエストを次のように変更しようとしました
GETS /admin/ HTTP/1.1
Host: htaccess.hacking.w3challs.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
元のヘッダーから
GET /admin/ HTTP/1.1
Host: htaccess.hacking.w3challs.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
burp suiteを使用していますが、それでも認証フォームをバイパスすることはできません。私のアプローチの何が問題なのですか?
これは単に、サーバーが想定している方法で脆弱性がないことを意味します(GETS
の代わりにGET
を使用して、HTTP動詞のブラックリストをバイパスします)。
http://htaccess.hacking.w3challs.com/?page=/.htaccess のようなパスを渡してみましたが、ディレクトリトラバーサルが可能であるようです。ディレクトリツリーのどこかで.htpasswdファイルを探してみてください。
認証をバイパスするために動詞のジャグリングまたはGETSのような複雑なHTTP動詞を使用するには、サーバーで2つの構成オプションが必要です(Apacheの例が提供されています)。
認証は、<Limit VERB VERB VERB>
ディレクティブを使用して実装する必要があります。これは、リストされた動詞の認証のみを実施するためです。たとえば、制限がGET
とPOST
のみを対象としている場合は、verジャグリングでこれを回避できます(PUT
の代わりにPOST
を使用)
動詞をジャグリングできない場合は、GETS
の代わりにGET
などのマングルされた動詞を使用して、とにかくジャグリングできる可能性があります。ただし、これが可能なのは、アプリケーションハンドラーが不明な動詞を許可するか、既知の動詞(phpスクリプトハンドラーなど)を検証する不正なジョブを実行する場合のみです。
この<Limit>
ディレクティブのバリエーションなしで認証が実装されている場合、私が知っている既知のバイパスはありません。