2017-08-06 57 views
1

要解决渗透测试发现问题,我必须检查cookie的值。如果cookie是空的或特定的网站,一切都很好。如果是另一个网站,则应清空cookie值,例如: Cookie [不应触及的其他一些文本] WASReqURL = https://an.evil.site [可能更多不应触及的文本] 在此示例中,应将https://an.evil.site替换为一个空的字符串。 使用的Web服务器是IBM HTTP Server。 我想在网络服务器配置使用的规则是:尝试使用RegEx选择cookie值(如果它不包含网站)

RequestHeader edit Cookie "^WASReqURL=<empty or my.sites.url>" "" 

我想通了,与

^((?!WASReqURL=http(s|)(%3a|:)(%2a|\/){2}(acc.|)my.site.url)[\s\S])*$ 

我可以检查cookie是否包含适当的值或没有,但也不至于帮助我去除价值。任何RegEx专家都可以指引我正确的方向?

+0

不是9.0/Apache 2.4你有没有机会? – covener

+0

IHS 8.5.5遗憾 –

回答

0

这是非常接近,但它是相当恐吓/脆弱。这与您开始使用的内容非常相似,但使用更多的Cookie分隔和捕获。

RequestHeader edit Cookie (?i)(^|.*;)\s*(?:WASReqURL=(?!https?(?:%3a|:)(?:%2f|/){2}(?:acc.)?my.site.url(?:$|\s|;))(?:[^;]+);?)(.*)$ "$1$2" 
  • 在表达
  • 首先,我们抓住任何的cookie WASReqURL之前,把它$ 1
  • 接下来,锚WSARequRL
  • 负前瞻匹配忽略情况下,只有当该值不我们的白名单域
  • 未捕获组吞下糟糕的域名
  • $ 3获取任何后续cookie

在IHS 9.0/Apache 2.4中,你可以在一个lua脚本中做到这一点,这将会更加紧迫,并且不会很快进入“正则表达式”,而且会有越来越复杂的单一表达式。

你也可以用一个非常直接的方式在C模块中做到这一点,但这是一个很大的包袱。

最简单的选择是删除不包含白名单WASReqURL(=受感染或恶意请求)的所有cookie,这样可以使整个表达式更简单,更可靠。

相关问题