搞渗透的人应该都清楚,给一个目标站点做测试,第一步就是信息收集,通过各种渠道和手段尽可能收集到多的关于这个站点的信息,帮助我们更多的去找到渗透点。而信息收集的方式有很多,大致有搜索引擎、域名注册网站、shodan、github信息收集工具、网站公告等等,甚至还有社工的方式。
1.拿到一个待检测的站。你觉得应该先做什么。
收集信息:whois、网站源 IP、旁站、C 段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息。
1.whois查询
可用信息:邮箱地址,注册人,作者信息
www.whois.aliyun.com //阿里
www.whois365.com/cn/ //全球查
http://whois.chinaz.com //站长
http://whois.aizhan.com //爱站
kali自带
命令:whois www.xxx.com
2.备案查询
注册人姓名
http://beianbeian.com //IPC备案查询
http://tianyancha.com //天眼查
http://beian.miit.gov.cn //工信部
3.子域名收集
工具:
- Subbrute //快速枚举 DNS 记录和子域名。
- Nmap - 不仅仅只是端口扫描,可以使用脚本枚举子域名。使用
--script dns-brute
脚本。 - 谷歌语法:site:github.com
- wydomain2 - 猪猪侠的作品,好用不解释。
- Layer 子域名挖掘机 //法师的作品,因为是用.NET写的,所以基本只能在Win下使用,也是相当好用的。
网站:
- http://tool.chinaz.com/subdomain //站长工具
- https://censys.io //证书查找
- https://phpinfo.me/domain //在线子域名爆破工具
- https://virustotal.com/ //cdn缓存查询 也提供恶意程序分析
- https://www.shodan.io //无需多言,不仅可以看到子域名信息,还会显示对应的服务器版本及其他更多数据。
原理
子域名发现的原理无非就是以下几种:
- 利用现有搜索引擎:
- 网页搜索引擎(如:谷歌等)
- 空间搜索引擎(如:Shodan等)
- SSL证书(如:crt.sh等),这个主要针对大站
- 进行爆破,而爆破又分为两种:
- 直接访问子域名
- 利用 DNS 请求
- 其他泄露信息:
- 如 crossdomain.xml 文件等
- 爬虫递归爬取等
- DNS域传送漏洞等
4.CMS识别
尽量搞明白web程序是用了什么CMS或者是用什么框架开发的
比如Thinkphp、Strust2。都有成熟的POC
在线识别:
http://whatweb.bugscaner.com/look/ //识别很快python写的网站
www.yunsee.cn //云悉
本地识别
御剑cms 大禹cms
kali
whatweb url
5.敏感目录扫描
工具
御剑、Dirmap、wwwscan、DirBuster、Dirsearch、cansina。
kali
dirb url //命令行使用
dirbuster //界面化工具
wordpress:
1 | wpscan -u http://www.baidu.comcom //kali扫描WordPress漏洞 |
6.端口
端口信息收集:
Windows:
1 | netstat -anbo //windows查看开放端口及对应进程,-a查看所有连接和侦听端口,-n以数字方式显示地址和端口号,-b显示端口连接的程序,-o显示关联pid |
Linux:
1 | netstat -tunlp // -t (tcp) 仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化为数字 -l 仅列出在Listen(监听)的服务状态 -a (all)列出所有服务状态-p 显示建立相关链接的程序名 |
端口探测
本地工具
1 | nmap -A -v -T4 <目标IP> //查看开放端口 |
在线工具:
1 | http://tool.chinaz.com/port //站长工具 |
常见端口漏洞
1 | 21 FTP 匿名访问,弱口令 |
7.敏感信息收集
Google Hack
1 | filetype: 搜索制定类型的文件,例如:filetype:doc.将返回所有以doc结尾的文件URL。 |
查看响应头
F12查看系统,中间件版本。
通过Github搜索获取敏感信息
site:Github password
8.真实IP
IP查询
https://www.ipip.net 查询该ip的具体信息
https://site.ip138.com ip反查域名/域名对应ip
http://www.cip.cc/ 本机ip/其他ip简单信息
判断是否为CDN
1、多地ping
如果多地ping同一网站,出现多个解析IP地址,那么说明使用了CDN进行内容分发~
2、nslookup
使用nslookup查看域名解析对应的IP地址,如果解析到多个IP地址则说明使用了CDN~
从上面可以看到解析到多个IP地址说明使用了CDN~
3、使用CDN查询工具进行查看
https://www.ipip.net/ip.html //高精度IP查询
绕CDN查真实IP地址
1、域名历史解析记录
查看IP与域名绑定的历史记录,有可能会存在使用CDN前的记录信息
1 | https://dnsdb.io/zh-cn/ |
2、查询子域名
很多站长也许只会对主站或者流量大的子站点加 CDN,很多小站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过子域名查询对应的 IP 来辅助查找网站的真实IP。
3、漏洞利用
目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
XSS盲打,命令执行反弹shell,SSRF等。
无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
4、网站邮件订阅查找
让服务器主动连接我们告诉我们它的IP,不过使用的是合法的服务,如RSS邮件订阅,很多网站都自带sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
5、使用国外主机解析域名
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。
6、网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
7、F5 LTM解码法
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。
8、利用网站返回的内容寻找真实原始IP
如果原始服务器IP也返回了网站的内容,那么可以在网上搜索大量的相关数据。
浏览网站源代码,寻找独特的代码片段。在JavaScript中使用具有访问或标识符参数的第三方服务(例如Google Analytics,reCAPTCHA)是攻击者经常使用的方法。
9、利用SSL证书寻找真实原始IP
以CloudFlare这款CDN加速器举例:假如你在 abc.com 上托管了一个服务,原始服务器IP是136.23.63.44。 而CloudFlare则会为你提供DDoS保护,Web应用程序防火墙和其他一些安全服务,以保护你的服务免受攻击。
为此,你的Web服务器就必须支持SSL并具有证书,此时CloudFlare与你的服务器之间的通信,就像你和CloudFlare之间的通信一样,会被加密(即没有灵活的SSL存在)。这看起来很安全,但问题是,当你在端口443(https://x.x.x.x:443) 上直接连接到IP时,SSL证书就会被暴露。
此时,如果攻击者扫描0.0.0.0/0,即整个互联网,他们就可以在端口443上获取在 aaa.com上的有效证书,进而获取提供给你的Web服务器IP。
目前Censys工具(https://censys.io/) 就能实现对整个互联网的扫描,Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。
Censys搜索引擎能够扫描整个互联网,Censys每天都会扫描IPv4地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告。
而攻击者唯一需要做的就是把上面用文字描述的搜索词翻译成实际的搜索查询参数。
Censys证书查询搜索步骤如下:
1、aaa.com 证书的搜索查询参数为:parsed.names:aaa.com
只显示有效证书的查询参数为:tags.raw:trusted
攻击者可以在Censys上实现多个参数的组合,这可以通过使用简单的布尔逻辑来完成。
2、组合后的搜索参数为:parsed.names: aaa.com and tags.raw: trusted
3、Censys将向你显示符合上述搜索条件的所有标准证书。要逐个查看这些搜索结果,攻击者可以通过单击右侧的”Explore”,打开包含多个工具的下拉菜单。What’s using this certificate? > IPv4 Hosts;
10、通过shodan favicon.ico获取真实IP
在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站。(其实这种方法是看运气的,如果shodan中收录了目标网站则可以查到)
1 | import mmh3 |
计算出的hash用 http.favicon.hash:hash 搜索
9.shodan
shodan网站:www.shodan.io
webcam //网络摄像头
搜索技巧:
搜索指定端口:port:3389
搜索指定IP地址:host:61.135.169.121
搜索具体城市开放具体端口:city:hangzhou port:22
搜索指定服务器:microsoft iis 6.0 / apache
kali:
获取自身外部ip:myip
查询指定IP:host xxxx (网页版可能不会显示)
查看蜜罐保护:shodan honeyscore xxxx
python-shodan:
初始化api key
python-shodan search 方法:
- result = api.search(‘apache’)
- print(result[‘total’])
- 查看api键值:https://developer.shodan.io/api
- python-shodan查找ip:
1 | 常用 Shodan 库函数 |
10.旁站
看看网站有没有旁站
https://phpinfo.me/bing.php //查询IP 查询旁站
对旁站进行信息收集 为下面的以后的漏洞挖掘做准备。
11.判断系统版本
最快速的就是利用Windows和Linux的对大小写敏感来判断
Windows对大小写不敏感 Linux对大小写敏感
利用TTL起始值判断操作系统,不同类型的操作系统都有默认的TTL值
TTL起始值:Windows xp(及在此版本之前的windows) 128 (广域网中TTL为65-128)
Linux/Unix64(广域网中TTL为1-64)
某些Unix:255,网关:255
使用nmap识别操作系统:nmap -O 192.168.0.1 #参数-O表示扫描操作系统信息,nmap基于签名,指纹,特征,CPE编号等方法去判断目标系统的信息 。
11.目标用的是哪种web服务器 具体版本号是多少
首先手工测试目标web服务器是否允许一些危险请求的方法:put move options
Apach 2.2.x/2.4.x
Nginx
IIS 6.x/7.x/8.x 尝试webdav写及远程执行CVE-2017-7269 尝试短文件漏洞目录文件扫描
Tomcat 6.x/7.x/8.x 曾经出现的远程命令执行多 默认的管理面板 弱口令 部署war包
Jboss 未授权访问进入JBoss后台进行文件上传的漏洞,例如:CVE-2007-1036,CVE-2010-0738,CVE-2005-5750 Java反序列化进行远程代码执行的漏洞,例如:CVE-2015-7501,CVE-2017-7504,CVE-2017-12149,CVE-2013-4810。 还有一种 JBoss seam2的模板注入CVE-2010-1871漏洞。
Resin
是否是集成环境 XAMPP LNMP
12.目标站有没有WAF
有没有WAF,是什么类型的WAF 加入敏感特征看看会不会拦截 FUZZ测试