首页 » Web前端 » sql注入php绕过技巧_SQL注入若何经由进程Python CGIHTTPServer绕过CSRF tokens

sql注入php绕过技巧_SQL注入若何经由进程Python CGIHTTPServer绕过CSRF tokens

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

一、序言

在Burp上,我们可以利用多种方法来配置宏(macro),以绕过HTML表单上的CSRF tokens,这样一来,我们就可以利用Burp Active Scans、Burp Intruder、Burp Repeater,乃至也可以利用Burp Proxy进行渗透测试。
我们也可以找到专为Intruder模块设计的Grep-Extract以及pitchfork攻击类型。
当然,如果我们乐意的话,也可以开拓自己的Burp Extension。
Sqlmap上也有-csrf-token以及-csrf-url参数来搪塞类似场景,如果不该用这些命令,我们可以按照之前描述的方法来配置Burp,然后在sqlmap中通过-proxy参数与Burp合营利用。

sql注入php绕过技巧_SQL注入若何经由进程Python CGIHTTPServer绕过CSRF tokens

在本文中,我们会先容另一种办法,那便是利用python中的CGIHTTPServer来完成这一任务。

sql注入php绕过技巧_SQL注入若何经由进程Python CGIHTTPServer绕过CSRF tokens
(图片来自网络侵删)

二、实验环境

我们布局了一个非常大略的PHP/mysql环境,登录后,你可以访问某个受限区域。
你可以访问此链接获取实验所用的PHP代码,以便在其他场景做些修正或调度。
不要在意代码细节,毕竟我并不是PHP专家,只是热衷于搭建知足需求的测试环境而已。
实验环境有助于我们理解测试过程,在现实场景中探求真正目标。

实验所用的CSRF tokens为一串随机天生的SHA256散列字符串,每个HTTP要求都对应一个不同的tokens。

三、面临的问题

不经由分外配置时,Burp不会检测到这个问题。

同理,没有利用-csrf-token参数时,sqlmap也无能为力:

我利用了–technique、–dbms以及-p参数来加快扫描速率。
由于这是一个大略的基于布尔值的SQL注入(boolean-based SQLi),我们只须要利用默认的-level 1参数即可。
但我们须要将-risk设置为3,由于只有利用较高的风险数值,我们才能测试OR类型的SQL注入(OR boolean-based SQLi)场景。
OR类型的SQL注入非常危险,由于这种语句可以使任何条件的结果为真。
比如,在利用WHERE子句的UPDATE或DELETE语句中,利用这种注入办法,你很有可能会欠妥心更新数据库中所有用户的密码,或者导出用户的凭据表,而这正是你在渗透测试中该当尽力避免的结果。

在sqlmap中,我们可以利用–csrf-token=”mytoken”参数检测到OR类型的SQL注入:

由于这是一个登录验证表单,很明显会对应一条SELECT语句,这意味着利用最高的风险等级3不会带来任何风险。

当然,如果你有有效的凭据(实际渗透测试中你很难具备这个条件),此时该场景也会受AND类型的SQL注入(AND boolean-based SQLi)影响。
然而,纵然我拥有有效的凭据,我首先还是会利用另一个(有效的)用户名来探求可用的OR类型SQLi,以免欠妥心锁定账户(如果存在账户锁定机制的话)。

在sqlmap中,我们可以利用–csrf-token=”mytoken”来检测AND类型的SQL注入:

四、利用CGIHTTPServer

创建如下CGI脚本:

我们将该脚本命名为mask.py,存放在xxx/cgi-bin/目录中,同时请确保.py文件为可实行文件。
创建该文件后,我们须要在xxx目录中运行python -m CGIHTTPServer命令。
默认情形下,做事器会在8000/tcp端口上监听。

首先,利用精确的密码测试这个做事器:

然后,测试一下缺点的密码:

现在,无需分外配置,我们就可以利用Burp以及sqlmap来检测SQL注入漏洞。

这就彷佛我们添加了一个中间层,可以简化CSRF tokens给我们测试过程所带来的繁芜度,现在我们无需刻意去提交这个token信息了。

五、参考文献

[1] Sqlmap

[2] 其余我们还可以利用Mechanizer来完成类似功能,以便扫描器能够检测到相应数据中存在的差异。

[3] Burp宏

[4] 对渗透测试职员较为实用的Python代码

标签:

相关文章