第一章-信息收集
第一节 收集域名信息
1.1 域名介绍
域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
例如:学院域名:51cto.com
对于edu.51cto.com 以及www.51cto.com是该域名对应的子域名,而edu和www都是对应的主机头。
浏览网站过程:(从DNS服务器获得指定域名对应的IP地址)
1.2 Whois介绍
whois是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)
不同域名后缀的whois信息需要到不同的whois数据库查询。如.com的whois数据库和.edu的就不同。每个域名或IP的WHOIS信息由对应的管理机构保存,例如,以.com结尾的域名的WHOIS信息由.com域名运营商VeriSign管理,中国国家顶级域名.cn域名由CNNIC(中国互联网络信息中心)管理
WHOIS协议。其基本内容是,先向服务器的TCP端口43建立一个连接,发送查询关键字并加上回车换行,然后接收服务器的查询结果。
1.3 Whois查询
Whois查询的重要性:通过Whois查询可以获得域名注册者邮箱地址等信息。一般情况下对于中小型网站域名注册者就是网站管理员。利用搜索引擎对Whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
Whois查询方法:
1、Web接口查询:https://whois.aliyun.com/ 、 https://www.whois365.com/cn/http://whois.chinaz.com/ 、 https://whois.aizhan.com/
2、通过Whois命令行查询。
在Kali linux下自带了Whois查询工具,通过命令 whois 域名 进行查询。
查找学院网站 51cto.com域名注册商邮箱,域名注册者邮箱。
1.4 备案信息查询
ICP备案介绍:Internet Content Provider网络内容提供商。
《互联网信息服务管理办法》指出互联网信息服务分为经营性和非经营性两类。国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案手续。未经国家机关单位许可备案,不得在中华人民共和国境内从事非经营性互联网信息服务。
备案好处:为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备案的话,很有可能被查处以后关停。
ICP备案查询方法:
Web接口查询:http://www.beianbeian.com/ http://www.miitbeian.gov.cn/publish/query/indexFirst.actionhttps://www.tianyancha.com/
第二节 收集子域名信息
2.1 子域名介绍
顶级域名:是".com"、".net"、".org"、".cn"等等。
子域名(Subdomain Name),凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
我国在国际互联网络信息中心正式注册并运行的顶级域名是.cn,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个, 包括用于科研机构的.ac;用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov;用于互联网络信息中心和运行中心的.net;用于非盈利组织的.org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。
例如:www.snnu.edu.cn
2.2 挖掘子域名重要性
子域名是某个主域的二级域名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。
例如:www.xxxxx.com 主域不存在漏洞,并且防护措施严密。
而二级域名 edu.xxxxx.com存在漏洞,并且防护措施松散。
2.3 子域名挖掘方法
1、子域名挖掘工具 如:Maltego CE、wydomain、subDomainsBrute、dnsmaper、Layer子域名挖掘机。
2、搜索引擎挖掘 如: 在Google中输入 site:sina.com
3、第三方网站查询:http://tool.chinaz.com/subdomain、https://dnsdumpster.com/
4、证书透明度公开日志枚举:https://crt.sh/ 、http://censys.io/
5、其他途径:https://phpinfo.me/domain 、http://dns.aizhan.com
2.4 刷洞思路
针对某个具体SRC进行挖洞,如果直接针对主域进行渗透测试很可能是很难达到挖掘的效果。此时可以搜集对应的子域名,然后批量探测某些具体漏洞,从而更加快速容易的发现一些漏洞。之后将漏洞提交对应SRC获取奖金。
针对补天刷洞思路:对应没有指定厂商的刷洞,可以根据某些具体漏洞,通过URL采集获取目标,编写探测脚本批量探测,快速高效的刷洞。
注意:无论如何,都要保持警惕,不要触及不该触及的内容,不要影响公司业务,只做漏洞探测内容,确定存在漏洞即可。适可而止。
挖洞高峰期:在互联网上曝出某些新漏洞的时候,会有大量的该漏洞提交到漏洞平台获取奖金。
第三节 收集Web站点信息
3.1 CMS指纹识别
CMS(内容管理系统),又称整站系统或文章系统。用于网站内容管理。用户只需要下载对应的CMS软件包,部署搭建,就可以直接利用CMS,简单方便。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。
常见CMS:dedecms(织梦)、Discuz、Phpcms等。
CMS识别工具:
1、在线工具 http://whatweb.bugscaner.com/look/ 、 http://www.yunsee.cn/finger.html
2、本地工具 whatweb、
御剑web指纹识别程序(https://pan.baidu.com/share/link?shareid=437376&uk=3526832374)、
大禹CMS识别程序 https://github.com/Ms0x0/Dayu
3.2 针对CMS漏洞查询
对于查询到的CMS可以利用 https://bugs.shuimugan.com 网站查询指定CMS的漏洞。
3.3 敏感目录信息
针对目标Web目录结构和敏感隐藏文件探测是非常重要的。在探测过程中很有可能会探测出后台页面、上传页面、数据库文件、甚至是网站源代码文件压缩包等。
探测工具:
1、御剑后台扫描工具
2、wwwscan命令行工具
3、dirb命令行工具
4、dirbuster扫描工具
3.4 wordpress测试
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
针对WordPress测试,可以使用wpscan工具进行对应安全测试。
第四节 收集端口信息
4.1 端口介绍
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
例如计算机中的80端口、21端口、23端口等。在计算机中每一个端口代表一个服务。在Windows命令行中使用 netstat -anbo 显示开放端口。
4.2 端口信息收集
对于收集目标机器端口状态可以使用工具来进行测试。工具原理:使用TCP或者UDP等协议向目标端口发送指定标志位等的数据包,等待目标返回数据包,以此来判断端口状态。
1、使用nmap 探测。 nmap -A -v -T4 目标
2、使用masscan探测。
3、使用在线网站探测 http://tool.chinaz.com/port/。
4.3 端口攻击
针对不同的端口具有不同的攻击方法。
例如:针对远程连接服务端口
端口 | 端口说明 | 攻击方法 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | rdp远程桌面 | Shift后门、爆破 |
5900 | VNC远程连接 | 弱口令、RCE |
5632 | PcAnywhere远程连接 | 嗅探、代码执行 |
对于扫描到的端口可以在搜索引擎中查找对应的攻击方法进行测试。
4.4 防御措施
对于端口攻击来说只要端口开放并且可以连通,那么就可以利用对应的方式进行攻击测试。
防御措施:
1、关闭不必要的端口;
2、对重要业务的服务端口设置防火墙;
3、加强员工信息安全意识,经常性更换用户密码;
4、经常更新软件,打补丁(patch)。
第五节 收集敏感信息
5.1 敏感信息收集重要性
针对某些安全做的很好的目标,直接通过技术层面是无法完成渗透测试。在这种情况下,可以利用搜索引擎搜索目标暴露在互联网上的关联信息。例如:数据库文件、SQL注入、服务器配置信息、甚至是通过Git找到站点泄露源代码、以及Redis等未授权访问、robots.txt等敏感信息。从而达到渗透测试的目的。
知己知彼,百战不殆。某些情况下,收集到的信息会对后期进行测试起到帮助重要。如果通过收集敏感信息直接获得了目标系统的数据库访问权限,那么渗透测试任务也就结束一大半了。因此在进行技术层面情况下的测试之前,应该先进行更多的信息收集。
5.2 Google Hacking语法
google hack是指使用Google等搜索引擎对某些特定的网络主机漏洞(通常是服务器上的脚本漏洞)进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。
关键字 | 含义 |
---|---|
site | 指定搜索域名 例如:site:baidu.com |
inurl | 指定URL中是否存在某些关键字 例如:inurl:.php?id= |
intext | 指定网页中是否存在某些关键字 例如:intext:网站管理 |
filetype | 指定搜索文件类型 例如:filetype:txt |
intitle | 指定网页标题是否存在某些关键字 例如:intitle:后台管理 |
link | 指定网页链接 例如:link:baidu.com 指定与百度做了外链的站点 |
info | 指定搜索网页信息 info:baidu.com |
Google hacking数据库:https://www.exploit-db.com/google-hacking-database/
例如:查询Access数据:filetype:mdb "standard jet" (password | username | user | pass)
5.3 HTTP响应收集Server信息
通过HTTP或HTTPS与目标站点进行通信中,目标响应的报文中Server头和X-Powered-By头会暴露目标服务器和使用的编程语言信息,通过这些信息可以有针对的利用漏洞尝试。
获取HTTP响应的方法:
1、利用工具 如:浏览器审计工具、Burpsuite等代理截断工具。
2、编写Python脚本 requests库 参考链接:http://www.python-requests.org/en/master/
import requests
r = requests.get('目标')
print(r.headers)
5.4 Github信息泄露
Github是一个分布式的版本控制系统,目前拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。众所周知,当今是大数据时代,大规模数据泄露事情一直在发生,从未停止过,但有些人不知道的是很多时候一些敏感信息的泄露其实是我们自己无意中造成的,然而一个小疏忽,往往却造成一系列连锁反应。Github上敏感信息的泄露,就是一个典型的例子,Github虽然方便开发者,但其中也埋藏着一些安全隐患。
Github之邮件配置信息泄露:site:Github.com smtp、site:Github.com smtp @qq.com
Github之数据库信息泄露:site:Github.com sa password、site:Github.com root password、
site:Github.com User ID=’sa’;Password
Github之svn信息泄露:site:Github.com svn、site:Github.com svn username
Github之综合信息泄露:site:Github.com password、site:Github.com ftp ftppassword、
site:Github.com 密码、site:Github.com 内部
第六节 收集真实IP地址信息
6.1 CDN介绍
CDN的全称是Content Delivery Network,即内容分发网络。
6.2 判断CDN存在
通过Ping判断是否存在CDN。
通过设置代理或者利用在线ping网站来使用不同地区的Ping服务器来测试目标。http://ping.chinaz.com/
6.3 绕过CDN
如果目标没有使用CDN,可以直接利用ping获得IP地址。或者利用在线网站:http://www.ip138.com/
如果目标使用CDN,需要绕过CDN来获取真实IP地址。
1、内部邮箱源 收集到内部邮箱服务器IP地址
2、网站phpinfo文件 phpinfo.php
3、分站IP地址,查询子域名 CDN很贵,很有可能分站就不再使用CDN。
4、国外访问 https://asm.ca.com/en/ping.php
5、查询域名解析记录 https://viewdns.info/
6.4 验证IP地址
利用IP地址对Web站点进行访问,如果正常表名是真实IP地址。否则不为真。
第七节 shodan搜索引擎介绍
7.1 信息收集介绍
信息收集对于渗透测试可以说是重中之重,正所谓“知己知彼,百战不殆”。所以我们的信息收集也是一样,收集的信息自然也是越多越好。
对于目标的信息收集,主要针对目标的服务器系统、数据库系统、中间件系统、应用程序系统、以及边界设备等信息。以及收集针对于系统管理员的信息收集。
7.2 信息收集方式
对于信息收集方式,可以分为以下两类:
1、主动信息收集:直接与目标进行交互,通过对交互过程中的信息进行收集。
例如:Nmap扫描、Burpsuite站点地图收集等。
2、被动信息收集:通过第三方引擎与目标交互,或不予目标交互查询具体数据库,获得目标的信息。
例如:Google Hacking、Shodan查询等。
7.3 Shodan搜索引擎介绍
虽然目前人们都认为谷歌是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。
Shodan网址:https://www.shodan.io/
7.4 Shodan注册与登录
Shodan注册链接:https://account.shodan.io/register
Shodan登录链接:https://account.shodan.io/login?continue=https%3A%2F%2Faccount.shodan.io%2F
第八节 shodan搜索技巧
8.1 Shodan搜索Webcam
在Explore搜索框中输入webcam进行搜索。
8.2 Shodan搜索指定端口
通过关键字 port 指定具体端口号。例如:port:22 指定搜索22号端口的主机信息。
8.3 Shodan搜索指定IP地址
通过关键字 host指定具体IP地址。例如: host:61.135.169.121 指定探测IP地址主机信息。
8.4 Shodan搜索具体城市
利用city:城市名指定搜索具体城市的内容。例如: city:hangzhou port:22
第九节 shodan命令行搜索
9.1 Shodan安装命令行
easy_install shodan
9.2 Shodan初始化命令行
初始化Shodan就是给Shodan初始化API Key。API Key: hHg9HmLgZuqBc1VsNqWGd10ilpyveesb
9.3 Shodan启动与查找具体服务数量
使用shodan count Apache
使用shodan count tomcat
9.4 Shodan命令行搜索功能
利用 shodan search microsoft iis 6.0
第十节 shodan命令行补充
10.1 Shodan获取指定IP地址信息
shodan host ip地址
10.2 Shodan获取账号信息
利用shodan info 查看自身账户的信息。
10.3 Shodan获取自身外部IP地址
使用shodan myip
10.4 Shodan检测是否有蜜罐
利用 shodan honeyscore 查看是否有蜜罐保护。
第十一节 Python-shodan使用介绍
11.1 Python-shodan初始化API Key
利用Python-shodan连接API Key
11.2 Python-shodan search方法
利用shodan api 查询信息。查看参数与返回结果https://developer.shodan.io/api
11.3 Python-shodan IP查询
针对指定IP进行查询。可以在https://developer.shodan.io/api查询参数
11.4 Python-shodan 查询
利用Python-shodan编写基础查询脚本。