使用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智能小助手)
公众号二维码

posted @ 2025-07-22 12:01  qife  阅读(24)  评论(0)    收藏  举报