信息收集:
前言:
信息收集是渗透测试除了授权之外的第一步,也是关键的一步,尽量多的收集目标的信息会给后续的渗透事半功倍。收集信息的思路有很多,例如:页面信息收集、域名信息收集、敏感信息收集、子域名收集、端口探测、CMS指纹识别、查找真实IP、敏感目录/文件收集、操作系统识别、社会工程学等。
1)页面信息收集
当拿到一个站点时,从网址的URL观察可以发现一些暴露的信息,比如网址使用的什么语言,例如xxx.php等,然后观察网址底部是否存在一些技术支持信息,例如:使用脚本语言,系统框架,技术支持,关于公司(联系方式、邮箱、地址)、备案号、营业执照、后台登录接口、友情链接等信息。
2)域名信息收集
首先,拿到一个目标站点的域名后,要去查看该域名的注册信息,即该域名的DNS服务器信息和注册人的个人信息等。方法有如下:
Whois查询:
①通过在线网址:站长之家 查询得到注册人的姓名和邮箱信息对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。对中小站点而言,域名所有人很可能就是管理员。
②通过阿里云域名查询
③通过kali自带的whois,输入命令为:whois baidu.com
备案信息查询:
网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他国家,则不需要进行备案。
查询网站:ICP备案查询、天眼查
3)敏感信息收集
对于某些安全做的好的目标来说,直接通过技术层面很难完成渗透,在此情况下,可以利用搜索引擎对目标暴露在互联网上的关联信息进行收集。例如:数据库文件、SQL注入、服务器配置信息、通过github找寻站点泄露源码、Redis未授权访问、Robots.txt等敏感信息。
①谷歌语法:利用Google Hacking的语法,精准的搜索某些网址的主机漏洞,构造特殊关键字来搜索互联网上的相关敏感信息。
site | 找到与指定网站有联系的URL。例如输入Site:family.chinaok.com,返回所有和这个网站有关的URL。 |
intitle | 返回所有网页标题中包含关键词的网页。例如输入intitle:cbi,这样网页标题中带有 cbi 的网页都会被搜索出来。 |
inurl | 搜索包含有特定字符的URL。例如输入inurl:cbi,则可以找到带有 cbi 字符的URL。 |
intext | 搜索网页正文内容中的指定字符。例如输入intext:cbi,将返回所有在网页正文部分包含 cbi 的网页。 |
link | 例如link:thief.one,返回所有和 thief.one 做了链接的URL。 |
filetype | 搜索指定类型的文件。例如输入filetype:cbi,将返回所有以 cbi 结尾的文件URL。 |
. | 单一的通配符。 |
* | 通配符,可代表多个字母。 |
例子:想要获取政府后台,可以构建关键字 site:gov.cn intext:后台管理
例子:寻找网站后台,可以构建关键字intitle:后台 or intitle:管理 or inurl:login.asp、admin.asp
例子:搜索特殊的URL,可以找到网站的一些漏洞,inurl:upload.asp or inurl:upload_soft.asp
例子:搜索网站指定类型的文件,例如Filetype:mdb搜索网站数据库文件
例子:利用语法搜索C段服务器信息,例如site:221.34.45.*
主要还是组合使用,才会威力翻倍!!
该网站记录了更多的搜索方式https://www.exploit-db.com/google-hacking-database
②网络空间安全搜索引擎:FOFA、Shdan、zoomeye。其中FOFA一般搜索到的是一些网站的信息,收集到的偏软件类信息比较多;而shodan和zoomeye则是搜索网络在线设备信息,偏向于收集硬件的信息。
FOFA语法:
title="xx"、 | status_code="402"查询服务器状态为402的资产 |
header="xxx"(从http头搜索"xxx")、 | protocol="https"查询https协议资产 |
body="xxx"、 | city="xx"查询指定城市的资产 |
domain="qq.com"(搜索根域名带有qq.com的网站)、 | region="xx"查询指定行政区的资产 |
icon_hash="xxxx"(搜索使用此icon的资产)、 | country="CN"搜索指定国家的编码的资产 |
host=".gov.cn"("从url中搜索.gov.cn")、 | cert="google"搜索整数中带有google的资产 |
port="443"(查找对应443端口的资产)、 | typr=service查询所有协议资产 |
ip="1.1.1.1"(从ip中搜索包含1.1.1.1的网站)、 | os=windows搜索windows资产 |
ip="220.181.11.1/24"(查询ip为220.181.11.1的C段资产) | server=="Microsoft-IIS7.5"搜索IIS7.5服务器 |
app="HIKVISION-视频监控"搜索海康威视设备 | after="2017"&&before="2017-10-01"时间范围搜索 |
③Github信息泄露:itHub作为一款应用最广的开源代码平台,给程序员提供了很多便利,但如果使用不当,比如将包含了账号密码、密钥等配置文件的代码上传了,导致攻击者能发现并进一步利用这些泄露的信息,就是一个典型的GitHub敏感信息泄露漏洞,再如开发人员在开发时,常常会先把源码提交到github,最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。利用.git文件恢复网站的源码,而源码里可能会有数据库的信息。
例子:
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com sa password
site:Github.com root password
4)子域名收集
子域名也称二级域名,是指顶级域名下的域名。如果一个目标网站规模比较大,直接从主站下手很困难,因为主站一般都是重点防护区域 ,这种情况下可以“曲线渗透”,先进入目标的子域,然后再想办法迂回接近真正的目标。
子域名检测工具
Layer子域名挖掘机,直接输入域名就可以进行扫描,它的显示界面也很全面,有域名、解析IP、Web服务器和网站状态,使用起来非常方便,强推这个工具!
subDomainsBrute:是一款基于python语言开发的,高并发的DNS暴力枚举工具,可以用于二级域名收集。支持Python3.5+和Python2.7,推荐使用Python3.5+以上版本。(Python3环境下运行需 安装aiodns库。(aiodns环境 Kali自带,推荐在Kali下使用)
御剑、K8
利用搜索引擎发现子域名
利用谷歌语法site:qq.com查询
通过在线工具集
DNSdumpster:https://dnsdumpster.com/
子域名爆破:https://phpinfo.me/domain/
http://sbd.ximcx.cn/
站长工具:http://tool.chinaz.com/subdomain/
5)端口探测
Nmap:
主机发现
-sL:列表扫描,只需列出要扫描的目标
-sP:Ping扫描,只需确定主机是否处于可以互通的状态
-P0:将所有主机视为是互通状态,跳过主机发现
-PS or PA or PU [端口列表]:TCP SYN/ACK 或UDP发现探测到给定的端口
-PE or PP or PM:ICMP回显、时间戳和网络掩码请求发现探测器
-n:从不执行DNS解析
-R:始终DNS解析
扫描技术
-sS:TCP SYN扫描
优点:执行快,在没有入侵防火墙的网络上每秒钟可以扫描数千个端口,可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态
-sT:TCP connec()扫描
优点:当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。它比SYN扫描效率高
不足:可能会被目标机记录下连接,IDS可能会捕捉到
-sU:UDP扫描
DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。 因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。
可以和-sS结合使用来同时检测两种协议
-sN;-sF;-sX:TCP Null, FIN, Xmas扫描(不经常使用)
优点:它们能躲过一些无状态防火墙和报文过滤路由器,这些扫描类型甚至比SYN扫描还要隐秘一些,但是现如今多数的IDS可以发现它
-sA:TCP ACK扫描
优点:它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。
端口扫描
-p:只扫描指定的端口
-p-:从端口1扫描到65535
-F:快速有限端口扫描 在nmap的nmap-services 文件中(对于-sO,是协议文件)指定您想要扫描的端口。 这比扫描所有65535个端口快得多。
-r:连续扫描端口,不随机
服务及版本探测
-sV:版本探测,也可以用-A同时打开操作系统探测和版本探测
-sR:RPC扫描,这种方法和许多端口扫描方法联合使用
操作系统探测
-O:启用操作系统检测
时间性能
-T0-5:0-5选择,常被与其他参数组合使用
模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。前两种模式用于IDS躲避,Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3 实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
Masscan扫描工具
Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
由于使用工具通常会在目标网站留下痕迹,接下来提供一种在线网站探测方法。
在线网站
http://tool.chinaz.com/port/
ThreatScan在线网站:https://scan.top15.cn/web/portscan
常见端口及说明
常见数据库端口
Mysql | 3306 |
Oracle | 1521 |
Mssql | 1433 |
MongoDB | 27017 |
Redis | 6379 |
远程连接端口
端口号 | 端口说明 | 攻击方向 |
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面连接 | Shift后门(需要winserver2003以下的系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
文件共享服务端口
端口号 | 端口说明 | 攻击方向 |
21/22/69 | Ftp/Tftp文件传输协议 | 允许匿名上传、下载、爆破和嗅探 |
2049 | Nfs服务 | 配置不当 |
139 | Samba | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
Web应用服务端口
端口号 | 端口说明 | 攻击方向 |
80/443/8080 | 常见的web服务端口 | web攻击、爆破、对应服务器版本漏洞 |
7001/7002 | WebLogic控制台 | Java反序列化、弱口令 |
8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSpere控制台 | java反序列化、弱口令 |
4848 | GlassFish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Wen控制面板 | 弱口令 |
邮件服务端口
端口号 | 端口说明 | 攻击方向 |
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破、嗅探 |
143 | IMAP协议 | 爆破 |
网络常见协议端口
端口号 | 端口说明 | 攻击方向 |
53 | DNS域名系统 | 允许区域传送、DNS劫持、缓存投毒、欺骗 |
67/68 | DHCP服务 | 劫持、欺骗 |
161 | SNMP协议 | 爆破、搜索目标内网信息 |
特殊服务端口
端口号 | 端口说明 | 攻击方向 |
2181 | Zookeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行、SQL注入 |
9200/9300 | Elasticsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin登录 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | Svn服务 | Svn泄露、未授权访问 |
50000 | SAP management Console | 远程执行 |
6)CMS指纹识别
CMS(Content Management System)称为文章系统,用于网站内容管理。用户仅需下载对应CMS软件包,完成部署搭建就可以直接使用CMS。因为各类CMS都有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来判断一个CMS类型信息,这就叫CMS指纹识别。
常见的CMS:
门户:dedecms(织梦)、phpcms、帝国cms
博客:WordPress、zblog、emlog
社区:Discuz、PHPWind
商城:shopex、ECShop
在线网站:http://whatweb.bugscaner.com/look/
云悉指纹识别:http://www.yunsee.cn/info.html
常用的本地工具有:御剑Web指纹识别、大禹CMS识别程序等
CMS漏洞查询:乌云漏洞库:https://wooyun.x10sec.org/ 安全客漏洞库:https://www.anquanke.com/vul
公开漏洞查询
确认网站的运行的cms或者运行的服务后,可通过公开漏洞进行查询
http://cve.mitre.org/find/search_tips.html
通过查询cve漏洞库查找当前cms或者服务是否存在已知公开漏洞,结合google获取详细漏洞信息
https://www.exploit-db.com/
Google等搜索引擎确定cms或者服务后,在后面加上exp、poc、漏洞等词汇获取详细漏洞信息。
https://vulners.com/
可通过漏洞相关关键字获取详细漏洞信息
历史漏洞查询
确认网站所属单位,可通过查询历史漏洞或者该集团、单位历史漏洞辅助攻击(例如获取内网ip段、历史账号密码)
seebug:https://www.seebug.org/
CNVD:https://www.cnvd.org.cn/
7)查找真实IP
什么是CDN
CDN(Content Delivery Network),内容分发网络。指一种通过互联网连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。因此,如果目标服务器使用了CDN服务,那么我们直接查询到的IP并不是真正的目标服务器的IP,而是一台离你最近的目标节点的CDN服务器,这就导致了我们没法直接得到目标服务器的真实IP。
判断是否存在CDN
全球Ping测试:https://www.wepcc.com
17CE:https://www.17ce.com
站长之家ping检测(没错又是它):http://ping.chinaz.com/
cmd使用nslookup,同样是看返回的IP地址的数量进行判断
如何找到真实ip
DNS历史解析,查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录,相关网站:
https://dnsdb.io/zh-cn/
https://community.riskiq.com
https://x.threatbook.cn/
https://tools.ipip.net/cdn.php
查询子域名,毕竟CDN不便宜,所以很多站都是主站做了CDN,而很多小站没做CDN所以可以,通过上面收集到的子域名查询到真实的IP地址
网络空间引擎搜索法,通过shadan、fofa等搜索引擎,通过对目标网站的特征进行搜索,很多时候可以获取网站的真实IP
利用SSL证书查询,https://censys.io/certificates/
邮件订阅,一些网站有发送邮件的功能,如Rss邮件订阅,因为邮件系统一般都在内部,所以就可以通过邮箱获得真实的IP
国外访问,一般的站点在国内可能会有CDN,但是在国外的用户覆盖率比较低,所以通过国外的节点进行请求往往能获取真实IP
8)敏感目录/文件收集
在渗透测试中,探测Web目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理、文件上传等重要页面,甚至可能扫描出网站的源代码。目录扫描工具有非常多种,如:御剑后台扫描工具、wwwscan命令行工具、dirb命令工具、dirbuster扫描工具;其原理大致相同,都是对网站进行暴力枚举扫描。
9)操作系统识别
识别操作系统常见方法:
看字母大小写,windows对大小写不敏感,Linux敏感
看ping值 --ttl在64左右,linux --ttl在128左右windows
nmap -O ip/域名
10)探测waf
扫描工具:whatwaf、wafw00f
在线识别工具:https://scan.top15.cn/web
扫描IP C段,防火墙一般都会有web管理
11)社会工程学
最高境界:社会工程学(Social Engineering)
渗透某个网站遇到困难时,给网站的呼叫人员打电话,往往能解决很多问题。此外,许多服务器的登录密码与该服务器的管理者有关,密码总是有个人痕迹,因此利用社会工程学获得服务器管理者的信息后,进行服务器渗透测试要简单得多。
总结:
目标对象分析:
单个目标服务器(非web)
Web服务器
整个网络拓扑
内网:
网络设备:交换机、路由器、防火墙、ids、等
网络中的服务器:文件服务器、dns、http、域控制器等
外网:
相关联的其他服务器(ip关联、服务关联)
旁站、c段、邮件服务器、dns服务器、代理服务器等
Web方向信息收集:
域名信息
敏感目录
旁站C段
整站分析
谷歌hacker
url采集
信息分析
整个网站分析:
服务器类型
服务器平台、版本等
网站容器
搭建网站的服务组件,例如:iis、Apache、nginx、tomcat等
脚本类型
ASP、PHP、JSP、aspx等
数据库类型
access、sqlserver、mysql、oracle、postgresql等
CMS类型
WAF
渗透测试一般流程:
项目前期准备工作
信息收集:whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息
漏洞扫描:Nessus, AWVS
手动挖掘:逻辑漏洞
验证漏洞
修复建议
(如果有)基线检查/复验漏洞
输出报告