Re: Directory traversal vulnerability in phpimglist

From: Jason DiCioccio (geniusjat_private)
Date: Mon Mar 11 2002 - 07:28:23 PST

  • Next message: Marc Maiffret: "ADVISORY: Windows Shell Overflow"

    In addition, an official upgrade has been released:
    
    phpimglist 1.2.2 has been released and is available from:
    http://www.liquidpulse.net/s.lp?id=17
    
    Cheers,
    -JD-
    
    Jason DiCioccio wrote:
    
    > DESCRIPTION:  There is a vulnerability in phpimglist which allows a user
    > to traverse through directories outside the web root.  It only shows
    > directories and image files although there might be a way around this.
    > 
    > Exploit: http://www.site.com/images/?cwd=../../../../
    >          -or-
    >          http://www.site.com/images/?cwd=/
    > 
    > UNOFFICIAL FIX:  Around line 76, there is a block like:
    > 
    > if (!$cwd) { $cwd = $SET...... else {
    >      $cwd = .....
    > }
    > 
    > 
    > Replace this block with the following block:
    > 
    > if (!$cwd) { $cwd = $SETTINGS["rootdir"]; } else {
    >         $cwd = ereg_replace("\.+","",$cwd);
    >         $cwd = ereg_replace("^/+","",$cwd);
    > }
    > 
    > This appears to fix the problem.
    > 
    > 
    > VENDOR/AUTHOR STATUS: I contacted the author and got a VERY QUICK
    > response.  The email transcript is below:
    > 
    > ----
    > 
    > Hm.. Thanks  :) I\'ll get that fixed ASAP.. i thought I had put checking
    > for ../ in , but never tested it :)
    > 
    > if you have any ideas for the script,or find anything else, lemme know..
    > ;]
    > 
    > replying to:
    > You can traverse directories using the $cwd variable in phpimglist.
    > Example is:
    > 
    > http://phpimglist.site/?cwd=/
    > or
    > http://phpimglist.site/?cwd=../../../../../
    > 
    > This allows you to navigate the filesystem and see any image on the
    > filesystem, perhaps more..
    > 
    > I added something that I believe fixed it..
    > 
    > if (!$cwd) { $cwd = $SETTINGS[\"rootdir\"]; } else {
    >         $cwd = ereg_replace(\"\\.+\",\"\",$cwd);
    >         $cwd = ereg_replace(\"^/+\",\"\",$cwd);
    > }
    > 
    > You had something similar but it was not working for some reason.
    > 
    > ----
    > 
    > Cheers,
    > Jason DiCioccio
    > geniusjat_private
    > 
    > Open Domain Service
    > http://www.ods.org/
    > 
    



    This archive was generated by hypermail 2b30 : Mon Mar 11 2002 - 20:02:29 PST