Power Pixel Fórum - O melhor conteúdo você encontra aqui!
Redes Sociais:

Você não está conectado. Conecte-se ou registre-se

FIX HELIOCMS V5 index.php

Mensagem - Página 1 de 2

1 FIX HELIOCMS V5 index.php em Dom 20 Nov 2016 - 20:47

Membro

Pessoal, achei um erro grave na HelioCMS V5. Não sei se isso afeta a todas as elas, mas pelo menos comigo afetou, e é uma falha grave pois os hackers podem usá-la para invadir seu hotel e as contas!!!

A falha é basicamente no sistema de login, que ao digitar o e-mail você não precisa digitar a senha, apenas dar enter e ele irá entrar na conta como se você tivesse digitado a senha!

A solução é: DESATIVAR O LOGIN POR E-MAIL. 


Como fazer?
Vá em index.php, e procure por:
Código:

$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' or username='$emailorusername' && password='".MD5($password)."' LIMIT 1");

Substitua por:
Código:

$user_verify = mysql_query("SELECT * FROM users WHERE username='$emailorusername' && password='".MD5($password)."' LIMIT 1");

Repita o mesmo procedimento no arquivo includes/modal_login.php

Isso irá remover o acesso por e-mail, ficando apenas o acesso por usuário.

Espero ter ajudado!

2 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 11:36

MOD Gamer

O problema esta no Operador Logico "OR" ele passa se qualquer uma das alternativas retornar TRUE
Acredito que se altera-lo para and resolva o problema.


eu não sei se estou enferrujado, mas acho que nunca vi o operador logico && em SQL, acredito que seu codigo ainda sim está errado.


em SQL o operador logico para verificar se todas alternativas são corretas é AND


$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' or username='$emailorusername' AND password='".MD5($password)."' LIMIT 1");



creio que isso resolva o problema, mas me espanta de ter entrado com && sem dar erro, vou pesquisar sobre.


afinal usa mysql para fazer alterações no banco de dados, coisa das primeiras versões do php, já esta meio velinho isso ai, tipo uns 15 anos.




[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver este link.] <<< entre e de uma olhada no meu server

3 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 11:51

Membro

[Você precisa estar registrado e conectado para ver este link.] escreveu:O problema esta no Operador Logico "OR" ele passa se qualquer uma das alternativas retornar TRUE
Acredito que se altera-lo para and resolva o problema.


eu não sei se estou enferrujado, mas acho que nunca vi o operador logico && em SQL, acredito que seu codigo ainda sim está errado.


em SQL o operador logico para verificar se todas alternativas são corretas é AND


creio que isso resolva o problema, mas me espanta de ter entrado com && sem dar erro, vou pesquisar sobre.


afinal usa mysql para fazer alterações no banco de dados, coisa das primeiras versões do php, já esta meio velinho isso ai, tipo uns 15 anos.

O modo mais rápido e prático que eu achei pra resolver isso, é remover o login por e-mail por causa da tal falha.

Como eu não sei muito sobre códigos php apenas edições, então resolvi postar pra tentar ajudar.

Tentei sua correção e nada, vou tentar pesquisar aqui e ver se consigo fazer funcionar o e-mail + senha.

Tentei sua solução e nada, ainda entra sem a senha

4 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 11:53

MOD Gamer

era para ter passado, mas tem outra forma vou fazer aqui para você

você poderia me mandar o php da pagina, pois estou meio perdido, tem area tanto para email quanto para usuario, ou é uma area para os dois, no codigo que eu enviei para você ele entrou sem a senha?

Código:
<?php



?>






[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver este link.] <<< entre e de uma olhada no meu server

5 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 11:57

Membro

Sim, ele entrou sem a senha mesmo assim.

index.php:
Código:

<?php
require_once ('heliocms/core.php');
if ($_GET['unlock'] == "$w") {
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-success" style="display: tab[b][/b]le;"><div class="toast-message">¡Cuenta desbloqueada!</div></div></div>';
}
$emailorusername_class = 'form__input login-form__input ng-pristine ng-untouched ng-invalid ng-invalid-required ng-valid-email';
$password_class = 'form__input login-form__input ng-pristine ng-untouched ng-invalid ng-invalid-required';
if (isset($_POST['login'])) {
$emailorusername = $_POST['emailorusername'];
$password = $_POST['password'];
$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' or username='$emailorusername' AND password='".MD5($password)."' LIMIT 1");
$user_fetch = mysql_fetch_assoc($user_verify);
if (mysql_num_rows($user_verify) == 0) {
$error = '1';
$emailorusername_class = 'form__input login-form__input ng-valid ng-dirty ng-valid-parse ng-touched ng-invalid';
$password_class = 'form__input login-form__input ng-valid ng-dirty ng-valid-parse ng-touched ng-invalid';
}else{
$ban_check = mysql_query("SELECT * FROM bans WHERE value='$user_fetch[username]'");
if(mysql_num_rows($ban_check) == 1){
$ban = mysql_fetch_assoc($ban_check);
$message = '<div id="toast-container" class="toast-top-center toast-sticky" aria-live="polite" role="alert"><div class="toast toast-error" style="display: block;"><div class="toast-progress"></div><div class="toast-title">¡Has sido baneado!</div><div class="toast-message">Has sido baneado permanentemente por: <b>'.$ban['reason'].'</b>.<button id="toast-close" class="toast-button">OK</button></div></div></div>';
}else{
$user_safety_a = mysql_query("SELECT * FROM heliocms_safetyquestions WHERE email='$user_fetch[mail]'");
$user_safety_q = mysql_fetch_assoc($user_safety_a);
$_SESSION['id'] = $user_fetch['id'];
if ($user_safety_q['trusted_ip'] <> $ip) {
mysql_query("UPDATE heliocms_safetyquestions SET active='1' WHERE email='$user_fetch[mail]'");
}
mysql_query("UPDATE users SET ip_last='$ip' WHERE mail='$user_fetch[mail]'");
mysql_query("INSERT INTO heliocms_sessions (last,user_id) VALUES ('".time()."','$user_fetch[id]')");
header ("Location: $site");
}}}
if (isset($_POST['forgotten_submit'])) {
$email_forgotten = $_POST['emailAddress'];
if (empty($email_forgotten)) {
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">Has dejado el campo "email" vacío.</div></div></div>';
}else{
if (!preg_match("/^[A-Z0-9._-]{2,}+@[A-Z0-9._-]{2,}\.[A-Z0-9._-]{2,}$/i", $email_forgotten)) {
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">Has introducido un email inválido.</div></div></div>';
}else{
mysql_query("INSERT INTO heliocms_forgotten (email) VALUES ('$email_forgotten')");
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-success" style="display: tab[b][/b]le;"><div class="toast-message">En breve te enviaremos un email para recuperar tu contraseña. <b>'.$email_forgotten.'</b>.</div></div></div>';
}}}
if (isset($_GET['badge_id'])) {
$badge_a = mysql_query("SELECT * FROM heliocms_badgestore WHERE code='$_GET[badge_id]'");
$badge_q = mysql_fetch_assoc($badge_a);
if (isset($_SESSION['id'])) {
if ($user_q['credits'] - $badge_q['price'] <= '0') {
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">No tienes créditos suficientes para comprar esta placa.</div></div></div>';
}else{
if ($_GET['badge_id'] <> $badge_q['code']) {
}else{
$badge_already_a = mysql_query("SELECT * FROM user_badges WHERE badge_id='$_GET[badge_id]' AND user_id='$user_q[id]'");
if (mysql_num_rows($badge_already_a) == '0') {
$message = '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-success" style="display: tab[b][/b]le;"><div class="toast-message">Placa comprada correctamente.</div></div></div>';
mysql_query("INSERT INTO user_badges (user_id,badge_id) VALUES ('$user_q[id]','$_GET[badge_id]')");
mysql_query("UPDATE users SET credits = credits - $badge_q[price] WHERE id='$user_q[id]'");
}}}}}
?>

includes/modal_login.php
Código:

<?php
ini_set('default_charset','UTF-8','ISO-8859-');
if (isset($_POST['login'])) {
$emailorusername = $_POST['emailorusername'];
$password = $_POST['password'];
$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' or username='$emailorusername' AND password='".MD5($password)."' LIMIT 1");
$user_fetch = mysql_fetch_assoc($user_verify);
$ban_check = mysql_query("SELECT * FROM bans WHERE value='$user_fetch[username]'");
if (empty($emailorusername)) {
echo '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">O campo de usuário está vazio!</div></div></div>';
}else{
if (empty($password)) {
echo '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">O campo de senha está vazia!</div></div></div>';
}else{
if (mysql_num_rows($user_verify) == 0) {
echo '<div id="toast_container_s" class="toast-top-center" aria-live="polite" role="alert"><div class="toast toast-error" style="display: tab[b][/b]le;"><div class="toast-message">Usuário ou senha incorretos!</div></div></div>';
}else{
if(mysql_num_rows($ban_check) == 1){
$ban = mysql_fetch_assoc($ban_check);
echo '<div id="toast-container" class="toast-top-center toast-sticky" aria-live="polite" role="alert"><div class="toast toast-error" style="display: block;"><div class="toast-progress"></div><div class="toast-title">VOCÊ FOI BANIDO!</div><div class="toast-message"><button id="toast-close" class="toast-button">OK</button></div></div></div>';
}else{
$user_safety_a = mysql_query("SELECT * FROM heliocms_safetyquestions WHERE email='$user_fetch[mail]'");
$user_safety_q = mysql_fetch_assoc($user_safety_a);
$_SESSION['id'] = $user_fetch['id'];
if ($user_safety_q['trusted_ip'] <> $ip) {
mysql_query("UPDATE heliocms_safetyquestions SET active='1' WHERE email='$user_fetch[mail]'");
}
mysql_query("UPDATE users SET ip_last='$ip' WHERE mail='$user_fetch[mail]'");
mysql_query("INSERT INTO heliocms_sessions (last,user_id) VALUES ('".time()."','$user_fetch[id]')");
header ("Location: $og");
}}}}}
?>

6 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 11:59

MOD Gamer

Eu vou ler os codigos que vocÇe mandou agora, mas antes tenta assim

$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' ANY username='$emailorusername' AND password='".MD5($password)."' LIMIT 1");


eu tenho certeza que isso é no operador logico, tenta dessta forma agora.

já li o codigo, vou esperar você responder, se não der certo tento outra forma aqui.

essa cms é muito vulneravel a SQL Injection

como pode ver $emailorusername = $_POST['emailorusername'];

Ela não filtra o dado antes de jogalo no banco.




[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver este link.] <<< entre e de uma olhada no meu server

7 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 12:01

Membro

[Você precisa estar registrado e conectado para ver este link.] escreveu:Eu vou ler os codigos que vocÇe mandou agora, mas antes tenta assim

$user_verify = mysql_query("SELECT * FROM users WHERE mail='$emailorusername' ANY username='$emailorusername' AND password='".MD5($password)."' LIMIT 1");


eu tenho certeza que isso é no operador logico, tenta dessta forma agora.

Então cara, com esse código aí, mesmo botando login e senha corretamente não vai, dá campo de usuário/senha incorreto.
O mesmo acontece colocando usuário e senha.

8 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 12:02

MOD Gamer

ok entendi, eu vou fazer a verificação por php e te mando, vai demorar um pouco q estou indo almoçar agora, mas te mando ainda hoje, daqui 1 hora




[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver este link.] <<< entre e de uma olhada no meu server

9 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 12:03

Membro

[Você precisa estar registrado e conectado para ver este link.] escreveu:ok entendi, eu vou fazer a verificação por php e te mando, vai demorar um pouco q estou indo almoçar agora, mas te mando ainda hoje, daqui 1 hora

Também estou indo almoçar, até depois.
Vai ajudar muita gente Very Happy

10 Re: FIX HELIOCMS V5 index.php em Sex 25 Nov 2016 - 13:26

Administrador

O meu caro colega Luan Martins não está a conseguir acender ao ppf, por isso mandou isto para vc:


Voltei, olha eu testei minha logica aqui no SGBD da MySQL é funcionou perfeitamente,
teste na minha cms funcionou perfeitamente

a syntax deve ser escrita desta forma

$user_verify = mysql_query("select * from users where username = '"{$emailorusername}"' OR mail = '"{$emailorusername}"' AND password = '"{md5($password);}"'");

como você pode ver no gif que demonstro

Mensagem - Página 1 de 2

Ir à página : 1, 2  Seguinte

Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum