在渗透测试中,我们有时候会碰到拿到后台登录界面,而且没有其他漏洞可以利用,只能暴力破解用户名密码,现在直接使用弱口令的网站较少了,常见的字典一般是无法爆破成功,所以我们要针对网站内容来生成对应字典,进一步提升爆破成功率。
所以我们来写个小脚本来生成对应的字典
import exrex import sys web_white = ['com','cn','gov','www','edu','org'] def host_para(host): if '://' in host: host = host.split('://')[1].replace('/',' ')#将无用字符替换成空 if '/' in host: host = host.replace('/','') return host def dic_creat(hosts): web_dics = hosts.split('.')#将有用的东西去除,例如demo,webdic,放入字典生成的地方,生成字典 #将核心的生成规则写入配置文件,方便以后使用 #可以对生成密码进行过滤 f_rule = open('ruler.ini','r',encoding='UTF-8') for i in f_rule: if '#' in i[0]: rule = i f_pass_out = open('pass_0.txt','r') f_pass_out.close() for web_dic in web_dics: if web_dic not in web_white: f_pass =open('123.txt','r')#打开密码文件 for dic_pass in f_pass: dics = list(exrex.generate( '{web_dic}[!@#]{dic_pass}'.format(web_dic = web_dic,dic_pass = dic_pass))) for dic in dics: if len(dic) > 4: f_pass_out =open('pass_1.txt','a+') f_pass_out.write(dic =' ') f_pass_out.close() print (dic) #dic_creat(host_para('demo.123.com')) if __name__ =='__main__': if len(sys.argv) == 2: dic_creat(host_para(sys.argv[1])) sys.exit(0) else: print('Usage: %s www.demo.com'%sys.argv[0]) sys.exit(-1)
我们主要使用了exrex模块来生成字典,将所有可能都列举到字典中,首先先做一个根据网站域名来生成对应字典,并和常见的弱口令结合来生成对应的字典。
将域名中提取出来的内容进行过滤,将符号等无用的东西去掉,并将核心的生成规则写入配置文件,便于修改,后续再加入扩展功能。