Trick for bypass waf

待到秋来九月八,我花开后百花杀。 冲天香阵透长安,满城尽带黄金甲。

0x00 介绍

在分析webLogic的过程中发现了一个小小的trick,技术含量不高就分享出来说不定遇到了一些waf可以绕过呢?

0x01 代码

weblogic.servlet.internal.HttpConnectionHandler#dispatch中有如下代码

1
2
3
4
5
6
7
8
9
10
11
this.response.getServletOutputStream().setWriteEnabled(!this.request.getInputHelper().getRequestParser().isMethodHead());
this.incrementMessagesReceivedCount();
this.incrementBytesReceivedCount((long)(this.headerEndPos + 1));
if (this.request.getInputHelper().getRequestParser().isMethodTrace() && !this.httpServer.isHttpTraceSupportEnabled()) {
this.sendError(this.response, 501);
return;
}

if (!this.request.getInputHelper().getRequestParser().getProtocol().toUpperCase().startsWith("HTTP")) {
this.sendError(this.response, 505);
}

可以判断对HTTP请求的判断个人感觉有点草率。将协议转换成大写之后只判断前面是不是以HTTP开头。

0X02 poc

下面简简单单的构造一下请求

1
2
3
GET /index.jsp httPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahack
Host: 127.0.0.1:7001
Connection: close

0x03 总结

中间件会存在特别多的特性,遇到了waf看看源代码说不定就bypass了呢?