信息收集号称渗透测试的灵魂,作为渗透测试的第一步,同样也是非常重要的一步
Google作为当今世界上最强大的搜索引擎,其强大的搜索功能可以为渗透测试者带来很多便利,利用Google的一些关键字语法可以来搜索一些相关的敏感信息
Google Hack语法中的逻辑运算符和符号
语法 | 说明 | 栗子 |
---|---|---|
AND + |
逻辑与。 | web AND application AND security web + application + security |
OR | |
逻辑或 。 | web application OR security web application | security |
NOT — |
逻辑非。 | web application NOT security web application – security |
~ |
用于收录同义词和类似单词。 | web application ~ security |
"" |
Google的默认搜索会对长短句或语句进行自动拆分并进行搜索,使用半角引号"" (即英文下的双引号)进行短语句精确搜索,不分词 |
“web application security” |
* |
单字符通配符 |
web * security |
. |
单字通配符 |
. eb application security |
Google Hack高级搜索常用语法
语法 | 说明 | 栗子 |
---|---|---|
site: |
将搜索查询限制为特定的域名或网站 | site:example.com |
filetype: |
将搜索限制为在特定文件类型中找到的文本 | mysqldump filetype:sql |
intitle: |
在页面标题内搜索字符串文本 | intitle:”index of” |
inurl: |
在URL中搜索字符串 | inurl:passwords.txt |
intext: |
搜索网页正文关键字 | intext:“you have an error in your sql syntax” |
info: |
返回指定站点的一些基本信息 | info:baidu.com |
link: |
搜索指定页面链接 | link:gov.cn |
cache: |
用于当网站或链接无法访问时或信息被屏蔽时或网站信息已被修改,想看到以前的信息也就是搜索引擎的快照信息 | cache:example.com |
inanchor: |
锚链接搜索关键字 | inanchor:修改密码 |
related: |
用于搜索一类网址相关信息 | related:www.kali.org |
实战栗子
姿势 | 说明 |
---|---|
intitle:"index of /ThinkPHP" | inurl:"/ThinkPHP/" |
寻找基于ThinkPHP的开发的Web应用 |
inurl:".php?id=" "you have an error in your sql syntax" |
寻找可能存在注入的地方 |
inurl:.php? intext:CHARACTER_SETS,COLLATIONS, ?intitle:phpmyadmin |
寻找未经授权可以访问的phpMyAdmin的后台页面 |
Whois
是一个标准的互联网协议,可以用于收集网络注册信息,查询域名注册信息,IP地址信息或者域名所有人、注册商的信息
Whois查询工具有Kali内置的Whois
在线查询whois信息的网站:
网站备案是根据国家法律规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动。主要针对国内网站,如果网站是在国外注册的域名则不需要备案
查询备案的网站有:
子域名也就是顶级域名下的二级域名,网站的主域都是重点防护的区域,相对主域,子域的网站防护肯定比主域弱一点,所以很多时候从子域入手是比较好的选择,所以需要进行子域名信息收集,目的还是:
扩大攻击面,寻找薄弱点
子域名检测工具
Google Hack枚举
第三方DNS数据集平台
很多第三方服务平台聚合了大量的DNS数据集,可以通过它们检索某个给定域名的子域名
证书透明度(
Certificate Transparency
,简称CT
)是证书授权机构CA
的一个项目,证书授权机构会将每个SSL/TLS
证书发布到公共日志中。一个SSL/TLS
证书通常包含域名,子域名和邮件地址,查找某个域名所属证书的最简单办法就是使用搜索引擎搜索一些公开的CT日志
查询网站:
现金大部分网站都会使用
CDN
技术来实现服务器端和客户端之间的更加高效的数据传输,并且可以做到对服务器真实IP
有一个比较好的隐藏和保护作用。在渗透测试过程中如果服务器使用了CDN
,那么真实IP
就对渗透测试来说非常重要,下面来看一下如何确定目标真实IP
内容分发网络
:Content Delivery Network,缩写作CDN
。通过部署在各地的CDN节点
利用距离每个客户端最近的服务器做到更快、更可靠的将数据传输给客户端,从而提高性能,可扩展性及其低成本网络数据传输。
CDN节点
会在多个地点,不同网络上部署。这些节点之间会动态的相互传输内容,对客户端和服务器之间的数据传入进行优化,从而做到降低服务器端的带宽成本,提高系统稳定性,改善数据传输速率等优化操作。一般只有访问量大的网站会使用CDN加速。
Nslookup检测
使用
nslookup
解析域名,如果返回多个IP地址
或多个相关域名
那么多半可以判断是使用了CDN
如上图所示,第一个域名基本可以判断使用了CDN
,而后面那个域名应该是真实IP
多地Ping检测
通过在线的多地ping目标域名,根据每个地区ping返回的IP地址来进行判断,如果
IP都一致
,那么基本可以确定没有使用CDN。如果IP都不太一样或者规律性很强
,大致可以推测使用了CDN
。也可以对这些IP进行反查进一步确认
常用多地IP Ping在线网站:
同站IP反查在线网站:
子域名
CDN服务成本并不低,所以很多网站也只是对主站等访问量比较大的站使用了CDN,但是很多站都是存在分站子域名的,这些分站很可能是没有使用CDN的,这样就可以通过获取分站的IP,来判断主站的IP
或者主站的同一个C段
,因为分站一般很有可能是和主站一个IP地址或者同一个C段,至于子域名如何查询上面已经讲了。
服务端邮箱源
一般邮件系统都在内部,没有经过CDN的解析。通过目标网站的用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的服务器域名IP,ping这个邮件服务器的域名,即可获得真实IP
域名解析记录
查询域名的解析记录。也许目标很久以前并没有使用过CDN,所以可以通过查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录
使用国外IP解析域名
国内的CDN往往只对国内用户访问加速,而国外的CDN就不一定了。使用国外的IP访问或者一些国外的在线查询网站可能就可以获取真实网站的IP
敏感文件/漏洞查找
目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等
XSS盲打,命令执行反弹shell,SSRF等。
扫描端口,直接就使用Nmap
扫描即可,nmap如何扫描就不说了
详情参考:https://blog.csdn.net/mochu7777777/article/details/105115402
推荐使用浏览器插件:Wappalyzer
也可以查看数据包响应头,可能会返回相关信息(不过返回信息一般也不多)
指纹由于其具有不变性、唯一性和方便性,使其可以被唯一的标识。对于每一个网站来说,他们也具有可表示性。重点总结一下CMS的指纹识别
CMS
:Content Management System,又称整站系统或文章系统
如何判断CMS类型
指纹识别工具:
在渗透测试中,探测Web目录结构和隐藏的敏感文件是必不可少的一环。在搭建网站的时、服务器配置问题,导致目录可遍历,从而引起信息泄漏,造成安全隐患
robots.txt
搜索引擎爬取一个站点时,首先会检查站点根目录
下是否存在robots
,如果存在,搜索引擎会根据文件中的内容来确定爬取范围,很多网站根目录都存在robots.txt
,导致攻击者可以通过该文件了解网站结构,进行任意访问
WEB-INF
WEB-INF
是JAVA
的WEB应用安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml
文件对要访问的文件进行相应的映射才能访问
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml
:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/
:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,不能包含在 .jar文件中
/WEB-INF/lib/
:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/
:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties
:数据库配置文件
网站备份文件
管理员在对网站进行部署、修改、升级等操作前,可能会对网站或这某些页面进行备份,由于各种原因改备份文件存放到网站目录下,该文件未做任何访问控制,导致可直接访问并下载。可能为.rar
、.zip
、.7z
、.tar.gz
、.bak
、.txt
、.www.rar
、web.rar
、.swp
.swp
是vim编辑器备份文件,vim编辑器会有两种备份文件,一种是正常的vim备份文件
如果源文件是index.php
,那么备份文件就是index.php~
。另一种就是vim临时备份文件
如果源文件是test.php
那么临时备份文件名就是test.php.swp
,如果文件正常退出,则此文件自动删除
这两个文件如果没有正确处理,那么黑客就能利用起来,在一些CTF比赛中也经常出现这样的做法
phpinfo、/phpmyadmin
若网站为php+mysql环境可测试php探针
、phpinfo
、/phpmyadmin
等敏感文件或目录
网站安装目录(网站重装漏洞)
很多网站都会有一个安装过程,一般用来配置一些数据库相关信息,会将安装目录例如/install/
等放在根目录,如果未对安装进行检测将会导致重装漏洞
在使用git init
进行初始化代码时,会在当前目录产生一个.git
的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,如果没有对.git
这个隐藏目录进行删除直接发布,那么使用工具例如GitHack
即可恢复源码
GitHack项目地址:https://github.com/lijiejie/GitHack
GitHack
是一个.git
泄露利用脚本,通过泄露的.git
文件夹下的文件,重建还原工程源代码。
.DS_Store
是Mac下Finder
用来保存如何展示文件/文件夹的数据文件,每个文件夹下对应一个。由于开发设计人员在代码发布时未删除文件夹中隐藏的.DS_Store
,可能造成目录结构泄漏,源代码文件等敏感信息泄漏
.DS_Store
文件泄露也可以使用相关工具进行检测:https://github.com/lijiejie/ds_store_exp
Subversion
,简称SVN
,是一个开放源代码的版本控制系统,相对于RCS、CVS
,采用了分支管理系统,设计目标就是取代CVS
。互联网上越来越多控制服务从CVS
转移到Subversion
SVN
漏洞在实际渗透测试过程中,利用到也比较多,由于一些开发管理员疏忽,原理类似DS_Store
漏洞,一般使用就利用下面两种方法:
根目录
后添加/.svn/entries
Seay SVN
工具扫描探测网站目录和敏感文件扫描是网站测试中最基本的手段之一,通过目录扫描可以探测出更多的网站可访问资源,扩大攻击面。常见的目录扫描工具如下:
旁站
:旁站是和目标网站在同一台服务器上的其它的网站
在主站无法拿下的情况下,可以通过入侵与主站在同一台服务器的旁站并拿下服务器。旁站查询方法如下:
C段
:C段是和目标服务器IP处在同一个C段的其它服务器
C段查询方法:
site:123.123.123.*
ip:xxx.xxx.xxx.0/24
nmap -p [port] -Pn xxx.xx.xxx.0/24
WAF(
Web APPlication Firewall
)web应用防火墙,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,这里只阐述WAF探测,并不讨论WAF绕过
1. 手工探测
X-Powered-By
字段2. 工具探测
WAFW00F
,Kali内置。项目地址:https://github.com/EnableSecurity/wafw00fhttp-waf-detect
http-waf-fingerprint
网络空间搜索引擎的作用就是将互联网上公开的网络资产收集和整理,以此方便人们进行查阅和利用
参考文章:
https://4hou.win/wordpress/?p=31548
https://blog.csdn.net/liushulin183/article/details/51407755
https://www.freebuf.com/articles/database/195169.html
https://wenku.baidu.com/view/11d57a6810a6f524ccbf85aa.html?re=view
https://www.cnblogs.com/xuanhun/p/3910134.html
https://en.wikipedia.org/wiki/Google_hacking
https://www.acunetix.com/websitesecurity/google-hacking/
https://cloud.tencent.com/developer/article/1482443