漏洞原理
-
举例
假设有一个服务器的网站添加管理员信息是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由于位数过多,很难绕过