FIX HELIOCMS V5 index.php

+2
Luan Martins
jmths
6 participantes

jmths jmths  • 20.11.16 20:47

FIX HELIOCMS V5 index.php Empty FIX HELIOCMS V5 index.php 20.11.16 20:47

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!

Luan Martins Luan Martins  • 25.11.16 11:36

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 11:36

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.

jmths jmths  • 25.11.16 11:51

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 11:51

Luan Martins 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

Luan Martins Luan Martins  • 25.11.16 11:53

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 11:53

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



?>



jmths jmths  • 25.11.16 11:57

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 11:57

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");
}}}}}
?>

Luan Martins Luan Martins  • 25.11.16 11:59

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 11:59

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.

jmths jmths  • 25.11.16 12:01

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 12:01

Luan Martins 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.

Luan Martins Luan Martins  • 25.11.16 12:02

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 12:02

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

jmths jmths  • 25.11.16 12:03

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 12:03

Luan Martins 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 :D

pedxz pedxz  • 25.11.16 13:26

Super administradorMembro da Equipa

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 13:26

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

Luan Martins Luan Martins  • 25.11.16 14:46

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 14:46

vlw Ped, mandei o codigo com 1 ; a mais

então o real seria assim

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

jmths jmths  • 25.11.16 19:02

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 25.11.16 19:02

Luan Martins escreveu:vlw Ped, mandei o codigo com 1 ; a mais

então o real seria assim

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

Com esse código, dá isso:
Parse error: syntax error, unexpected '{' in C:\HABBOHOTEL\VertrigoServ\www\index.php on line 11

Luan Martins Luan Martins  • 26.11.16 16:19

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 26.11.16 16:19

mds, mas eu comentei aqui mais de 3000 vezes e meu comentario não foi.

então syntax error
provavelmente você apagou algo no codigo que gerou esse erro, pois rodei o codigo q te mandei no netbeans e não existe nele erro de syntax


pra mim poder fazer a verificação para você, vou pedir que mande-me seu skype, ou me passe tv, pois eu não tenho a cms aqui, e nunca usei, mas farei pelo tv para vc.

tsuname7.s tsuname7.s  • 14.02.17 19:06

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 14.02.17 19:06

Realmente o código tá com erro, ta foda de solucionar.

Karlee Karlee  • 14.02.17 19:10

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 14.02.17 19:10

Não sabia desse fix ;o

Valeu :D

The Flash The Flash  • 14.02.17 19:20

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php 14.02.17 19:20

[aviso=tsuname7.s]recebeu uma infração por necropost[/aviso]
[aviso=Tópico fechado]Motivo: Necropost[/aviso]

Conteúdo patrocinado  • 

FIX HELIOCMS V5 index.php Empty Re: FIX HELIOCMS V5 index.php

Permissões neste sub-fórum
Não podes responder a tópicos

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.