打造属于自己的神兵利器 – 作者:vlong6

一、前言

        多个人同时做一个渗透测试项目,每个人挖出的漏洞不尽相同,除了平时积累的经验和做测试时胆大心细外往往还和使用的工具有关。本次我来给大家介绍各种工具中字典的整理。

二、敏感目录字典整理

        之前一直以为字典越大越好,于是我就搜集了大量的目录字典,当对一些src漏洞挖掘时,每个网站目录扫描至少要花费半天时间,由于实在忍不了这个时间,决定重新整理目录。

        首先还是从工具中搜集大量的目录字典,从网上搜集了二十多个目录扫描的工具,剔除其它文件后字典占用空间两百多兆。

f1.png

        将所有的字典文件按大小进行排序,因为部分工具使用相同的字典,会对结果造成很大的影响,删除重复的文件还剩下两百多个文件,占用空间两百兆。

f2.png

        为了查看方便,使用批量重命名工具对所有文件进行重命名操作。

f3.png        文件编码存在差异,使用工具将文件编码进行统一。

f4.png        编写了一个python脚本,对两百文件进行处理,首先判断首字母是否为 / 结尾是否为 /,首字母不是 / 给添加,结果存在 / 给删除,接着去除无用行,如.png .css等 ,最后按照后缀进行分类,分别为asp、aspx、php、jsp、dir,并把出现次数最多的排在最上面。

import os

q_aspx = {}
q_asp = {}
q_php = {}
q_jsp = {}
q_dir = {}

for x in os.listdir(os.chdir(os.getcwd() + '/dir')):
	with open(x, 'r', encoding ='utf-8',errors ='ignore') as f1:
		print(x)
		list1 = f1.readlines()
		for i in list1:
			if i.startswith('/'):    #
				pass
			else:
				i = "/" + i
			if i.strip().endswith('/'):   
				i = i[0:-1]
			if ".gif" in i or ".png" in i or ".swf" in i or ".flv" in i or ".dll" in i or "inc" in i or ".css" in i or ".jpg" in i or "skins" in i or "Fonts" in i or "../" in i or "thumbs.db" in i:
				pass
			elif "aspx" == i.strip('\n')[-4:] or "ashx" == i.strip('\n')[-4:]:
				if i.strip('\n') in q_aspx:
					q_aspx[i.strip('\n')] = q_aspx[i.strip('\n')] + 1
				else:
					q_aspx[i.strip('\n')] = 0
			elif ".asp" == i.strip('\n')[-4:] or ".asa" == i.strip('\n')[-4:] or ".mdb" == i.strip('\n')[-4:]:
				if i.strip('\n') in q_asp:
					q_asp[i.strip('\n')] = q_asp[i.strip('\n')] + 1
				else:
					q_asp[i.strip('\n')] = 0
			elif ".php" == i.strip('\n')[-4:]:
				if i.strip('\n') in q_php:
					q_php[i.strip('\n')] = q_php[i.strip('\n')] + 1
				else:
					q_php[i.strip('\n')] = 0
			elif ".jsp" == i.strip('\n')[-4:]:
				if i.strip('\n') in q_jsp:
					q_jsp[i.strip('\n')] = q_jsp[i.strip('\n')] + 1
				else:
					q_jsp[i.strip('\n')] = 0
			else:
				if i.strip('\n') in q_dir:
					q_dir[i.strip('\n')] = q_dir[i.strip('\n')] + 1
				else:
					q_dir[i.strip('\n')] = 0

q_aspx = sorted(q_aspx.items(),key=lambda x:x[1],reverse=True)
q_asp = sorted(q_asp.items(),key=lambda x:x[1],reverse=True)
q_php = sorted(q_php.items(),key=lambda x:x[1],reverse=True)
q_jsp = sorted(q_jsp.items(),key=lambda x:x[1],reverse=True)
q_dir = sorted(q_dir.items(),key=lambda x:x[1],reverse=True)

f2 = open('../q_asp.txt', 'w')
for i,k in q_asp:
#	if k == 0:
#		pass
#	else:
#		f2.write(i + "\t" + str(k) + "\n")
	f2.write(i + "\t" + str(k) + "\n")
f2.close()

f3 = open('../q_aspx.txt', 'w')
for i,k in q_aspx:
#	if k == 0:
#		pass
#	else:
#		f3.write(i + "\t" + str(k) + "\n")
	f3.write(i + "\t" + str(k) + "\n")
f3.close()

f4 = open('../q_php.txt', 'w')
for i,k in q_php:
#	if k == 0:
#		pass
#	else:
#		f4.write(i + "\t" + str(k) + "\n")
	f4.write(i + "\t" + str(k) + "\n")
f4.close()

f5 = open('../q_dir.txt', 'w')
for i,k in q_dir:
#	if k == 0:
#		pass
#	else:
#		f5.write(i + "\t" + str(k) + "\n")
	f5.write(i + "\t" + str(k) + "\n")
f5.close()

f6 = open('../q_jsp.txt', 'w')
for i,k in q_jsp:
#	if k == 0:
#		pass
#	else:
#		f6.write(i + "\t" + str(k) + "\n")
	f6.write(i + "\t" + str(k) + "\n")
f6.close()

        查看处理后的结果,根据个人删除出现次数较少的。

f5.png

        Windows服务器不区分大小写,如果想要更节省时间,先把所有的字典转化为小写在进行处理。这就需要扫描前先判断是Windows和Linux。

三、子域名字典整理

        子域名收集就相对简单多了,从多个子域名扫描工具中将字典进行去重,字域名搜集的越多越好,可进行攻击的面越大。

image.png

FuzzDomain工具扫描时自动生成字典,指定扫描字域名的字符及位数,并且可扫描三级域名。

image.png

        千万不能忽略通过搜素引擎去搜集字域名。(代码水平比较水,大佬请绕过)

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

site = []
lagestpage = 76
count = ''
domain = "baidu.com"

for i in range(lagestpage):
    Page = (i) * 10
    url = "http://www.baidu.com/s?wd=site:"+domain+"&pn="+str(Page)
    try:
        html = urlopen(url)
    except HTTPError as e:
        print(e)
    try:
        bs0bj = BeautifulSoup(html.read(), "html.parser", from_encoding="iso-8859-1")

        subdomain = bs0bj.findAll("a",{"class":"c-showurl"})
        for name in subdomain:
            for i in name.get_text().split('/'):
                if domain in i:
                    site.append(i)
                    print(i)
        currpage = bs0bj.findAll("strong")
        if count == currpage:
            break
        else:
            count = currpage
    except AttributeError as e:
        print(e)

print("\n--------------------------------\n")

for i in list(set(site)):
	print(i)

print("\n--------------------------------\n")

四、用户密码字典整理

        各种爆破工具里面密码字典进行整合(kali里面比较多),将社工库里的密码也可整合进来,按照出现的次数进行排序。然后在排名前多少。

image.png

        常见用户名字典,从互联网上下载中国姓名排行榜,在通过某网站将汉字转化为拼音。

image.png        常见管理后台账号

image.png

五、总结

        字典整理完成在配合自己顺手工具进行使用。

关注我们

Tide安全团队正式成立于2019年1月,是以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或关注公众号:

ewm.png

来源:freebuf.com 2019-08-12 21:13:23 by: vlong6

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论