使用Python CGIHTTPServer绕过注入时的CSRF Token防御

栏目: Python · 发布时间: 5年前

内容简介:CSRF tokens是服务器生成的一串随机值,其主要作用是防止表单重复提交以及请求伪造攻击。由于该生成值具有随机性,一次性,并且是基于服务器端的前一个请求生成的,因此黑客几乎不可能伪造它。虽说无法伪造,但并不代表我们就不能绕过它。这里,不得不提及一款web渗透神器Burp Suite。在Burp上有多种配置其使用宏来绕过HTML表单上CSRF tokens的方法,例如我们可以使用Burp Active Scans,Burp Intruder,Burp Repeater,甚至Burp Proxy。还有专门

前言

CSRF tokens是服务器生成的一串随机值,其主要作用是防止表单重复提交以及请求伪造攻击。由于该生成值具有随机性,一次性,并且是基于服务器端的前一个请求生成的,因此黑客几乎不可能伪造它。

Burp Suite

虽说无法伪造,但并不代表我们就不能绕过它。这里,不得不提及一款web渗透神器Burp Suite。在Burp上有多种配置其使用宏来绕过HTML表单上CSRF tokens的方法,例如我们可以使用Burp Active Scans,Burp Intruder,Burp Repeater,甚至Burp Proxy。还有专门用于Intruder模块的Grep-Extract和pitchfork攻击类型。如果你还觉得不够,Burp完美的扩展性支持你开发自己的Burp插件。

除了Burp外,另一款神器Sqlmap也为我们提供了类似的功能。Sqlmap中有一个–csrf-token和–csrf-url参数,可用于绕过CSRF tokens。或者你也可以像我刚说的那样,配置Burp使用–proxy通过Burp运行sqlmap。

但今天我要介绍另一种绕过方法,即使用Python CGIHTTPServer。

实验环境

我的测试环境是一个简单的PHP+mysql,我可以登录并访问受限区域。我在这里上传了 PHP代码 ,你可以下载进行测试。代码可能写的并不完美,但用于测试目的应该问题不大。

CSRF tokens是随机生成的数字的SHA256哈希值,并且每个HTTP请求的哈希值都不同。

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

因此,如果不对Burp进行针对性的配置,它将无法检测到该问题的存在。

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

sqlmap也同样。

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

我使用–technique,–dbms和-p选项来加速扫描。由于这只是一个简单的基于布尔的SQLi,因此–level 1(默认值)就足够了。但是,如果凭据不正确的话,则必须将–risk设置为3才行。因为只有风险等级为3的情况下,基于布尔的SQLi才能被检测到。基于布尔的SQLi是非常危险的,因为它们可以使任何条件为真。例如当UPDATE或DELETE语句的WHERE子句存在这种注入,攻击者就可以实现更改数据库中用户密码,转储凭据等。

这里,我使用sqlmap的SQLi –csrf-token =“mytoken”选项,检测到了一个基于OR的SQLi:

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

这是一个登录验证表单,显然这里是一个SELECT语句,这意味着风险等级3没有危害。

当然,如果你有有效凭据,它还容易受到基于AND的SQLi攻击。但即使我拥有有效凭据,我也会先用另一个(有效)用户名来进行测试,先找到基于OR的SQLi。这样做可以避免账户被以外的锁定。

此外,使用sqlmap的SQLi –csrf-token =“mytoken”选项,我还检测到了一个基于AND的SQLi:

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

CGIHTTPServer

首先,我们来创建CGI脚本:

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

这个脚本需要创建在folder_whatever/cgi-bin/目录中。我们将其称为mask.py,并确保其是可执行的。创建完成后,我们从“folder_whatever”目录中运行“python -m CGIHTTPServer”。默认情况下,它将侦听8000/tcp端口。

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

你可以使用正确的密码对其进行测试:

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

以及使用一个错误密码:

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

现在,我们无需对Burp和sqlmap进行特定配置,就能轻松的检测到安全漏洞。

使用Python CGIHTTPServer绕过注入时的CSRF Token防御

使用Python CGIHTTPServer绕过注入时的CSRF Token防御


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Web Design

Head First Web Design

Ethan Watrall、Jeff Siarto / O’Reilly Media, Inc. / 2009-01-02 / USD 49.99

Want to know how to make your pages look beautiful, communicate your message effectively, guide visitors through your website with ease, and get everything approved by the accessibility and usability ......一起来看看 《Head First Web Design》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具