Burp Suite-使用本地文件作为响应内容
很多抓包文件都有使用本地文件作为响应内容的功能,如fiddler的AutoResponser,而Buip Suite却没有,这个功能对在开发js的逆向的时候,有很大的用处,很多js都是有压缩与混淆的,很难直接在浏览器中阅读,如果做了修改又很难进行保存,所以,有此功能,我们就可以在我们熟悉的idea工具中进行阅读与开发,每次修改完,马上还能验证效果,逆向的效率直线提升。
burp suite原生没有带换个功能,但是有这个功能的插件:http mock,下面我们就来介绍这个http mock。
安装
在buip suitede的BApp市场,Extender->BApp Store->输入http mock进行搜索,然后点击下面的install,既开始安装

BApp插件安装的目录一般都在下面部分:
C:\Users\系统用户\AppData\Roaming\BurpSuite\bapps
在Extensions的Details页面下,既能看到对应的jar包

使用
代开设置了burp suite代理的浏览器,并访问你们逆向的地址,在proxy->HTTP history页面下,会有对应的访问历史,选择你的地址,并选择Mock HTTP response(URL wihtout query),然后就可以进入到http mock的修改respone页面

这边主要介绍两个选项Basic与File Contents
-
Basic:直接在Response Editor中修改返回的内容,并保存后,刷新页面返回的内容即使我们修改后的内容,简单的逆向绕过使用这个方法即可,如果是很复杂的功能,在response editor中修改肯定没有我们的idea中方便,在idea中修改完又要复制过来,操作步骤就很繁琐了;
-
File Contents:支持外部的文件作为response返回,在使用中,需要把response editor的内容清空,然后在导入对应的文件,切记,response ediotr仅保存一个文件的路径;

功能扩展
由于response回来的内容有响应头与js文件,如果都在以为文件里面在idea中会报错的,所以我们需要吧响应的内容分成两个文件,一个是响应头,一个是js文件,但是http-mock插件并不支持,所以,只能我们自己扩展了。
- 首先我们需要下载对应的源码
插件的官网
github.com/PortSwigger...,如果要下面对应的代码执行下面的代码,下载的比较快
bash
git clone https://github.moeyy.xyz/https://github.com/PortSwigger/http-mock.git
-
另外我们需要熟悉java的开发环境,这边主要使用maven进行打包管理
-
修改代码内容,主要修改的类net.logicaltrust.model.MockEntryTypeEnum
ini@Override public byte[] generateResponse(byte[] entryInput, byte[] incomingRequest, IHttpService incomingHttpService) { IExtensionHelpers helpers = BurpExtender.getCallbacks().getHelpers(); String inputStr = helpers.bytesToString(entryInput); //如果是多行 String[] split = inputStr.split("\n"); BurpExtender.getLogger().debugForce("line num:" + split.length); return mergeFilesToByteArray(split); } public byte[] mergeFilesToByteArray(String[] filePaths) { List<byte[]> filesContent = new ArrayList<>(); for (String filePath : filePaths) { try { if(filePath!=null&&!filePath.isEmpty()){ filePath = filePath.trim(); BurpExtender.getLogger().debugForce("filePath:" + filePath); Matcher matcher = quoteParser.matcher(filePath); if (matcher.matches()) { String path = matcher.group(2); BurpExtender.getLogger().debugForce("path:" + path); filesContent.add(Files.readAllBytes(Paths.get(path))); } } } catch (IOException e) { e.printStackTrace(); // 处理异常,例如返回null或抛出新的异常 return null; // 或者抛出异常,例如 throw new RuntimeException("Error reading file: " + filePath, e); } } // 合并所有字节数组 int totalLength = 0; for (byte[] bytes : filesContent) { totalLength += bytes.length; } byte[] mergedArray = new byte[totalLength]; int currentIndex = 0; for (byte[] bytes : filesContent) { System.arraycopy(bytes, 0, mergedArray, currentIndex, bytes.length); currentIndex += bytes.length; } return mergedArray; }
-
修改完后,使用maven进行打包:
mvn clean install -f pom.xml
- 打包的路径下,BurpHttpMock-1.1.7-jar-with-dependencies.jar就是我们需要替换的文件

-
在安装章节中有描述插件的具体路径,我们把他替换掉
-
加载我们的包,到Extender->Exentions页面,去掉Extension loader即卸载,然后再打上勾,重新加载,即使用上我们的jar包了

- 然后可以在response editor中输入多个文件,具体如下:
