csrf 跨站点请求伪造

漏洞原理

  • 举例

假设有一个服务器的网站添加管理员信息是www.a.com/adduser.php?username=x&password=y,在这个服务器登录的情况下,假设点进去一个网站,网站写的内容是<script src="http://www.a.com/adduser.php?username=x&password=y"></script>,那么这个网站的管理员点进去之后,自己服务器会自动添加一个管理员信息
  • 如何实现

# 网站在用户修改个人信息时没有过多的校验,导致这个请求容易被伪造
​
# 用户点击了攻击者发的链接
​
# 用户刚好登录在伪造的这个网站上面
​
    用户输入账号信息请求登录A网站。A网站验证用户信息,通过验证后返回给用户一个cookie在未退出网站A之前,在同一浏览器中请求了黑客构造的恶意网站B,B网站收到用户请求后返回攻击性代码,构造访问A网站的语句浏览器收到攻击性代码后,在用户不知情的情况下携带cookie信息请求了A网站。此时A网站不知道这是由B发起的。那么这时黑客就可以进行一下骚操作了!
​
两个条件:a 用户访问站点A并产生了cookie
​
b 用户没有退出A同时访问了B
  • 与xss的区别

xss是用户点击了有恶意代码的网站,用户的cookie被攻击者获得,攻击者获得用户的权限,可以修改信息
​
csrf是借用用户的权限,并没有得到用户的cookie,是用户点击修改自己密码的网站进而完成攻击
​
最大的区别:csrf没有盗取cookie,而是直接利用,xss是盗取了cookie

攻击过程

# 将链接的密码修改
​
# 将长链接做成短链接(为了使用户相信)以下是将长url变成短url的方法:
    新浪:http://sina.lt/
    百度:http://dwz.cn/
    0x3:http://0x3.me/
    MRW:http://mrw.so/
    (url是ip地址的不能进行转换)
    
# post情况下如何进行csrf
与xss漏洞的手法相类似,先在自己的服务器中伪造一个自动提交的表单post.html,让用户访问这个post.html就可以啦(可以将这个index.html的url缩短然后让用户登录)
​
post html
<form method="post" action="http://127.0.0.1:80"/pikachu/vul/csrf/csrf_get_edit.php />  //指定目标网站的提交方式为post
<input type='hidden' name="sex" value="boy"/>//将sex的值修改为boy
<input type='hidden' name="phonenum" value="18626545453"/>//将电话改为18626545453
<input type='hidden' name="add" value="HangZhou"/>//将地址修改为杭州
<input type='hidden' name="email" value="Hacker@pikachu.com"/>//将邮箱地址改为Hacker@pikachu.com
<input type='hidden' name="submit" value="submit"/>
当用户在登录情况下,访问黑客站点http://hackerurl/post.html,用户的上面的信息就会被修改
​

防御 方法

1,当用户发送重要的请求时需要输入原始密码
2,设置随机Token(最有效)
3,检验referer来源,请求时判断请求链接是否为管理员正在使用的页面
4,设置验证码
5,限制请求方式只能为post
  • Token

与同源策略相同,同源策略是查看referer是不是来自同一个网址,同一个网址就是同源,不同网址就是非同源。Token是抓包的时候会抓到Taken,每一次修改密码的时候Taken就会不同,如果伪造的站点Taken相同时,则修改密码则会失败。
​
referer不同可以通过修改来进行绕过,但是Token由于位数过多,很难绕过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值