pikachu--CSRF--GET
Posted tangjf10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pikachu--CSRF--GET相关的知识,希望对你有一定的参考价值。
CSRF是Cross Site Request Forgery的简称,中文名为跨域请求伪造。在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,这个攻击也就完成了。所以CSRF攻击也被称为“one click”攻击。
举一个例子: 张三想要在购物网站上修改购物地址,这个操作是张三通过客户端浏览器向服务端发送请求。这个请求里面包含了张三的新的收货地址,如果是通过GET提交的,那么会以URL传参的方式的方式将新的地址提交给服务端。 如果这时候攻击者想要修改张三的信息怎么办?攻击者是没有张三的身份的,因此他会构造一个URL里面含有修改内容的URL,诱骗张三去点击。如果张三这时已经登录在该网站上,同时点击了该链接,这样攻击就成功了。 所以我们可以看到CSRF有一个关键点,就是张三需要是登录状态下点击该图片。
CSRF和XSS有什么区别呢? CSRF是借助用户的权限完成攻击,攻击者并没有拿到用户的权限。目标构造修改个人信息的链接,利用用户登录状态下点击此链接达到修改信息的目的。 XSS直接盗取了用户的权限,然后实施破坏。攻击者利用XSS盗取了目标的Cookie,登录用户的后台,再修改相关信息。
如何确认一个目标网站是否有CSRF漏洞? 对目标站点增删改查的地方进行标记,并观察逻辑,判断请求是否可以伪造。比如修改管理员账号时,不需要验证旧密码;比如修改敏感信息不需要token验证。 确认凭证的有效期。虽然退出或关闭了览器,但Cookie仍然有效,或者Session没有及时过期,导致CSRF攻击变得简单。
Pikachu平台里有3个示例,下面我们逐一测试,来加深对CSRF概念的理解。
一、CSRF(get) 我们看一下提示,登录账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456。我们用vince登录进去:
那么这里我们假设构造这样的URL: localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=hacker&email=lucy@pikachu.com&submit=submit 以上这些信息我们可以使用抓包工具(如:BurpSuite)来进行分析和构造,过程基本就是先正常的修改一次,同时抓包后看一下如何构造的GET请求URL,然后把要伪造的信息放到相关位置即可。这里我们就具体介绍该工具了。
这个URL我们放到同一浏览器的新标签页中执行,就会发现页面已被修改:
从源代码csrf_get_edit.php中可以看出 这里使用了函数connect()来验证用户是否登录过;
函数connect()可以在mysql.inc.php中可以看到对应源码,我们可以看出是用数据库验证的方式:
这里更加细致的就不再张开去介绍了。前面我们伪造的GET URL,用户点击后,其实就是用用户当前身份去修改了相关信息。
以上是关于pikachu--CSRF--GET的主要内容,如果未能解决你的问题,请参考以下文章