【本地靶场pikachu】通关笔记(一):CSRF
简介:
关于pikachu:
Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。本人环境为VMware 15.5+phpstudy2016.
靶场链接(github):https://github.com/zhuifengshaonianhanlu/pikachu
概述:
CSRF(Cross-site request forgery),跨站请求伪造,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
基本原理:
下图简单阐述了CSRF攻击的原理:
可以看出,完成一次CSRF攻击需要以下几个条件:
1)用户C需要登录访问信任站点A,并且产生cookie;
2)C在登录A的状态下访问B提供的诱导网站。
因此,对于CSRF的防范也可以从这两个方面入手。
实验过程:
下图为实验过程中使用的测试用登录账号,根据md5反查可以得到所有账号的密码均为123456.
CSRF(GET)
登录用户allen,可以看到其住址为nba 76.
我们现在根据提示修改信息,尝试将住址修改为test,同时使用bp抓包。可以看到在bp中,修改信息以get的方式呈现出来。
此时将请求中的add值改为hack,并且引导用户点击该url,那么该用户的add值将会被对应修改。
CSRF(POST)
根据题目,这一关我们无法使用URL伪造请求,但是抓包仍然会让我们获得很多有用的信息。
步骤同上,在修改信息时抓包。
以上为我们构造表单时需要的信息,现在构造表单:
1 |
|
诱导管理员(即当前登录allen账号的浏览器)点击改网页,再次回到个人会员中心时会发现住址栏已被改为”cn“
CSRF(Token)
抓包后,发现get请求中多了Token字段
经过多次尝试,比较每次发送的数据,发现该值为后端生成的随机数。因此无法伪造URL。