使用Bambda优化HTTP视角分析
当您打开HTTP请求或响应时,会本能地寻找什么?可疑参数名?CORS头部?还是请求来源的线索?每个HTTP报文对不同观察者可能讲述不同故事,而现代网站每天发送数千请求,关键细节极易被忽视。
Burp Suite最新支持的自定义列功能允许用户个性化展示HTTP请求要素。例如以下解析GraphQL操作的列实现:
String paramName = "operationName";
if(requestResponse.request().hasParameter(paramName, HttpParameterType.JSON)) {
return requestResponse.request().parameterValue(paramName, HttpParameterType.JSON);
}
String query = requestResponse.request().parameterValue("query", HttpParameterType.JSON);
if(query.contains("{") || query.contains("(")) {
var queryParts = query.split("\\{|\\(");
return queryParts[0];
}
return "";
这些功能背后是称为"bambda"的代码片段。我们分享研究团队创建的实用列示例(注意空指针异常已由系统自动处理):
请求来源页面
return requestResponse.request().headerValue("Referer");
响应服务器类型
return requestResponse.response().headerValue("Server");
IP归属查询
String ipAddress = requestResponse.httpService().ipAddress();
return java.net.InetAddress.getByName(ipAddress).getCanonicalHostName();
会话Cookie解码
var payload = parts[1];
return utilities().base64Utils().decode(payload, Base64DecodingOptions.URL);
SameSite禁用检测
Pattern pattern = Pattern.compile("^([^=]+).+; SameSite=None", Pattern.CASE_INSENSITIVE);
危险CSP检测
String[] directivesToCheck = new String[]{"unsafe-inline", "unsafe-eval"};
通过自定义列排序可优先处理高危请求,例如统计参数数量:
return requestResponse.request().parameters().size();
或检测环境变量泄漏:
String lookFor = "HTTP_";
return utilities().byteUtils().countMatches(..., lookFor.getBytes());
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码