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

访客5年前黑客文章1302
众所周知,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]黑客接单网

相关文章

为什么干流网站无法捕获 XSS 缝隙?

 二十多年来,跨站脚本(简称 XSS)缝隙一直是干流网站的心头之痛。为什么过了这么久,这些网站仍是对此类缝隙束手无策呢? 关于最近 eBay 网站曝出的跨站脚本缝隙,你有什么主意?为什么会呈现这样的漏...

LimeRAT在野外传达

几天前,Cybaze-Yoroi ZLab安全团队遇到了一类风趣的感染链,它运用多种杂乱技能,能够绕过传统安全防御机制并躲藏其payload,对方针用户形成严重威胁。 整个感染链始于一个LNK文件,运...

如何用虚拟钱银匿名注册域名

以比特币为首的P2P虚拟钱银推翻了人们对钱银的认知,也为网上生意供给了新的途径。近几年来,虚拟钱银付出以其去中心化、匿名性等特色深受欢迎,活泼在各个领域,涵盖了电商、慈悲安排、企业院校等合法组织,当然...

JSP运用过滤器避免SQL注入

 什么是SQL注入进犯?引证百度百科的解说: sql注入_百度百科: 所谓SQL注入,便是通过把SQL指令刺进到Web表单提交或输入域名或页面恳求的查询字符串,终究抵达诈骗服务器履行歹意的SQL指令。...

RFI绕过URL包含限制Getshell-黑客接单平台

为什么有今日这篇文章?原因是我在阅读Twitter时,发现关于长途文件包括RFI的一个奇淫技巧!值得记载一下,思路也很别致!由于它打破我之前认为RFI已死的观念:) 正文 RFI引出 咱们知道php最...

小白的代码审计之路

 此文由猪八戒SRC,代码审计小鲜肉“呆呆的骗子大婶”倾情贡献~欢迎勾搭! 一、 代码 审计指令注入 PHP自带的函数中供给了几个能够履行体系指令的函数,在web项目的开发中一般是不会用到的,但...