Hackear login no Moodle usando API - Logar no Moodle sem login e senha

Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -
Número de respostas: 15

Nesse post vou compartilhar com vocês como efetuar login automaticamente no Moodle sem passar login e senha usando API do Moodle. Esse procedimento requer acesso ao FTP  / sistema de arquivos  php do Moodle.

O código apresentado a seguir mostra como fazer isso.  Esse procedimento pode ser útil em seguintes situações:

  • Perdeu a senha de administrador e precisa logar como admin para providenciar alteração de senha;
  • Precisa integrar sistemas para que um usuário entre no Moodle já logado vindo de outros sistema;
  • Acessar como um determinado aluno sem alterar/conhecer a senha dele;

O código a seguir é muito perigoso na mão de pessoas mal intencionadas com acesso ao sistema de arquivo php do Moodle. Pois, use com cautela. 

Logar no Moodle passando parâmetro id do  usuários - Download de código

/*
* Efetua login do usuário no Moodle através do id do usuário registrado na tabela mdl_user
*/

require_once("../config.php");
$user = $DB->get_record('user', array('id'=>2)); //mude o parâmetro do id do usuário. 2 por padrão é id do admin
$r=complete_user_login($user);
 redirect($CFG->httpswwwroot.'/index.php');

 

Logar no Moodle passando e-mail do usuários - Download do código

/*
* Efetua login do usuário pelo e-mail. Basta passar parâmetro email no parâmetro http
* Pode receber parâmetros courseid e page. O courseid é o curso que o usuário deve ser redirecionado.
*
*/
require_once("../config.php");
$email=required_param('email',PARAM_TEXT);
$courseid= optional_param('courseid', NULL,PARAM_INT);
$page = optional_param('page',NULL,PARAM_TEXT);
$user = $DB->get_record('user', array('email'=>$email));
$r=complete_user_login($user);
if($courseid>0){redirect($CFG->httpswwwroot.'/course/view.php?id='.$courseid) ;}
else{
       if($page=='none') { echo " usuario $user->firstname $user->lastname ja esta logado no moodle ";exit;}
     redirect($CFG->httpswwwroot.'/index.php');
}

 

Versão do Moodle

Os códigos acima foram projetados para a versão 2.x  ou  superior  do Moodle. Caso estiver na versão 1.9, apena tire o objeto $DB. Onde tem $DB->get_record substitua para get_record que o código ficará compatível com a versão 1.9

 Para executar esses códigos, crie uma  pasta _extra ou qualquer outra no Moodle. Dentro dessa pasta, crie um arquivo login.php  e copie o código e cole. Ou então faça download dos aquivos e coloque nessa pasta ou qualquer outro. 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Leonardo Nascimento -

E quando eu tenho o login e senha? Por exemplo, o aluno já está logado no sistema acadêmico e clica no link do moodle dentro do sistema e vai diretamente sem precisar digitar outra senha. Esse é o meu problema!

Em resposta à Leonardo Nascimento

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -

Leonardo,

Se o usuário já tem cadastro no Moodle e você identifica esse cadastro pelo e-mail, por exemplo, não precisa nem passar login e senha. Basta fazer uma consulta por e-mail e recuperar o objeto usuário. Se o usuário não estiver cadastrado, é necessário efetuar o cadastro antes. Neste caso basta passar os parâmetros ou uma chave que possibilita recuperar  o cadastro no sistema SGA   e processar cadastro no Moodle  antes de efetuar o login. 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Valmir de Santana Santos Junior -

Boa tarde,

Acho que o meu problema é igual ao do Leonardo,

Pois trabalho com um Portal ERP de terceiros, que me permite colocar um link.

O acesso ao Moodle deverá ser somente atraves do Portal, pensei em pegar a informação de matricula da seção, mas tem como fazer está autenticação pelo Moodle?

Sou novo no ambiente Moodle, qualquer ajuda é bem vindo.

Obrigado

 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por reginaldo martins -

gostaria de saber como fazer pois criei uma pasta no moodle e um arquivo login.php e colei o codigo , loguei em outro site com o email igual do moodle e ao entrar no moodle nao entra

Em resposta à reginaldo martins

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Silvio Santos -

Prezado, vc usou o exemplo com acesso por e-mail passando um parâmetro com GET ou POST? 

Verifique se fez isso, pois no caso de integração, é necessário.

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por ARTHUR DE SOUZA -

Ola não tantos conhecimentos sobre informatica, e gostaria de saber o processo de execução destes códigos.

Em resposta à ARTHUR DE SOUZA

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -

Arthur,

Para esse código funcionar é necessário o seguinte procedimento:

1) Coloque esse código em pasta na raiz de instalação do seu Moodle. Sempre recomento criar uma pasta com nome _extra e colocar esse arquivo na pasta. Isso deve ser feito via FTP, um sistema que envia aquivos para servidor. Se esses termos parecerem estranho, peça auxílio de um técnico próximo;

2) Após colocar o arquivo, se for na pasta _extra, execute o seguinte URL no navegador: MOODLE_URL/_extra/logar.php 

Caso tenha usado opção de logar passando e-mail, cujo código está nesse arquivo, o acesso deve ser feito via o seguinte URL:  MOODLE_URL/_extra/logar_email.php?email=XXXXXX

 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Ryan Matheus -

Recomendo o uso também de passar um codígo de auteticação, bloqueando que coloquem um email de um usúario logado adicionando esse codígo no site no começo do script

 

define('AUTHLOGINTOKEN', 'PALAVRA_ALEATORIA');

if($_GET['token'] == AUTHLOGINTOKEN){

   // CODIGO DO SCRIPT

}else{

  // ERRO - User não se autenticou pelo sistema

}

 

Para autenticar passe a url do arquivo, no seu exemplo é MOODLE_URL/_extra/logar_email.php?email=XXXXXX mas acrecente após o email &token=PALAVRA_ALEATORIA

 

Troque a PALAVRA_ALEATORIA por uma palavra aleatoria ou um token

 
Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Alex Bourdex -

Oi, boa tarde! Você poderia explicar passo a passo? O que é pasta na raiz de instalação? E executar URL?

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Márcio Lopes -

Badiu, não existe um tratamento de erro para a página destino? Percebi que quando o usuário não existe ele dá esse erro aqui:

 

Em resposta à Márcio Lopes

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -

Márcio,

Me contextualiza quando e como esse erro ocorre. Em qual versão do Moodle. Que plugin de sincronização está habilitado para o user que está tentando logar. Me explica como esse erro ocorre para eu tentar simular aqui. Após a simulação, vou analisar solução alternativa. 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Max Weber -

Muito bom Lino!
Testei no meu moodle e funcionou 100%.

Fiz algumas modificações para fins de segurança.

Por exemplo, eu adicionei dois parâmetros como obrigatórios:

$matricula=required_param('matricula',PARAM_TEXT);
$token=required_param('token',PARAM_TEXT);
 
Esse token é gerado pelo meu sistema acadêmico e muda a cada 1 minuto e é criptografado em SHA1.
 
Quando bate no script eu faço uma comparação do token infomrado na URL com o token gerado no momento da execução do arquivo q está no moodle, e ai o script compara esses dois tokens e verifica se a matricula informada no navegador é igual ao username cadastrado no moodle.
 
Tudo 100% funciona e com mais segurança.
 
:)
 
 
Em resposta à Max Weber

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -

Max,

Bacana a implementação que fez. 

Esse script eu uso ele muito para recuperar senha de admin quando esqueço. 

Em resposta à Lino Vaz Moniz

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Julio Azevedo -

Olá a todos, sou novo no Moodle e aqui no fórum.

Eu tenho um requisito parecido com este. Temos um sistema web e a plataforma moodle. Preciso que o aluno que faça login no sistema, já entre logado no moodle, e o que fizer login no moodle, já entre logado no sistema.

A primeira ideia que tivemos foi usar as mesmas senhas, na aplicação e no moodle, para isso precisariamos implementar no nosso sistema o mesmo mecanismo de geração de senha do moodle, porém, não conseguimos avançar (nosso sistema é nodejs)

Mas vendo esse post percebi que dá para fazer de outras formas. 

Seria possível atender este requisito acima? Não importa onde o aluno se logue, ele já ir logado para a outra aplicação, seja nosso sistema ou seja o moodle?

Em tempo, estamos com a versão 3.11 do moodle

Em resposta à Julio Azevedo

Re: Hackear login no Moodle usando API - Logar no Moodle sem login e senha

por Lino Vaz Moniz -

Julio

Uma alternativa é você usar token. O sistema externo gera 2 token. Grava ambos na base de dados. Envia o segundo token para url do Moodle. Este url, consulta no segundo plano informações com base no token. Recebe como resposta o segundo token. Este deve ser decodificado. Ao decodificar, extrai id ou username do usuário. A partir daí, faz o login. Neste caso o usuário nem precisa de senha no Moodle.