这篇文章主要跟大家分享一下平时渗透过程中常用的一些方法,第一次写这类文章不是很擅长,之前更多的是写些偏向实战类的,不对的地方希望大家能够指出!
同时也希望能和大家多多交流。
子域名枚举
子域名枚举这块个人主要使用一些工具进行查找eg:OneForAll、subDomainsBrute、Sublist3r等,然后结合搜索引擎的谷歌黑客语法进行辅助查找,另外也会在github上进行查找。主要跟大家推荐一下OneForAll这款工具,因为这款工具有一个优势是它可以将收集到的子域名输出到一份表格中,方便我们后续对数据进行筛选和处理从而快速找到突破口,如下图所示:
此时我们可以根据表格中的status、title等列对目标进行初步筛选,寻找突破口来进行测试。
查找真实ip以及c段
查找真实ip以及c段的话,首先我们得确定目标网站是否使用cdn之类的,具体方法的话网上很多这种测试方法,在这也就不浪费大家的阅读时间了。个人主要分享一下自己平时常用的两种查找真实ip的方法:www方法和直接使用搜索引擎搜索目标网站标题的方法(如果目标的网站标题比较特别的话),我们可以使用fofa之类进行搜索(eg:title="XXX")。其中www的测试方法很简单,假如目标的域名是这种格式的www.XXX.com的话我们只需要直接ping:XXX.com即可,有可能就会得到它的真实ip,如下图所示。
端口服务信息
在收集端口服务信息这块,个人一般会使用nmap、masscan等工具,个人一般会首先使用masscan对目标IP(或者网段)进行全端口扫描,然后再结合nmap对存活主机开放的端口进行扫描,进一步查找对应端口服务存在的漏洞即可。
敏感目录及文件
敏感目录和文件也是渗透测试中很重要的一个步骤,个人主要会使用dirsearch和dirb这两款工具,主要会使用它们的代理扫描功能,我们可以使用burp进行监听,然后将他们的扫描结果直接输出到burp中,方便我们查找分析漏洞。如下图所示:
js信息收集
js信息也是web渗透中常见的一个突破口,因为现在的一些大厂在web开发中经常采用前后端分离的方式开发,前后端双方定义接口,然后前端通过访问后端的接口来获取信息,如果这个过程中缺乏一些安全措施的话,就会出现一些漏洞(eg:未授权访问)。所以我们在渗透的过程中需要注意前端的一些js文件,然后通过js文件来查找接口发现一些敏感信息。工具的话自己主要会用LinkFinder之类的,手工会查找一些重要的js文件eg:app.xxx.js和一些配置文件。下面给大家分享一个前不久在某src提交的一个漏洞,刚开始发现了一个可疑的子域名,接着对其进行目录爆破,发现了后台地址,最后在js文件中发现了管理员密码,成功的登录该系统。如下图所示:
github信息泄露
github信息泄露也是我们在渗透测试中需要特别注意的一个地方,我们可以通过在github中搜索目标的一些关键字进行查找eg:
("www.xxx.com"
Password、FTP、API_key、login、secret_key)等可能也会发现管理员的用户名和密码,当然也可以使用一些自动化的工具进行查找。
查找历史漏洞
在对目标渗透之前,
我们可以
先在网上查找该目标之前爆出过的一些历史漏洞信息eg:乌云漏洞库之类的网站,通过搜索目标名称查找目标之前爆出过的漏洞,在这个过程中我们可能会发现目标的一个子域名之前爆出过很多漏洞,可能现在它都已经修复了,但同时也证明了这个系统是他们的一个脆弱系统,这时候我们就可以以它为突破口继续渗透。另外也会发现目标之前所使用的一些中间件之类的信息,而这类中间件的话目标后续一般不会去改变,所以这也是间接收集信息的一种方式。
web应用指纹信息
指纹识别这块,个人一般使用在线的网址进行识别(eg:云悉)和一些浏览器插件(eg:wappalyzer)以及whatweb之类的工具,另外我们也可以渗透过程中关注留意一下html源码,通过查看源码中的一些特定标签eg:
和注释查看中间件的信息和版本。如下图所示:
总结
这篇文章主要跟大家分享了自己在信息收集过程中常用的一些方法。记得某位大佬讲过渗透的本质就是信息收集,可见信息收集在渗透测试过程中的重要性。有时候我们在渗透过程中并不需要具备多么强的绕过waf的能力,仅通过一些信息收集就可以找到突破点,从而拿下目标。