我在学习如何使用水龙头,但我发现了一个问题。
当我运行以下脚本时,我会得到一个CSRF令牌错误。显然,问题在于以卷曲方式接收的令牌与在hydra中接收的令牌不同。
按步骤排列的Step:
我已经创建了这个docker-compose.yml文件:
version: '3.8'
services:
web-dvwa:
container_name: dvwa
image: vulnerables/web-dvwa:latest
ports:
- 127.0.0.1:8001:80之后,我安装了hydra (Hydra v9.5-dev)并创建了bash脚本:
#!/bin/bash
CSRF=$(curl -s -c dvwa.cookie "127.0.0.1:8001/login.php" | awk -F 'value=' '/user_token/ {print $2}' | cut -d "'" -f2)
SESSIONID=$(grep PHPSESSID dvwa.cookie | awk -F ' ' '{print $7}')
hydra 127.0.0.1 -s 8001 \
-l admin -p password \
http-post-form "/login.php:username=^USER^&password=^PASS^&Login=Login&user_token=${CSRF}:H=Cookie\: PHPSESSID=${SESSIONID}; security=weak:S=index.php" \
-vVd这个解决方案可以工作,但是我得到了一个CSRF令牌无效错误。
错误跟踪(我认为):
如何解决这个问题?谢谢!
发布于 2022-12-22 09:16:20
"dvwa“为每个响应生成一个新的CSRF令牌。这是CSRF保护应该如何工作。就像在你的脚本中一样,你只提取了一次。因此,只有您的第一个请求从"hydra“使用正确的CSRF令牌。所有后续请求都使用过时的CSRF令牌。
你能做什么?使用其他一些工具,例如陶器。或者用Python创建自己的脚本。后者将有一个优势,那就是你将在web应用程序中学到很多关于安全性的知识。
https://security.stackexchange.com/questions/267236
复制相似问题