MCPcopy Create free account
hub / github.com/EASY233/BpScan / ScanMain

Method ScanMain

BPScan/src/main/java/burp/scan/Log4jScan.java:28–85  ·  view source on GitHub ↗
(IHttpRequestResponse baseRequestResponse, IBurpExtenderCallbacks callbacks, IExtensionHelpers helpers, PrintWriter out)

Source from the content-addressed store, hash-verified

26 static List<String> scandone = new ArrayList<>();
27
28 public synchronized static List<Object> ScanMain(IHttpRequestResponse baseRequestResponse, IBurpExtenderCallbacks callbacks, IExtensionHelpers helpers, PrintWriter out) throws IOException, InterruptedException {
29 stdout = out;
30 Features.clear();
31 URL url = helpers.analyzeRequest(baseRequestResponse).getUrl();
32 String baseurl = url.getProtocol() + "://" + url.getAuthority();
33 if(!scandone.contains(Common.MD5(baseurl))){
34 stdout.println("Log4j Rce Scan Start!");
35 List<Object> Success = new ArrayList<>();
36 List<String> headers = helpers.analyzeRequest(baseRequestResponse).getHeaders();
37 int size = headers.size();
38 String methond = helpers.analyzeRequest(baseRequestResponse).getMethod();;
39 //对head头添加poc
40 for(int i=0;i<size;i++){
41 String header = headers.get(i).split(":")[0];
42 if(Log4jScanHeaders.contains(header)){
43 String poc = header + ": " + Getpoc(false);
44 headers.set(i,poc);
45 }
46 }
47 //无论什么请求都有可能有?参数先直接进行处理
48 headers.set(0,ParamAddPocGet(headers.get(0)));
49 if(!methond.toLowerCase().equals("post")){
50 byte[] body = helpers.buildHttpMessage(headers, null);
51 IHttpRequestResponse requestResponse = callbacks.makeHttpRequest(baseRequestResponse.getHttpService(), body);
52 String data = Common.ceyeResult();
53 for(String randString:Features){
54 if(data.contains(randString)){
55 stdout.println("Log4j Rce find! 匹配randString值为: " + randString);
56 scandone.add(Common.MD5(baseurl));
57 Success.add(requestResponse);
58 Success.add(randString);
59 return Success;
60 }
61 }
62 }else{
63 int bodyOffset = helpers.analyzeRequest(baseRequestResponse.getRequest()).getBodyOffset();
64 String resp =new String(baseRequestResponse.getRequest());
65 String respbody = resp.substring(bodyOffset);
66 byte[] request_bodys = ParamAddPocPost(respbody).getBytes();
67 byte[] body = helpers.buildHttpMessage(headers, request_bodys);
68 IHttpRequestResponse requestResponse = callbacks.makeHttpRequest(baseRequestResponse.getHttpService(), body);
69 String data = Common.ceyeResult();
70 for(String randString:Features){
71 if(data.contains(randString)){
72 stdout.println("Log4j Rce find! 匹配randString值为: " + randString);
73 scandone.add(Common.MD5(baseurl));
74 Success.add(requestResponse);
75 Success.add(randString);
76 return Success;
77 }
78 }
79 }
80 stdout.println("Log4j Rce Scan end!");
81 }else{
82 stdout.println(baseurl + " Log4j rce已扫描,跳过~");
83 }
84 return null;
85 }

Callers 1

doPassiveScanMethod · 0.95

Calls 7

MD5Method · 0.95
GetpocMethod · 0.95
ParamAddPocGetMethod · 0.95
ceyeResultMethod · 0.95
ParamAddPocPostMethod · 0.95
getUrlMethod · 0.80
getHttpServiceMethod · 0.80

Tested by

no test coverage detected