利用PHP解析字符串函数parse_str的特性来绕过IDS、IPS和WAF-黑客接单平台

访客5年前黑客文章1273
众所周知,PHP将查询字符串(在URL或正文中)转换为$_GET或$_POST中的相关数组。例如:/ ?foo=bar被转换为Array([foo] => "bar")。查询字符串解析进程运用下划线删去或替换参数称号中的某些字符。例如/?%20news[id%00=42被转换为Array([news_id] => 42)。假如IDS / IPS或WAF在news_id参数中有一个用于阻挠或记载非数字值的规矩,则能够经过乱用此解析进程来绕过它,例如:/news.php?%20news[id%00=42"+AND+1=0–,在PHP中,%20news[id%00中的参数称号的值将存储到$_GET["news_id"]。 PHP需要将一切参数转换为一个有用的变量名,所以当解析查询字符串时,它主要做两件事: 1.删去初始空格; 2.将一些字符转换为下划线(包含空格)。 例如: 经过简略循环,你能够运用parser_str函数发现哪个字符被删去或转换为下划线: parse_str.php运转 parse_str用于get、post和cookie。假如你的web服务器承受带有点或空格的标题称号,那么标题也会发作相似的状况。我现已履行了三次上面的循环,枚举参数称号两头的了从0到255的一切字符,成果如下: [1st]foo_bar foo[2nd]bar foo_bar[3rd] 在上述计划中,foo%20bar和foo+bar是等价的,并被解析为foo bar。 Suricata suricata是一款开源高性能的侵略检测体系,并支撑ips(侵略防护)与n *** ( *** 安全监控)形式,用来代替原有的snort侵略检测体系,彻底兼容snort规矩语法和支撑lua脚本。 关于外行来说,Suricata是一个“开源、老练、快速和强壮的 *** 要挟检测引擎”,其引擎能够实时进行侵略检测(IDS)、内联侵略防备(IPS)、 *** 安全监控(N *** )和离线pcap处理。 运用Suricata,你乃至能够界说一个查看HTTP流量的规矩。假定你界说了以下这样一个规矩: alert http any any -> $HOME_NET any ( msg: "Block SQLi"; flow:established,to_server; content: "POST"; http_method; pcre: "/news_id=[^0-9]+/Pi"; sid:1234567; ) 此规矩会查看news_id是否具有非数字值,在PHP中,能够轻松绕过乱用其查询字符串解析器,如下所示: /?news[id=1%22+AND+1=1--' /?news%5bid=1%22+AND+1=1--' /?news_id%00=1%22+AND+1=1--' 在GitHub上搜索时,我发现了有许多针对PHP的Suricata规矩能够经过替换下划线,在被查看的参数称号中增加空字节或空格来绕过。详细示例,请点此。 alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET CURRENT_EVENTS Sakura exploit kit exploit download request /view.php"; flow:established,to_server; content:"/view.php?i="; http_uri; fast_pattern:only; pcre:"//view.php?i=d&key=[0-9a-f]{32}$/U"; classtype:trojan-activity; sid:2019678; rev:2;) 正如咱们之前看到的那样,能够经过以下 *** 绕过: /view.php?i%00=1&%20key=d3b07384d113edec49eaa6238ad5ff00 说实话,改动参数方位就足够了: /view.php?key=d3b07384d113edec49eaa6238ad5ff00&i=1 WAF (ModSecurity) PHP查询字符串解析器也或许被乱用以绕过WAF规矩,幻想一下ModSecurity规矩,SecRule !ARGS:news_id "@rx ^[0-9]+$" "block"明显很简略运用相同的绕过技能。走运的是,在ModSecurity中,你能够经过正则表达式指定查询字符串参数。比方:SecRule !ARGS:/news.id/ "@rx ^[0-9]+$" "block"。 这将阻挠一切以下恳求: ⛔️/?news[id=1%22+AND+1=1--' ⛔️/?news%5bid=1%22+AND+1=1--' ⛔️/?news_id%00=1%22+AND+1=1--' PoC 让咱们用Suricata和Drupal CMS创立一个PoC,以运用CVE-2019-7600。CVE-2019-7600,该缝隙存在于很多Drupal版别中,攻击者能够运用此缝隙强制运转Drupal的服务器,并履行或许损害Drupal装置的恶意代码。依据详细装备的不同,这也很或许会危及到主机。为了简略起见,我将在两个docker容器上运转Suricata和Drupal,并测验从Suricata容器中运用Drupal。 我将激活关于Suricata的两条规矩: 1.阻挠form_id=user_register_form的自界说规矩; 2.CVE-2019-7600的 Positive Technologies Suricata规矩。 [1][2]黑客接单网

相关文章

技能共享:几种常见的JavaScript混杂和反混杂东西剖析实战

信息安全常被描述成一场军备竞赛,白帽与黑帽,浸透测验者与黑客,善与恶,本文将聚集这场永无止境决战中的一个小点。 HTML5 & JS 运用中充满着对输入进行验证/注入的问题,需求开发人员一直...

安全防备:nginx下git引发的隐私走漏问题

1   安全事情 最近阿里云服务器后台办理体系中收到一条安全提示音讯,体系装备信息走漏: http://my.domain.com/.git/config 能够被公网无认证即可拜访,请修正。...

IKEA.com本地文件包括缝隙之PDF解析的奇妙使用

布景 本地文件包括(LFI)缝隙是一种危害性较大的缝隙类型。一旦呈现进犯者将或许运用其,读取文件源码或灵敏信息,包括歹意文件,履行恣意代码,乃至操控服务器等。大多数LFI进犯都是由动态加载图画或其他文...

MySQL联合注入之绕过安全狗到GetShell

发现网上公开过安全狗的办法少之又少,并且根本都是给个大约点就完毕,本文章是将整个进程记录了一遍,因为一开始我也没想到我能成功的绕过去,大约进程是这样:Mysql根底有必要要有–>定位—>f...

恣意用户暗码重置(四):重置凭据未校验

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

对DOTNET(.NET)中的歹意长途拜访进程进行剖析(下)

上一篇说到代码会有许多重复,由于它在每个if句子(共有五个if句子,会在下篇讲到)中都会调用一个函数。但是,细节却略有不同,其间给定的办法称号和函数的参数都会显现函数的内容。 第一个if句子在程序会集...