本帖最后由 jiangmingzi 于 2024-3-24 15:59 编辑
miniboom 刨洞安全团队 2024-02-27 12:12 广东
信息收集决定了你的测试范围,收集需要广度,在兼顾广度的基础上,也要精细化,否则会面临大量资产而不知道从哪里下手,所以是既要广泛收集,也要精细化梳理目标资产。 不过一开始就要做到同时具备广度和精细化是不太现实的事情,至少说,是不理性的选择,因为要这么做就说明需要做大量的信息收集内容,花费很长时间但没有漏洞产出,不仅容易错过垂手可得的成果,而且整个过程会很无聊。 当然,如果你可以让信息收集做到自动化,是可以一步到位的,不过那是另外一个话题,今天我们只讨论信息收集的流程和思路。 我的方法论就是循序渐进,先优先照顾广度,再分轮数依次精细化,力求每一轮信息收集都会有所收获,如果没有,下一轮将会更加精细。 废话结束,让我们进入正式的环节。 子域名收集市面上有很多子域名的工具,我首推 subfinder。将主域名列表放在 targets.txt 里,结果将保存在 subs_results.txt ./subfinder -dL targets.txt -all -o subs_results.txt我一般喜欢继续使用其他工具来继续做子域名作为 subfinder 的补充,比如 oneforall 思考
在使用工具跑过之后,我们得到了一个有大量子域名的文件 subs_results.txt,接下来做什么呢?直接查看这些子域名是否开启了 80 和 443 端口吗?不是,因为经常会有其他端口伴随着域名,比如 xxx.com:8080,xxx.com:8089,也会有一些重要的系统运行在上边,所以如果我不想漏掉每个子域名下的系统资产,下一步探测端口是一个不错的选择。 那么接下来还有两个问题,我接下来需要用什么工具来做端口扫描,需要做全量端口的扫描吗? 我的回答是,使用 kscan,暂时不做全量端口扫描,可以先选择 top 1000 端口。如果这一轮信息收集没有成果,我们下一轮将进行全量端口扫描。 端口指纹使用 kscan 的好处,是它集成了很多优秀的工具,不仅可以扫描端口,还可以进行指纹识别,抓取 title 信息等。 ./kscan -t subs_results.txt --top 1000 -oC kscan_port_results.csv
这样,我们就得到了 kscan_port_results.csv 这样的列表,里边包含了端口,url,协议等信息。 很好,这一轮下来基本上可以发现一些常规的端口的信息,会看到包括 ssh、ftp、smtp 还有 mysql 等等端口信息。 思考
现在我们手上已经有域名和部分 ip 的开放端口,以及端口指纹,是 http、ssh、ftp、或者是 smtp、mysql 等等。 数据库端口、ssh、ftp 等等我们可以采取爆破的方式,如果是高危端口 445 之类的,我们可以使用 ms0708 等等进行渗透测试,不过这里我们优先处理 http、https 这类协议,因为它们往往部署了接口、web 等系统,我们也更容易渗透出成果。 所以我们可以在 xlsx 表中,在 service 那一列中筛选出 http、https 这些内容,拷贝出来准备接下来的网页指纹识别,放在 http_subdoamins.txt 当中。 网页指纹识别现在,我们已经有了 http_subdoamins.txt 里的 http://subdomain:port or https://subdomain:port 形式的 URL,所以我们接下来回答这些问题。
因为有 EHole,回答以上问题并不复杂。 ./ehole finger -l http_subdoamins.txt -o http_subdoamins_finger.xlsx
在这里,ehole 会帮助我们回答以上问题,不仅可以识别指纹,url,waf 同时也可以列出需要重点关注的系统。 发现更多URL现在,我们已经有了 http://subdomain/, http://subdomain:port/, https://subdomain:port/ 形式 的URL,接下来我们需要发现更多的 url,可以通过爬虫,目录爆破等方式来做,不过好在有 rad 这个工具,可以很好的帮助我们爬取一个网站的 URL,同时也会给我们发现一些接口内容信息。 ./rad --url-file http_subdomains.txt --text-output http_subdomains_urls.txt
然后我们的发现了大量的 URL,有的是接口的 url,有待后续发现参数进行渗透测试,有的可能是敏感信息,比如 .json 等等,总之,现在我们已经有了不同子域名+端口+ path 路径的 URL URL截图经过以上操作,我们已经有了大量的 URL,我们需要查看哪些是管理后台登陆界面类,哪些是敏感信息,哪些是静态页面等等,所以我们需要对以上 URL 进行截图,这里我使用 gowitness 来操作
./gowitness file -f ../findjs_url/http_subdomains_urls_without_http.txt -t 200
这样经过 gowitness 截图之后,再启动
./gowitness server
访问 127.0.0.1:7171 就可以看到所有 URL 的截图界面,根据界面和个人的渗透经验去进行渗透。 思考
在这一步,我们已经获得很多 web 页面,有的是 403,有的是 200,有的 200 界面是管理后台,有的只是展示静态页面,有的是 json 文件下载,有的是接口返回信息等等。 到这一步,我们基本上可以进行第一轮的渗透测试了,可以挂上被动扫描器对管理后台进行弱口令检查,SQL 注入尝试,也可以进行逻辑测试,接下来怎么做,完全是基本上属于个人渗透测试经验而采取不同的方式来测试,暂时不提。 不过值得注意的是,其实还有更加精细化和更广范围的信息,比如 js 发现敏感信息,发现域名真实 ip,ip 的 C段 等等进一步扩大和精细化工作我们还没做,不过就像前面我们说的,这只是第一轮的简单信息收集,我们可以先经过一轮渗透测试,看看有没有成果,如果没有成果,也给了我们进一步细化信息收集工作的理由,如果有成果,那更有动力提交漏洞,给到我们激励。 本文作者:miniboom原文地址:https://www.miniboom.cn/post/web3-information-gather/
|