web-dev-qa-db-ja.com

htaccessベースの基本的なhttp認証をバイパスしようとしています

私はこれを解決しようとしています 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を使用していますが、それでも認証フォームをバイパスすることはできません。私のアプローチの何が問題なのですか?

1
Manvendra Singh

これは単に、サーバーが想定している方法で脆弱性がないことを意味します(GETSの代わりにGETを使用して、HTTP動詞のブラックリストをバイパスします)。

http://htaccess.hacking.w3challs.com/?page=/.htaccess のようなパスを渡してみましたが、ディレクトリトラバーサルが可能であるようです。ディレクトリツリーのどこかで.htpasswdファイルを探してみてください。

3
rhodeo

認証をバイパスするために動詞のジャグリングまたはGETSのような複雑なHTTP動詞を使用するには、サーバーで2つの構成オプションが必要です(Apacheの例が提供されています)。

  1. 認証は、<Limit VERB VERB VERB>ディレクティブを使用して実装する必要があります。これは、リストされた動詞の認証のみを実施するためです。たとえば、制限がGETPOSTのみを対象としている場合は、verジャグリングでこれを回避できます(PUTの代わりにPOSTを使用)

  2. 動詞をジャグリングできない場合は、GETSの代わりにGETなどのマングルされた動詞を使用して、とにかくジャグリングできる可能性があります。ただし、これが可能なのは、アプリケーションハンドラーが不明な動詞を許可するか、既知の動詞(phpスクリプトハンドラーなど)を検証する不正なジョブを実行する場合のみです。

この<Limit>ディレクティブのバリエーションなしで認証が実装されている場合、私が知っている既知のバイパスはありません。

1
wireghoul