Jump to content
bonucci

Sql-root

Recommended Posts

bonucci

Boas pessoal, tenho aqui uma duvida, tenho andado a fazer um teste a um site de  um amigo meu tem alojado no servidor de casa dele com a sua autorização, e no site dele ele sofria de sql injection, consegui la aceder la a conta de administração dele no qual estava encriptado para md5, entre outras bd ele tinha para lá, tinha uma bd chamada mysql, estive a examinar e numa das colunas (users)  aparecia o user e a password, até aí tudo bem,  até que fiquei a estranhar  com a encriptação da password, pois pela sua apresentaçao parecia md5, mas levava 38 caracteres em vez de 32, e no inicio apresentava um asteristico, aqui está o exemplo de como estava apresentado :

User:Password:

root:  *EDBCCD31DFC6AE2D72527F9EE1101BB89E562371

Eu ainda sou muito noob em sql database, e n faço a minima que tipo de encriptação poderá ser ela...

Alguem faz ideia?

Abraço

Share this post


Link to post
Share on other sites
IceBrain

Aí estão 40 caracteres, não 38. Isso deve ser SHA-1, digo eu.

E já agora, que eu saiba, as pass's são normalmente passadas pela função de hash na aplicação (php/asp.net/jsp/wtv) e só a hash é que é depois enviada para a DB.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
falco

Convinha pensarmos e lermos alguma coisa antes de perguntar-mos...

Sabendo que ele usa mysql podes obter na documentação oficial do mysql uma carrada de informação.

http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

Saberias que por exemplo o MySQL guarda hashs (como seria de esperar), mas que não são apenas hashs da password, mas sim as hashs guardadas num formato especial (por exemplo começa sempre por um asterisco).

Se procurasses no Google também descobririas que a MySQL sempre utilizou os seus próprios algoritmos para gerar as hashs de passwords...

Share this post


Link to post
Share on other sites
IceBrain

Ops, my bad. Não li bem, por isso não percebi que era uma tabela interna, pensei que era de uma aplicação.

Mas não deixa de ser SHA-1:

Password functions

The Server Initialization Packet and the Client Authentication Packet both have an 8-byte field, scramble_buff. The value in this field is used for password authentication.

Relevant MySQL Source Code: libmysql/password.c, see also comments at start of file. It works thus:

remember that mysql.user.Password stores SHA1(SHA1(password))

Depois a autenticação é feita usando um token:

    *  The server sends a random string (scramble) to the client

    * the client calculates:

          o stage1_hash = SHA1(password), using the password that the user has entered.

          o token = SHA1(SHA1(stage1_hash), scramble) XOR stage1_hash

    * the client sends the token to the server

    * the server calculates

          o stage1_hash' = token XOR SHA1(mysql.user.Password, scramble)

    * the server compares SHA1(stage1_hash') and mysql.user.Password

    * If they are the same, the password is okay.

http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
bonucci

Ya, já percebi, obrigado

Já tive a falar com o meu amigo, a partir daí era cracker a hash e depois aceder á base, mas mesmo assim, dependendo de como é a pass demoraria uma eternidade para crackala, a não ser por rainbow tables, mas seria preciso um enorme espaço no disco e um supercomputador lol

Thanks IceBrain ;)

Share this post


Link to post
Share on other sites
IceBrain

Nem por isso, são normalmente alguns GBs, dependendo dos caracteres que queiras (só letras, letras e números, símbolos, etc) e podem encontrar uma match em algumas horas: http://www.codinghorror.com/blog/archives/000949.html

Por isso é que se deve "salgar" as hashes, coisa que já é feita pelo Unix Crypt desde '76, não é propriamente uma técnica nova. (http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html)

Mas também não é suposto alguém conseguir aceder às hash's dessa tabela. Devem-se criar users na DB que não tenham privilégios de acesso essa DB, para que uma injecção de SQL não lhes aceda na mesma (a não ser que consigam explorar um bug no mysql).

Mas já se sabe, IANASE (I am not a security expert :cheesygrin: ).


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
apocsantos

Is there any arround here  :cheesygrin:


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
bonucci

Já agora, tens ideia de algum programa ou até script bom para cracker md5 hashes, infelizmente n tenho tempo para criar raibowtables pois seria masi vantajoso...

Share this post


Link to post
Share on other sites
IceBrain

Podes experimentar o http://www.freerainbowtables.com/ , dizem que te deixam testar até 10 hashes /dia (online), mas eu nunca o usei (encontrei-o por acaso). Também podes descarregar as tabelas para o teu PC e testar as hashes que quiseres :cheesygrin:

Acho que o herakty também falou no Caim and Abel, que eu já usei uma vez, já nem me lembro para quê.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
apocsantos

O Cain and Abel é lento. Funciona mas é lento como o caraças... é bom para meter a correr num P I pu P II, que possa estar a trabalhar de dia e de noite.

Cumprimentos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
falco

Icebrain, acho que essa documentação que estás a citar está desactualizada. O algoritmo utilizado nas versões 4, já não é mesmo utilizado nas versões 5. Aliás isso menciona o 4.0, e no 4.1 já era diferente.

O MySQL até pode ter o seu algoritmo baseado em SHA1, mas o resultado da função password, não é definitivamente uma hash sha1, por diversas razões.

Bonuci, podes utilizar cloud computing para ter meios mais interessantes para te ajudar nisso.

Mas também não é suposto alguém conseguir aceder às hash's dessa tabela. Devem-se criar users na DB que não tenham privilégios de acesso essa DB, para que uma injecção de SQL não lhes aceda na mesma (a não ser que consigam explorar um bug no mysql).

Exacto!

Aliás há mesmo até quem vá ainda mais longe, e crie vários utilizadores com permissões distintas, uns apenas com permissões de modificação de dados e outros para consultas. E tudo para a mesma aplicação.

Share this post


Link to post
Share on other sites
bonucci

Cloud Computing?Falco podes explicar melhor, n conheço esse termo ou o seu proposito, n importas de explicar?

🤔

Share this post


Link to post
Share on other sites
IceBrain

Icebrain, acho que essa documentação que estás a citar está desactualizada. O algoritmo utilizado nas versões 4, já não é mesmo utilizado nas versões 5. Aliás isso menciona o 4.0, e no 4.1 já era diferente.

O MySQL até pode ter o seu algoritmo baseado em SHA1, mas o resultado da função password, não é definitivamente uma hash sha1, por diversas razões.

Tens a certeza? Eu não, mas não vejo nada no password.c que está no Doxygen da versão 5.1:

Pelo menos o make_scrambled_password() parece ser apenas um sha1(sha1(password)).

http://dev.mysql.com/sources/doxygen/mysql-5.1/libmysql_2password_8c.html#a707eb1415dfcf596f7acbcebdfccba4

Usam uma cadeia de valores aleatórios na scramble() e check_scrambled(), mas os comentários dizem que é só quando está a ocorrer a autenticação.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
falco

Não vi o código, mas foi o que interpretei da documentação do MySQL, de alguns posts de mailing lists oficiais e de posts em alguns fóruns.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.