资源发现属于信息收集的一部分,善于发现隐藏信息,如隐藏目录、隐藏文件等,可提高渗透测试的全面细致性。接下来就用 Python 实现敏感目录的发现。在渗透测试过程中,资源发现是极其重要的一环。具备好的资源发现能力能够令整个工作事半功倍。
在渗透测试过程中进行目录扫描是很有必要的,例如,当发现开发过程中未关闭或者忘记关闭的页面,可能就会发现许多可以利用的信息,接下来编写一个基于字典的目录扫描脚本
要进行网页的目录扫描,就需要进行网页访问,所以先导入 requests 模块备用,然后等待用户输入 url 和字典

1
2
3
4
5
6
import requests
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
}
url = input("url:")
txt = input('php.txt')

当用户没有输入字典时,默认打开根目录的 php.txt,然后将字典中的内容放进队列中:

1
2
3
4
5
6
7
8
9
10
11
url_list = []
if txt == "":
txt = "php.txt"
try:
with open(txt,'r') as f:
for a in f:
a = a.replace('\n','')
url_list.append(a)
f.close()
except:
print("error!")

将队列中的内容拼接到 url 中组成需要验证的地址,通过返回值来判断是否存在此目录

1
2
3
4
5
6
7
8
9
10
11
for li in url_list:
conn = "http://" + url + "" +li

try:
response = requests.get(conn,headers = headers)
print("%s---------------%s" % (conn,response))
except error.HTTPError as e:
print('%s---------------%s' %(conn,e.code))
except error.URLError :
print("域名访问失败!")
exit(1)

原理比较简单,可以理解为用字典进行的暴力破解,就是通过需要请求的 url 和字典中的可能存在泄露的目录进行拼接以后挨个访问,用返回的状态码来显示目录是否存在