目录
前言
在渗透测试的过程中,信息收集贯穿着整个渗透测试的过程,做好信息收集可以为后面的工作增加更多的攻击面,总得来说信息收集是渗透测试的基石。
一.web架构篇
(1)域名
C段旁注:
C段:同网段不同服务器
旁注:同服务器不同站点
在线C段旁注查询工具:同IP网站查询,C段查询,IP反查域名,在线C段,旁站工具 - WebScan
子域名:
1.goole hacking语法:
用site:baidu.com来查找baidu.com的子域名
2.在线子域名查询网站:
3.工具查询子域名:
https://github.com/euphrat1ca/LayerDomainFinder
whois信息:
whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息(如域名所有人、域名注册商、域名注册日期和过期日期等)。 通过域名whois查询,可以查询域名归属者联系方式,以及注册和到期时间。
whois在线查询工具:
https://whois.cloud.tencent.com/
域名反查IP:
利用ping命令:
(2)操作系统
TTL值判断:
通过TTL值判断操作系统的方法不一定准确,因为对方可能修改过TTL值,如果对方未对TTL值进行修改,那么我们可以通过下列的默认操作系统的TTL值对操作系统进行判断:
1、WINDOWS NT/2000 TTL:128
2、WINDOWS 95/98 TTL:32
3、UNIX TTL:255
4、LINUX TTL:64
5、WIN7 TTL:64
大小写判断:
在linux系统和windows系统中,linux系统对大小写敏感,windows系统对大小写不敏感,我们可以针对网站对大小写是否敏感进行操作系统类型的判断,例如修改URL中的小写字母为大写字母。
(3)数据库
端口开放情况判断:
关系型数据库:
1.Oracle数据库默认端口号为,1521;
2.MySQL数据库默认端口号为,3306;
3.SQLServer数据库默认端口号为,1433;
4.postgreSQL数据库默认端口号为,5432;
NOSQL数据库:
1.MongoDB默认端口号为:27017;
2.Redis默认端口号为:6379;
3.memcached默认端口号为:11211;
其他:
1527 Derby
5432 pgsql
5000 db2
9092 pointbase
无默认 Informix
数据库和语言的常用搭配判断:
PHP+MySQL
Jsp+MySQL,Oracle
Python+MongoDB,MySQL
Asp+Access
Aspx+SQLServer
(4)中间件
中间件和语言常用搭配判断:
Apache + PHP
Nginx + PHP
IIS + ASPX(ASP.NET)
Linux + Tomcatt + JSP
Tomcat + JSP
看返回数据包:
在返回的响应数据包中,有可能会返回中间件的类型:
开放端口判断:
Tomcat默认端口号:8080
Weblogic默认端口号:7001
Jboss默认端口号:8080
(5)语言
URL后缀判断:
在url中自带的文件后缀,如下图中:
由PHP搭建的网站:
由JSP搭建的网站:
根据cookie值判断:
JSESSIONID代表JSP,PSESSIONID代表PHP,如下图中:
由JSP搭建的网站:
由PHP搭建的网站:
返回的响应包判断:
在返回的响应包中server处可能会返回网站搭建语言的类型:
二、源码篇
通常网站的源代码分为三类:开源cms、闭源售卖、自主开发。
开源cms源码获取方式:
1.识别cms的类型:
云悉指纹识别:
潮汐指纹识别:
TideFinger 潮汐指纹 TideFinger 潮汐指纹
国外cms在线识别平台:
Detect which CMS a site is using - What CMS?
2.下载已识别的cms源码:
到github或者各个开源cms的官网下载已经识别的cms源码
闭源售卖源码获取方式:
1.购买或直接下载源码:
闭源源代码购买途径:
自主开发源码获取方式:
由于自主开发的源码的隐秘性较高,因此想在网上直接找到目标自主开发的网站源码几乎是不可能的,因此我们只能通过漏洞和建站管理员的疏忽导致的源码泄露来获取网站的源代码。
1.composer.json文件泄露
Composer是 PHP 中用来管理依赖(dependency)关系的工具。 你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的 库文件 。composer.json
是 Composer 工具使用的配置文件,在使用 Composer 管理 PHP 项目时必不可少。
该网站存在composer.json,可以在该配置文件中看出该网站使用的cms。
2.git源码泄露
Git是一个开源的分布式版本控制系统,在很多开发工具上都有把源代码同步到github上的功能,如果开发者开启了这个功能,会在目录中创建一个.git文件夹,如果网站上线后.git文件夹还在,那么攻击者可以通过工具将网站的源码恢复出来。
判断网站是否存在git源码泄露
GitHack是一个利用git源码泄露恢复网站源代码的工具
github项目地址:https://github.com/lijiejie/GitHack
用法示例:
GitHack.py http://www.openssl.org/.git/
3.svn源码泄露
SVN是一个开放源代码的版本控制系统。使用SVN管理本地代码时会创建一个.svn的文件夹,如果网站管理员在上线网站后没有删除.svn文件夹,那么就会被攻击者利用,造成源码泄露。
SvnHack一个Svn信息泄露辅助工具,可以使用这个脚本列取网站目录,读取源码文件以及下载整站代码。
GitHub - callmefeifei/SvnHack: 一个Svn信息泄露辅助工具,可以使用这个脚本列取网站目录,读取源码文件以及下载整站代码。
用法示例:
python SvnHack.py -u http://x.x.x.x/.svn/entries —download
4.网站备份文件泄露
管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。
常见的备份文件后缀:
-
.rar
-
.zip
-
.7z
-
.tar.gz
-
.bak
-
.txt
-
.old
-
.temp
利用目录扫描工具对目标网站进行扫描
5.DS_Store 文件泄露
.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
github项目地址:https://github.com/lijiejie/ds_store_exp
用法示例:
ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store
三、阻碍篇
CDN服务
cdn全称是内容分发网络。其目的是让用户能够更快速的得到请求的数据。如果网站开设了CDN服务,那么会出现不同地区ping该网站出现不同ip的情况,相当于隐藏了真实的ip,对攻击者也造成了一定的阻碍。
判断网站是否开启CDN服务:
多地ping在线工具:
利用在线工具对baidu.com进行多地ping操作,如果响应ip各不相同则说明该站点存在CDN服务
利用在线工具对xiaodi8.com进行多地ping操作,如果响应ip都相同则说明该站点不存在CDN服务
Waf
WAF即Web应用程序防火墙通过过滤和监视Web应用程序与Internet之间的HTTP通信来帮助保护Web应用程序。它通常可以保护Web应用程序免受跨站点伪造,跨站点脚本(XSS),文件包含和SQL注入等攻击。
常见的云WAF有阿里云盾、腾讯云 T-Sec Web 应用防火墙、百度云应用防火墙 WAF、华为云-云防火墙 CFW、华为云 Web应用防火墙 WAF、安全狗云御WEB应用防护系统、安恒玄武盾云防护、绿盟网站云防护、启明星辰虚拟化WAF、深信服云Web应用防火墙云WAF、知道创宇-创宇盾、F5 分布式云 WAF、奇安信网站卫士、360磐云、网宿Web应用防火墙、奇安信网神WEB应用安全云防护系统。
Waf指纹识别:
通过拦截特征页面进行指纹识别:
这里引用潇湘信安微信公众号3had0w师傅写的一篇文章,里面包含了30多个市面上常见的waf防火墙的拦截页面。
https://mp.weixin.qq.com/s/8F060FU9g_78z57UKS-JsQ
工具识别:
推荐项目wafw00f,该工具支持100多种waf的指纹识别:
https://github.com/EnableSecurity/wafw00f
负载均衡
负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个节点,以提高系统整体的响应速度和可用性。
判断目标站点是否开启负载均衡服务:
四、CDN绕过篇
1.国外请求:
由于开启CDN服务需要一定的成本,因此很多网站即使开启了CDN服务,范围也仅限于国内访问该网站时享受CDN服务,绕过CDN可以切换国外的ip去访问目标站点,或者用非洲ip去访问该站点。
在线工具链接:
2.子域名ping:
有些网站只给自己的www开启CDN服务,其他的子域名则未开启。
CDN---->ping www.abc.com
非CDN--->ping abc.com
3.邮件服务查询:
一些站点的邮件可能来源于真实ip,因此当收到目标站点邮件时,查看源ip有可能就是该网站的真实ip。
4.遗留文件扫描:
通过扫描建站之初的遗留文件,例如phpinfo()文件,phpinfo()文件可能包含真实ip。例如,用谷歌搜索:site:xxx.com inurl:phpinfo.php。
5.DNS历史记录查询:
目标网站在开启CDN服务之前,其真实的ip可能在DNS缓存之中,因此我们可以在DNS记录之中查看网站的真实IP。
在线工具:
DNS记录查询_DNS解析查询_A记录_CNAME查询_AAAA查询_MX查询_TXT查询_NS查询_PTR查询_SRV查询
6.使用工具查询:
github地址: