[VIM] uh-oh: local file inclusion from insecure permissions

Steven M. Christey coley at mitre.org
Fri Aug 24 23:44:54 UTC 2007


Ref: CONFIRM:http://www.torrenttrader.org/index.php?showtopic=5843

(CVE pending)

The ACK says "We have been made aware of a hole in the script that can
be exploited. Please CHMOD your .txt files in the root back to 644 to
disable write access (you can edit them via FTP still) ...
disclaimer.txt ... sponsors.txt ... banners.txt ... we are working to
address this issue ...."

Source inspection of 1.07, as downloaded on 20070824, shows that these
files have 640 permissions, at least as extracted from the tarball.

So, we were asking ourselves... why is modifying these files a
security issue, and what's the attack vector?  Maybe local symlink
following, but then I'd think they'd say change the directory
permissions too.

Ah, grep, you wondrous workhorse of post-disclosure analysis:

>  grep banners.txt *.php

  admin.php:      include("banners.txt");
  ....
  check.php:$banners = chmod($_SERVER['DOCUMENT_ROOT'] . "/banners.txt", 0666);
  check.php:      if(!$banners){ echo "banners.txt - Error setting
       permissions<br>"; } else { echo "banners.txt - Success! CHMOD
       CHANGED<br>"; }
  check.php:If you see "Unwriteable" you need to change the permissions
       on the file or directory to 777 or 666 so that  TorrentTrader to write
       to it.


So... a text file is given world-writable permissions, but it's used
in an include statement.  So, at least, we have a locally exploitable
"file inclusion" issue thanks to insecure permissions.

We see similar things for sponsors.txt and disclaimer.txt, but grep
also yields this tidbit:

  index.php:echo file_get_contents("disclaimer.txt") ;

So, this is a way to do local "file inclusion" for any visitor to the
site.

I didn't investigate whether there were remote attack vectors.

I bet there's a TON of these kinds of "writable-LFI" issues out
there...

- Steve


More information about the VIM mailing list