すべての機能がログインの背後にあるWebアプリがテストされているとします。
実行されるテストの1つは、ログインせずに使用できるページがあるかどうかを確認することです。
アクセスしたいページの実際のURLを試して、ログインページにリダイレクトされるか、またはログインせずにコンテンツが表示されるか(悪い)を確認します。
このプロセスを自動化するために、(おそらく)すべての有効なURLのリストを取得し、各ページを試行して応答コードが何であったかを記録するスクリプトを実行します。
応答が200の場合、ログインなしでアクセスできますが、応答が301、403などの場合、そのURLで問題ありません。
問題は、このWebアプリがログインページにリダイレクトした場合でも200コードを返すことです。
リダイレクトを検出する別の方法はありますか?
許可されていないページ(302が200のログインページにリダイレクトする)と許可されたページ(発見された許可されたページ)の両方で200を返している場合、次のことができます。
どちらも、Python、またはbashを含む、使用したいスクリプト/プログラミング言語を使用して実行できます。ただし、bashははるかに遅くなります。
承知しました。下記参照。
1。Pythonを使用
これを編集する必要があります。これは簡単なサンプルコードです。
import pycurl
import urllib
import sys
from StringIO import StringIO
c = pycurl.Curl()
html = StringIO()
c.setopt(pycurl.WRITEFUNCTION, html.write)
c.setopt(c.VERBOSE, 0)
def send_req(url):
field = urllib.urlencode(payload)
c.setopt(c.URL, url)
c.setopt(c.VERBOSE, 0)
c.perform()
if "successful non-login-page string to search for" in html.getvalue():
html = StringIO() # Reset
return True
return False
with open("dir-or-file-list.txt") as f:
for line in f:
if send_req("http://haxlogin.page/" + line + ") == True:
print "[!] Found a valid page: %s" % line
これがPythonで機能するかどうかを確認する時間はありません。これは、Pythonで機能させるための一般的な例にすぎないため、編集する必要があります。
2。Burp Suite Proの使用
Burp Intruderを使用すると、攻撃ダイアログでfilter
を使用できます。 2xxが一意のコード/文字列として「Unauthorized」を返すことを想像してください。次のようにして、 "Unauthorized"を検索から除外します。
フィルター:
。OWASP Dirbusterの使用
Options -> Advanced Options -> Scan Options -> Fail Case String -> Enter a string that appears only on the login page
留意してください:多くのアプリケーションは、何かが正常にポストされた後に302リダイレクトを実行します。
これは必ずしも302リダイレクトが悪い、または何も見つからなかったことを意味するわけではありません。使用する curl -L
リダイレクトをたどり、それがどこにあるかを確認します。
また、リダイレクトされたページのコンテンツをチェックして、見逃さないようにすることもできます。
サーバーが200でリダイレクトしている場合は、おそらく meta refresh を実行しています。 HTTP 200応答の本文を確認し、次のようなものを探す必要があります。
<head>
<meta http-equiv="refresh" content="0;URL='https://www.example.com/login'" />
</head>
アプリケーションが実際にリダイレクトしているときに200を返している場合は、応答の内容を解析する必要があります。 URLを解析するか、それでも必要な情報がわからない場合は、ログインフィールドのコンテンツを解析できます。