该版本包含Burp的可扩展性API的一些主要增强功能。您只需要下载此版本,如果您想用自己的代码扩展Burp的功能。

我将在以后为新界面生产完整的Javadoc,但以下是新API的摘要,其次是如何使用它们的示例。如果您遇到任何使新API工作的问题,给我发邮件

现有iburpextender接口添加了两个新方法,您可以选择实现:

public void ProcessHttpMessage(字符串ToolName,boolean messageisRequest,ihttprequestresponse messageinfo);

公共无效新闻界(ISCanissue问题);

每当Burp的任何工具提出HTTP请求或收到响应时,都会调用ProcessHttpMessage方法。这实际上是现有的ProcessProxymessage方法的广义版本,可用于拦截和修改所有BURP工具的HTTP流量。

每当调用新闻界的方法bepaly下载 发现一个新的,独特的问题,可用于执行问题的定制报告或记录。

现有iburpextenderCallbacks接口添加了几种新方法,您可以调用查询和更新Burp的状态,并为参数和标题解析RAW HTTP消息。这些方法有望自称:

public ihttprequestresponse [] getProxyhistory();

public ihttprequestresponse [] getSiteMap(字符串urlprefix);

public void Restorestate(java.io.file文件)抛出异常;

public void savestate(java.io.file文件)抛出异常;

公共字符串[] [] getParameters(byte [] request)抛出异常;

公共字符串[] getheaders(byte []消息)抛出异常;

现有的iburpextendercallbacks.doactivescan方法(以前返回的void)已被修改以返回一个可用于查询和控制活性扫描队列中结果项目的对象:

public iscanqueitem doactivescan(字符串主机,int端口,布尔usehttps,byte [] request)抛出异常;

上述方法利用了三个新接口,所有接口都位于Burp包中。

新的ihttprequestresponse接口包含以下方法,可用于查询和更新HTTP请求和响应的详细信息:

公共字符串gethost();

public int getport();

公共字符串getProtocol();

公共无效Sethost(字符串主机)抛出异常;

公共void setport(int端口)抛出异常;

public void setProtocol(字符串协议)引发异常;

public byte [] getRequest()抛出异常;

public java.net.url geturl()抛出异常;

public void setRequest(byte []消息)抛出异常;

public byte [] getResponse()引发异常;

public void setResponse(byte []消息)引发异常;

公共短getstatuscode()引发异常;

请注意,仅在转发之前截获消息(即使用iburpextender.processhtpmessage)而不在仅阅读上下文(例如使用iburpextender.getProxyhistory)之前使用该方法。同样,仅在发布请求并收到响应后才可以使用与响应有关的方法。

新的iscanissue界面包含以下方法,可用于查询有关Burp Scanner发现的问题的信息:

公共字符串gethost();

public int getport();

公共字符串getProtocol();

public java.net.url geturl();

public String getIsSuename();

公共字符串getSeverity();

public string getConconfidence();

公共字符串getissuebackground();

public String getRemedivionBackground();

public String getissuedetail();

公共字符串getRemediationDetail();

public ihttprequestresponse [] gethttpmessages();

新的iscanqueitem接口包含以下方法,可用于在活动扫描队列中查询和控制项目:

public String getStatus();

public byte getPercentAgeCompolte();

public int getnumrequests();

public int getnumerrors();

public int getNuminSertionpoints();

public void cancel();

public iscanissue [] getissues();

请注意,扫描队列中的不同项目可能包含同一问题的重复版本 - 例如,如果多次扫描相同的请求。在扫描结果的主要视图中,重复的问题被合并。您可以实现bextender.newscanissue,仅获取固化后独特的,新发现的扫描问题的详细信息。

新的可扩展性API应该使用户能够为BURP的功能创建更强大的扩展。一个例子是对特定应用程序进行完全自动化的定期扫描的一种手段,以识别其包含的任何新漏洞。有多种方法可以实现这一目标,但是下面描述了一种方法。首先,在一次场合,您需要使用BURP代理手动探索应用程序的所有功能,并以通常的方式保存Burp的目标站点地图和范围配置状态。然后,在将来的情况下,您可以创建一个执行以下操作的扩展名:

  1. 使用iburpextendendercallbacks.restorestate加载保存的站点地图和范围配置。

  2. 使用iburpextenderCallbacks.getSiteMap通过指定合适的URL前缀(例如“ https://myapp.example.org/”)来检索目标应用程序的所有站点地图项目。

  3. 如果需要,请使用iburpextenderCallbacks.sendtospider查找已新添加到应用程序的任何内容,然后再次使用iburpextenderCallbacks.getSiteMap来获取更新的站点映射。

  4. 使用iburpextendercallbacks.doactivescan启动对您感兴趣的每个站点项目的主动扫描(基于URL,文件扩展名,参数等)。保留对从此方法返回的每个ISCanqueitem的引用。

  5. 如果应用程序使用身份验证,请实现iburpextender.processhtpmessage拦截BURP的所有请求,并修改扫描仪的请求,以根据需要将合适的会话信息添加到每个请求中。您可以使用iburpextenderCallbacks.makehttprequest来提出任意的其他HTTP请求来执行应用程序登录并获得有效的会话令牌,以将其添加到扫描仪的请求中。

  6. 实现iburpextender.newscanissue来检索有关每个发现的扫描问题的详细信息,并在需要时保存这些详细信息。

  7. 监视步骤4中创建的每个ISCanqueItem的进度,以确定何时完成所有启动扫描。

  8. 使用iburpextenderCallbacks.savestate在所有扫描完成后保存完整的BURP状态,以根据需要启用手动审查和报告。