> 文章列表 > pikachu靶场-csrf

pikachu靶场-csrf

pikachu靶场-csrf

 csrf

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

csrf与xss的区别如下

xss:中文名称跨站脚本攻击,通常出现在搜索框、留言板、评论区等地方

分类:反射性、存储型、DOM 型

攻击方式:构造恶意链接,诱骗用户点击盗取用户的 cookie 信息

漏洞危害:xss 蠕虫、会话、流量劫持、网站挂马、盗取 cookie

防护方法:设置黑名单和白名单、对用户输入进行过滤、入参字符过滤、出参字符转义、设置 httponly

csrf 漏洞:中文名称跨站请求伪造,攻击者冒充用户身份执行用户操作

检测漏洞:抓取一个请求包,去掉 referer 字段进行访问,如果访问有效则存在漏洞

危害:盗用用户身份、执行用户操作,修改信息

防护方法:

1、设置 referer 字段;但是并不是所有服务器在任何时候都可以接受 referer 字段,所以这个方法存在一定的局限性

2、设置验证码;在用户操作的过程中设置身份确认的验证码,该方法会很有用,不过验证码频繁的话会影响用户体验

3、设置 token 值,在用户请求中设置一个随机没有规律的 token 值可以有效的防止攻击者利用漏洞攻击

从上我们可以总结出:

xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户 cookie 进行攻击、不需要用户进行登录、xss 除了利用 cookie 还可以篡改网页等

csrf:跨站请求伪造、无法获取用户的 cookie 而是直接冒充用户、需要用户登录后进行操作

1.CSRF(get)

先登录boke的账号,密码为123456

 

登录后的界面,我们修改个人信息

 

点击submit 提交

可以看到信息被修改,他给的提示为get,我们抓包看看

 

抓包发现他对csrf_get_edit.php发送了一个get请求,后面跟着修改参数,那么我们可以对参数进行修改后拼接到url中

http://xxxxxx:xxxx/vul/csrf/csrfget/csrf_get_edit.php?sex=male&phonenum=19555517777&add=China&email=123%40qq.com&submit=submit

现在模拟攻击,让一个已经登录过boke账号,且浏览器中的cookie未过期的用户点击它,这就要钓鱼了

 这么长一串的链接,还带着参数怎么能让人放松警惕呢,于是就可以利用短链接生成器进行伪装

就可以得到一串xxxxx.xxx的链接了

所以说未知的链接不要点 

2.CSRF(post)

同样登录kobe账号,密码123456

进行抓包

 

发现它对信息的修改从get请求改为了post请求

所以说没法对内容进行拼接得到url后让受害者点击链接,我们要制作一个表单,相当于让用户点击提交内容,只不过这个内容是我们定的

<html><script>                                                                                                       <!-- 这个script是用来自动提交表单的 -->window.onload = function() {document.getElementById("submit").click();}</script>              <body><form action="http://xxxxxx/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">    <input type="hidden" name="sex" value="girl" /><input type="hidden" name="phonenum" value="123456789" /><input type="hidden" name="add" value="usa" /><input type="hidden" name="email" value="caker@pikachu.com" /><input type="hidden" name="submit" value="submit" /><input id="submit" type="submit" value="Submit request" style="display:none"/>                    <!-- style设置为display:none起到隐藏submit按钮的作用 --></form></body>
</html> 

将这段代码中的xxx换为自己靶场的地址,后打开html文件,发现内容被篡改成以下

 利用成功

CSRF 3.Token

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

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

我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求

我们抓包看看

可以看到新增了一个参数 token进行验证,这个token没法被猜测,也不在html页面中能得到,所以无法利用该漏洞(所以可以试着去掉token后的值再发包,有些验证不严格的网站可能导致又能利用csrf,pikachu不行)

防护措施

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

济南医保科普网