mevcut kodlarda bir açık mevcut üye girişi yapmadan sisteme login olabiliyorlar sizce nerede benmi göremiyorum
<?php
include "functions.php";
if (isset($_SESSION['hash'])) { header("Location: ./dashboard.php"); exit; }
$rAdminSettings = getAdminSettings();
$rGA = new PHPGangsta_GoogleAuthenticator();
if ((isset($_POST["username"])) && (isset($_POST["password"]))) {
$rUserInfo = doLogin($_POST["username"], $_POST["password"]);
if (isset($rUserInfo)) {
if ((isset($rAdminSettings["google_2factor"])) && ($rAdminSettings["google_2factor"])) {
if (strlen($rUserInfo["google_2fa_sec"]) == 0) {
$rGA = new PHPGangsta_GoogleAuthenticator();
$rSecret = $rGA->createSecret();
$rUserInfo["google_2fa_sec"] = $rSecret;
$db->query("UPDATE `reg_users` SET `google_2fa_sec` = '".$db->real_escape_string($rSecret)."' WHERE `id` = ".intval($rUserInfo["id"]).";");
$rNew2F = true;
}
$rQR = $rGA->getQRCodeGoogleUrl('UI', $rUserInfo["google_2fa_sec"]);
} else {
$rPermissions = getPermissions($rUserInfo["member_group_id"]);
if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && ((!$rPermissions["is_banned"]) && ($rUserInfo["status"] == 1)))) {
$db->query("UPDATE `reg_users` SET `last_login` = UNIX_TIMESTAMP(), `ip` = '".$db->real_escape_string(getIP())."' WHERE `id` = ".intval($rUserInfo["id"]).";");
$_SESSION['hash'] = md5($rUserInfo["username"]);
if ($rPermissions["is_admin"]) {
if (strlen($_POST["referrer"]) > 0) {
header("Location: .".$_POST["referrer"]);
} else {
header("Location: ./dashboard.php");
}
} else {
$db->query("INSERT INTO `reg_userlog`(`owner`, `username`, `password`, `date`, `type`) VALUES(".intval($rUserInfo["id"]).", '', '', ".intval(time()).", '[<b>UserPanel</b> -> <u>Logged In</u>]');");
if (strlen($_POST["referrer"]) > 0) {
header("Location: .".$_POST["referrer"]);
} else {
header("Location: ./reseller.php");
}
}
} else if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && ($rPermissions["is_banned"]))) {
$_STATUS = 2;
} else if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && (!$rUserInfo["status"]))) {
$_STATUS = 3;
} else {
$_STATUS = 4;
}
}
} else {
$_STATUS = 0;
}
} else if ((isset($_POST["gauth"])) && (isset($_POST["hash"]))) {
$rUserInfo = getRegisteredUserHash($_POST["hash"]);
if ($rUserInfo) {
if ($rGA->verifyCode($rUserInfo["google_2fa_sec"], $_POST["gauth"], 2)) {
$rPermissions = getPermissions($rUserInfo["member_group_id"]);
if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && ((!$rPermissions["is_banned"]) && ($rUserInfo["status"] == 1)))) {
$db->query("UPDATE `reg_users` SET `last_login` = UNIX_TIMESTAMP(), `ip` = '".$db->real_escape_string(getIP())."' WHERE `id` = ".intval($rUserInfo["id"]).";");
$_SESSION['hash'] = md5($rUserInfo["username"]);
if ($rPermissions["is_admin"]) {
header("Location: ./dashboard.php");
} else {
$db->query("INSERT INTO `reg_userlog`(`owner`, `username`, `password`, `date`, `type`) VALUES(".intval($rUserInfo["id"]).", '', '', ".intval(time()).", '[<b>UserPanel</b> -> <u>Logged In</u>]');");
header("Location: ./reseller.php");
}
} else if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && ($rPermissions["is_banned"]))) {
$_STATUS = 2;
} else if (($rPermissions) && ((($rPermissions["is_admin"]) OR ($rPermissions["is_reseller"])) && (!$rUserInfo["status"]))) {
$_STATUS = 3;
} else {
$_STATUS = 4;
}
} else {
$rQR = $rGA->getQRCodeGoogleUrl('UI', $rUserInfo["google_2fa_sec"]);
$_STATUS = 1;
}
} else {
$_STATUS = 0;
}
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
GoogleAuthenticator
olayını bilmiyorum.Ama $_POST
tan gelen veriyi kontrolsüz bir şekilde sorguda kullanıyorsan açık oradan kaynaklanıyordur.
Owasp Zap ile site üzerinde zafiyet taraması yapabilirsin.