Skip to content

Commit cc41c68

Browse files
author
‘niuerzhuang’
committed
fix bug: parseCustomModel RequestWrapper.
1 parent 22db4d7 commit cc41c68

File tree

2 files changed

+47
-56
lines changed

2 files changed

+47
-56
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/EngineManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ public static void cleanThreadState() {
136136
EngineManager.TAINT_HASH_CODES.remove();
137137
EngineManager.TAINT_RANGES_POOL.remove();
138138
EngineManager.SCOPE_TRACKER.remove();
139+
EngineManager.ENTER_REPLAY_ENTRYPOINT.remove();
139140
FallbackSwitch.clearHeavyHookFallback();
140141
EngineManager.getFallbackManager().getHookRateLimiter().remove();
141142
ContextManager.getCONTEXT().remove();

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/graphy/GraphBuilder.java

Lines changed: 46 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,7 @@ public class GraphBuilder {
2626
public static void buildAndReport(Object request, Object response) {
2727
List<GraphNode> nodeList = build();
2828
String report = convertToReport(nodeList, request, response);
29-
if (null == report){
30-
EngineManager.ENTER_REPLAY_ENTRYPOINT.remove();
31-
return;
32-
}
3329
ThreadPools.sendPriorityReport(ApiPath.REPORT_UPLOAD, report);
34-
EngineManager.ENTER_REPLAY_ENTRYPOINT.remove();
3530
}
3631

3732
/**
@@ -79,66 +74,61 @@ public static List<GraphNode> build() {
7974
event.sourceTypes
8075
)
8176
);
82-
}catch (Exception e){
77+
} catch (Exception e) {
8378
DongTaiLog.debug(e);
8479
}
8580
}
8681
return nodeList;
8782
}
8883

8984
public static String convertToReport(List<GraphNode> nodeList, Object request, Object response) {
90-
try {
91-
Map<String, Object> requestMeta = EngineManager.REQUEST_CONTEXT.get();
92-
Map<String, Object> responseMeta = response == null ? null : HttpImpl.getResponseMeta(response);
93-
JSONObject report = new JSONObject();
94-
JSONObject detail = new JSONObject();
95-
JSONArray methodPool = new JSONArray();
96-
97-
report.put(ReportKey.TYPE, ReportType.VULN_SAAS_POOL);
98-
report.put(ReportKey.VERSION, "v2");
99-
report.put(ReportKey.DETAIL, detail);
100-
101-
detail.put(ReportKey.AGENT_ID, EngineManager.getAgentId());
102-
detail.put(ReportKey.PROTOCOL, requestMeta.getOrDefault("protocol", "unknown"));
103-
detail.put(ReportKey.SCHEME, requestMeta.getOrDefault("scheme", ""));
104-
detail.put(ReportKey.METHOD, requestMeta.getOrDefault("method", ""));
105-
detail.put(ReportKey.SECURE, requestMeta.getOrDefault("secure", ""));
106-
String requestURL = requestMeta.getOrDefault("requestURL", "").toString();
107-
if(null == requestURL){
108-
return null;
109-
}
110-
detail.put(ReportKey.URL, requestURL);
111-
String requestURI = requestMeta.getOrDefault("requestURI", "").toString();
112-
if (null == requestURI){
113-
return null;
114-
}
115-
detail.put(ReportKey.URI, requestURI);
116-
setURL(requestURL);
117-
setURI(requestURI);
118-
detail.put(ReportKey.CLIENT_IP, requestMeta.getOrDefault("remoteAddr", ""));
119-
detail.put(ReportKey.QUERY_STRING, requestMeta.getOrDefault("queryString", ""));
120-
detail.put(ReportKey.REQ_HEADER,
121-
AbstractNormalVulScan.getEncodedHeader((Map<String, String>) requestMeta.getOrDefault("headers", new HashMap<String, String>())));
122-
// 设置请求体
123-
detail.put(ReportKey.REQ_BODY, request == null ? "" : HttpImpl.getPostBody(request));
124-
detail.put(ReportKey.RES_HEADER, responseMeta == null ? ""
125-
: Base64Encoder.encodeBase64String(responseMeta.getOrDefault("headers", "").toString().getBytes())
126-
.replaceAll("\n", ""));
127-
detail.put(ReportKey.RES_BODY, responseMeta == null ? "" : Base64Encoder.encodeBase64String(
128-
getResponseBody(responseMeta)));
129-
detail.put(ReportKey.CONTEXT_PATH, requestMeta.getOrDefault("contextPath", ""));
130-
detail.put(ReportKey.REPLAY_REQUEST, requestMeta.getOrDefault("replay-request", false));
131-
132-
detail.put(ReportKey.METHOD_POOL, methodPool);
133-
134-
for (GraphNode node : nodeList) {
135-
methodPool.put(node.toJson());
136-
}
137-
138-
return report.toString();
139-
} catch (Exception e){
85+
Map<String, Object> requestMeta = EngineManager.REQUEST_CONTEXT.get();
86+
Map<String, Object> responseMeta = response == null ? null : HttpImpl.getResponseMeta(response);
87+
JSONObject report = new JSONObject();
88+
JSONObject detail = new JSONObject();
89+
JSONArray methodPool = new JSONArray();
90+
91+
report.put(ReportKey.TYPE, ReportType.VULN_SAAS_POOL);
92+
report.put(ReportKey.VERSION, "v2");
93+
report.put(ReportKey.DETAIL, detail);
94+
95+
detail.put(ReportKey.AGENT_ID, EngineManager.getAgentId());
96+
detail.put(ReportKey.PROTOCOL, requestMeta.getOrDefault("protocol", "unknown"));
97+
detail.put(ReportKey.SCHEME, requestMeta.getOrDefault("scheme", ""));
98+
detail.put(ReportKey.METHOD, requestMeta.getOrDefault("method", ""));
99+
detail.put(ReportKey.SECURE, requestMeta.getOrDefault("secure", ""));
100+
String requestURL = requestMeta.getOrDefault("requestURL", "").toString();
101+
if (null == requestURL) {
102+
return null;
103+
}
104+
detail.put(ReportKey.URL, requestURL);
105+
String requestURI = requestMeta.getOrDefault("requestURI", "").toString();
106+
if (null == requestURI) {
140107
return null;
141108
}
109+
detail.put(ReportKey.URI, requestURI);
110+
setURL(requestURL);
111+
setURI(requestURI);
112+
detail.put(ReportKey.CLIENT_IP, requestMeta.getOrDefault("remoteAddr", ""));
113+
detail.put(ReportKey.QUERY_STRING, requestMeta.getOrDefault("queryString", ""));
114+
detail.put(ReportKey.REQ_HEADER,
115+
AbstractNormalVulScan.getEncodedHeader((Map<String, String>) requestMeta.getOrDefault("headers", new HashMap<String, String>())));
116+
// 设置请求体
117+
detail.put(ReportKey.REQ_BODY, request == null ? "" : HttpImpl.getPostBody(request));
118+
detail.put(ReportKey.RES_HEADER, responseMeta == null ? ""
119+
: Base64Encoder.encodeBase64String(responseMeta.getOrDefault("headers", "").toString().getBytes())
120+
.replaceAll("\n", ""));
121+
detail.put(ReportKey.RES_BODY, responseMeta == null ? "" : Base64Encoder.encodeBase64String(
122+
getResponseBody(responseMeta)));
123+
detail.put(ReportKey.CONTEXT_PATH, requestMeta.getOrDefault("contextPath", ""));
124+
detail.put(ReportKey.REPLAY_REQUEST, requestMeta.getOrDefault("replay-request", false));
125+
126+
detail.put(ReportKey.METHOD_POOL, methodPool);
127+
128+
for (GraphNode node : nodeList) {
129+
methodPool.put(node.toJson());
130+
}
131+
return report.toString();
142132
}
143133

144134
private static byte[] getResponseBody(Map<String, Object> responseMeta) {

0 commit comments

Comments
 (0)