CSRF
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
漏洞危害
修改用户信息,如用户的头像、发货地址等。更有甚者,可能执行恶意操作,比如修 改密码、添加/删除好友或者点赞/转发/评论/私信。
挖掘思路
- 后台功能模块:管理后台、用户中心、添加用户等
- 被引用的核心文件里面有没有验证Token和referer的相关代码
- 没带Token:可以直接请求这个页面
- 没带referer:返回相同的数据
环境搭建
我们先来写几个简单的页面,用来测试csrf。
conn.php:
<?php
$conn = mysqli_connect("localhost","root","root","admin");
mysqli_query($conn,"SET NAMES GB2312");
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<form action="login.php" method="post">
用户名:<input type="text" name="username"><br><br>
密 码:<input type="password" name="password"><br><br>
<input type="submit"</