Saudações, terráqueos!
Veremos hoje algo que muitos de nós já passamos por, mas não soubemos o que fazer. Vou mostrar também o porquê de não ser necessário quebrar as hashes de senhas WordPress na maioria das vezes.
Digamos que um site seja WordPress, e por meio de alguma vulnerabilidade (como SQLi) em um dos plugins ou outros arquivos no mesmo servidor, você consiga acesso à tabela de usuários (geralmente 'wp_users'). Mas a hash (criptografia) para senhas do WordPress dá até medo. Neste caso, o que você faria?
Vamos ver aqui que não há razão para pânico (caso você não seja o administrador... nem tenha medo da cadeia).
Após confirmar que o site está vulnerável e ter acesso à tabela de usuários, eu me deparo com meu rival, a quem eu quero trabalhando para mim: o painel administrativo.
E aqui, temos a tabela wp_users, com todos os usuários. As colunas que realmente nos interessam são apenas user_login e user_activation_key.
Agora vamos explicar: quando se usa o Esqueci minha senha, é gerado um token e salvo na tabela de usuários, na coluna "user_activation_key", para verificação do e-mail do usuário. Um link é enviado ao e-mail do mesmo e, neste link, temos, via método GET, o login do usuário e este token. Nosso objetivo é, sem possuir acesso ao e-mail do administrador, reconstruir este link e acessá-lo.
Primeiramente, vamos clicar em "Lost your password?" embaixo do formulário de login. A seguinte página é aberta:
Vamos preencher o login do usuário que obtivemos na tabela de usuários. Por causa de um plugin neste site em especial, temos também que preencher uma conta de matemática básica, que serve como captcha. Então, clique em Get New Password.
Feito isso, o token é gerado e salvo na base de dados. Vamos obter os dados novamente e copiar o valor da coluna user_activation_key.
Então, vamos utilizar o seguinte modelo para criação da URL:
Nossa URL ficará assim, para este site:
Abrindo essa URL no navegador, já podemos escolher a nova senha para o usuário
Escolha a senha que você quiser. Sim, é sério isso. Após isso, recebemos, com alegria, a mensagem de que a senha foi alterada com sucesso.
Algo importante a se saber agora é que o administrador é informado, via e-mail, sobre a troca de senha. Logo, se ele tiver algum dispositivo (como um aparelho celular) sincronizando-se com os e-mails, ele saberá na hora que estará sendo invadido. Isso leva a um tipo de briga não muito bonita de se ver, onde os dois veem quem consegue mudar a senha por último (como uma briga de pobres).
Clicando no link "Log In", somos levados ao painel administrativo. Aqui já conseguimos logar com o usuário (login) que obtivemos na coluna "user_login" da tabela "wp_users" do MySQL e a senha que acabamos de escolher.
Owned.
(Por 0KaL)
Veremos hoje algo que muitos de nós já passamos por, mas não soubemos o que fazer. Vou mostrar também o porquê de não ser necessário quebrar as hashes de senhas WordPress na maioria das vezes.
Digamos que um site seja WordPress, e por meio de alguma vulnerabilidade (como SQLi) em um dos plugins ou outros arquivos no mesmo servidor, você consiga acesso à tabela de usuários (geralmente 'wp_users'). Mas a hash (criptografia) para senhas do WordPress dá até medo. Neste caso, o que você faria?
Vamos ver aqui que não há razão para pânico (caso você não seja o administrador... nem tenha medo da cadeia).
Após confirmar que o site está vulnerável e ter acesso à tabela de usuários, eu me deparo com meu rival, a quem eu quero trabalhando para mim: o painel administrativo.
E aqui, temos a tabela wp_users, com todos os usuários. As colunas que realmente nos interessam são apenas user_login e user_activation_key.
Nota: Sim, sou eu mesmo, o 0KaL. Não, não troquei de ideologia (quanto ao Windows e ao Havij). O uso do mesmo foi apenas para que o leitor possa entender melhor o que estou mostrando (digamos que não ficaria muito fácil e intuitivo de se entender ver um monte de strings concatenadas e uma URL infernal na imagem).
Agora vamos explicar: quando se usa o Esqueci minha senha, é gerado um token e salvo na tabela de usuários, na coluna "user_activation_key", para verificação do e-mail do usuário. Um link é enviado ao e-mail do mesmo e, neste link, temos, via método GET, o login do usuário e este token. Nosso objetivo é, sem possuir acesso ao e-mail do administrador, reconstruir este link e acessá-lo.
Primeiramente, vamos clicar em "Lost your password?" embaixo do formulário de login. A seguinte página é aberta:
Vamos preencher o login do usuário que obtivemos na tabela de usuários. Por causa de um plugin neste site em especial, temos também que preencher uma conta de matemática básica, que serve como captcha. Então, clique em Get New Password.
Feito isso, o token é gerado e salvo na base de dados. Vamos obter os dados novamente e copiar o valor da coluna user_activation_key.
Então, vamos utilizar o seguinte modelo para criação da URL:
Código:
http://[SITE]/wp-login.php?action=rp&key=[ACTIVATION KEY]&login=[LOGIN]
Código:
http://automateitapp.com/wp-login.php?action=rp&key=WcshCwwcUrEdnvnenD8C&login=wordpress_admin
Escolha a senha que você quiser. Sim, é sério isso. Após isso, recebemos, com alegria, a mensagem de que a senha foi alterada com sucesso.
Algo importante a se saber agora é que o administrador é informado, via e-mail, sobre a troca de senha. Logo, se ele tiver algum dispositivo (como um aparelho celular) sincronizando-se com os e-mails, ele saberá na hora que estará sendo invadido. Isso leva a um tipo de briga não muito bonita de se ver, onde os dois veem quem consegue mudar a senha por último (como uma briga de pobres).
Se você recebeu esse e-mail (e é o administrador), corra para o cliente FTP e crie um arquivo denominado ".htaccess" no diretório "wp-admin" com o seguinte conteúdo:
Assim, estará bloqueando temporariamente quaisquer acessos ao painel administrativo. Corrija as vulnerabilidades em seu website e altere seus dados de login.
Código:
Order Allow,Deny Deny from All
Clicando no link "Log In", somos levados ao painel administrativo. Aqui já conseguimos logar com o usuário (login) que obtivemos na coluna "user_login" da tabela "wp_users" do MySQL e a senha que acabamos de escolher.
Owned.
(Por 0KaL)
Comment