MCPcopy Create free account
hub / github.com/GCMiner/GCMiner / test

Method test

src/main/java/Preprocess/TEST.java:38–446  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

36 private static List<HashMap> resultList = new LinkedList<>();
37
38 public static void test() {
39
40 int i = 1;
41 Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password"));
42 Session session = driver.session();
43
44 String jsonPath = "./src/main/resources";
45
46 try {
47
48
49 //Map<Long, Node> nodesMap = new HashMap<>();
50 //Map<Long, Node> nodesMap = new LinkedHashMap<>(); //HashMap存入数据与取出数据顺序不一致
51
52
53 String cmdSql1 = "match (source:Method {SIGNATURE:'<java.util.PriorityQueue: void readObject(java.io.ObjectInputStream)>'})\n" +
54 "match (sink:Method {SIGNATURE:'<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>'})\n" +
55 "call apoc.algo.allSimplePaths(sink, source, '<CALL|ALIAS', 10) yield path \n" +
56 "return path limit 50";
57
58 //CC:4.0 CC2,4,8
59 //CC:3.1 CC5,6,7,9
60 //CC:3.2.1 CC10
61
62 String cmdSqlcc2 = "//cc2\n" +
63 "match path = (m1:Method {SIGNATURE:'<java.util.PriorityQueue: void readObject(java.io.ObjectInputStream)>'})-[:CALL ]->(m2:Method {NAME:'heapify'})-[:CALL ]->(m3)-[:CALL]->(m4:Method {NAME:'siftDownUsingComparator'})-[:CALL]->(m5)-[:ALIAS*]-(m6 )-[:CALL]->(m7)-[:ALIAS*]-(m8:Method)-[:CALL]->(m9:Method {IS_SINK:true}) return path";
64
65 String cmdSqlcc5 = "// cc5\n" +
66 "match path=(m1:Method {SIGNATURE:'<javax.management.BadAttributeValueExpException: void readObject(java.io.ObjectInputStream)>'})-[:CALL]->(m2:Method {NAME:'toString'})-[:ALIAS*]-(m3:Method {SIGNATURE:'<org.apache.commons.collections.keyvalue.TiedMapEntry: java.lang.String toString()>'})-[:CALL]->(m4:Method {NAME:'getValue'})-[:CALL]->(m5:Method {NAME:'get'})-[:ALIAS*1..2]-(m6:Method {NAME:'get'})-[:CALL]->(m7:Method {NAME:'transform'})-[:ALIAS*]-(m8:Method)-[:CALL]->(m9:Method {IS_SINK:true}) return path";
67
68 String cmdSqlcc6 = "//cc6cc10\n" +
69 "match (source:Method {SIGNATURE:'<java.util.HashSet: void readObject(java.io.ObjectInputStream)>'})-[:CALL]->(m2:Method) where (m2.NAME in ['defaultReadObject','readFloat','readObject'])=false\n" +
70 "match (sink:Method {IS_SINK:true,NAME:'invoke'})<-[:CALL]-(m1:Method {NAME:'transform'})\n" +
71 "call apoc.algo.allSimplePaths(sink, source, '<CALL|ALIAS', 10) yield path\n" +
72 "return *";
73
74 String cmdSqlcc7 ="//cc7\n" +
75 "match path=(m1:Method {SIGNATURE:'<java.util.Hashtable: void readObject(java.io.ObjectInputStream)>'})-[:CALL ]->(m2:Method {NAME:'reconstitutionPut'})-[:CALL ]->(m3:Method {NAME:'equals'})-[:ALIAS*..2]-(m4:Method)-[:CALL ]->(m5:Method {NAME:'get'})-[:ALIAS*1..2]-(m6:Method {NAME:'get'})-[:CALL]->(m7:Method {NAME:'transform'})-[:ALIAS*]-(m8:Method)-[:CALL]->(m9:Method {IS_SINK:true}) return path";
76
77 String cmdSqlcc8 = "//cc8\n" +
78 "match path=(m1:Method {SIGNATURE:'<org.apache.commons.collections4.bag.TreeBag: void readObject(java.io.ObjectInputStream)>'})-[:CALL ]->(m2:Method {NAME:'doReadObject'})-[:CALL ]->(m3:Method {NAME:'put'})-[:ALIAS*1..4]-(m4:Method)-[:CALL ]->(m5:Method {NAME:'compare'})-[:CALL ]->(m6:Method)-[:ALIAS*]-(m7:Method {SIGNATURE:'<org.apache.commons.collections4.comparators.TransformingComparator: int compare(java.lang.Object,java.lang.Object)>'})-[:CALL ]->(m8)-[:ALIAS*]-(m9:Method)-[:CALL*..5 ]->(m10:Method {IS_SINK:true}) return path";
79
80 String cmdSqlcc9="//cc9\n" +
81 "match path=(m1:Method {SIGNATURE:'<java.util.Hashtable: void readObject(java.io.ObjectInputStream)>'})-[:CALL]->(m2:Method {NAME:'reconstitutionPut'})-[:CALL]->(m3:Method {NAME:'hashCode'})-[:ALIAS*]-(m4:Method {SIGNATURE:'<org.apache.commons.collections.keyvalue.TiedMapEntry: int hashCode()>'})-[:CALL]->(m5:Method {NAME:'getValue'})-[:CALL]->(m6:Method {NAME:'get'})-[:ALIAS*1..2]-(m7:Method {NAME:'get'})-[:CALL]->(m8:Method {NAME:'transform'})-[:ALIAS*]-(m9:Method)-[:CALL]->(m10:Method {IS_SINK:true}) return path";
82 String cmdSql =
83 "match (source:Method {NAME:'readObject'})\n" +
84 "match (sink:Method {SIGNATURE:'<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>'})\n" +
85 "call apoc.algo.allSimplePaths(sink, source, '<CALL|ALIAS', 10) yield path \n" +
86 "return path limit 2";
87
88 // XStream
89
90 //CVE-2021-21346
91 String xstream ="//xstream 2021-1\n" +
92 "match p1 = (m3:Method {CLASSNAME:'com.sun.org.apache.xpath.internal.objects.XString'})-[:ALIAS*..3]-(m2:Method {NAME:'equals'})<-[:CALL]-(source:Method {NAME:'compareTo',CLASSNAME:'javax.naming.ldap.Rdn$RdnEntry'})\n" +
93 "match p2 = (sink:Method {IS_SINK:true,NAME:'invoke'})<-[:CALL]-(m1:Method {CLASSNAME:'sun.swing.SwingLazyValue',NAME:'createValue'}) \n" +
94 "call apoc.algo.allSimplePaths(m1, m3, '<CALL|ALIAS', 12) yield path\n" +
95 "return apoc.path.combine(apoc.path.combine(p2,path),p1) limit 20";

Callers 1

mainMethod · 0.95

Calls 8

returnMapMethod · 0.95
clearEdgeMethod · 0.95
createJsonFileMethod · 0.95
toJsonMethod · 0.95
createJsonFile1Method · 0.95
toJson1Method · 0.95
toStringMethod · 0.80
getClassMethod · 0.80

Tested by

no test coverage detected