- 小迪安全渗透测试笔记(一)——信息收集
一、基本概念
CDN
Content DeliveryNetwork,即内容分发网络,是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。即不同区域通过访问不同的节点来加快网站访问速度,同时降低主服务器压力。但是由于cdn的存在,使得通过域名获取到的ip地址可能为cdn的地址,而非真实的源站ip地址,对渗透工作造成影响。所以再渗透过程中,需要对cdn进行绕过。
通过超级ping等工具网站可以获取到不同地域的ip解析情况,如下图

web架构
web架构的组成如下:
1、网站源码
部署在操作系统上的网站源码,可以实现不同的站点功能。网站源码可以按脚本语言、应用类型等方面分类,如js、php等或博客、电商等。不同语言或不同应用场景下的站点可能在不同方面具有不同的漏洞
2、操作系统
部署站点的操作系统,常见的为windows或linux
3、中间件
中间件是指网络环境下处于操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件。常见的web中间间有IIS、apache、tomcat、nginx。
4、数据库
数据库主要用于存放网站数据,大部分网站都会使用数据库。常见的数据库有mysql、mssql等
CMS
即内容管理系统,其主要是为了方便发布网络内容而存在的一体化Web管理系统。常见的cms有wordpress,Drupal,Joomla等。
识别网站的cms将有助于漏洞挖掘,例如如果网站是使用wordpress搭建,那么只需要寻找wordpress的漏洞即可,还可以下载到cms的源码进行代码审计。如果找不到cms,就需要进行常规的渗透测试。
cms识别主要分为手动识别,工具识别等,其核心就是通过特定特征文件识别特定的cms。+
二、系统及数据库
识别系统的常见方法
1、有网站
可以通过修改url中大小写来判断。在windows中,大小写是不敏感的,而linux中大小写是敏感的,所以可以通过修改url中(非域名)的字母大小写来判断其所使用的操作系统;如下图,将index.pxp中的字母n改成大写,即会报404,说明其所使用系统为linux。

2、没有网站
a. nmap扫描
使用 即可扫描对应ip所属服务器的操作系统,下图为使用nmap扫描某ip的结果,猜测操作系统为Microsoft Windows Server 2008。nmap -O ip

1、nmap -O的扫描原理是分别挑选一个open和closed的端口,分别向其发送数据包,通过比较返回包的栈指纹(不同操作系统实现TCP/IP协议的时候,存在的差异性)来判断操作系统的,nmap-os-db存在了许多不同操作系统的协议栈指纹。
2、nmap对于端口的判定有多种不同的状态。判断端口时,nmap会向ip的端口发送SYN请求,如果端口开启,则会收到SYN/ACK,此时nmap就会判断该端口开启,如下图,此时nmap会发送一个RST报文,并不会与其建立连接
如果服务器返回的时RST报文,则说明该端口并不能正确的被连接,此时nmap会将其视为关闭状态。
nmap对于端口的状态的定义还有其他情况,如Filtered、Unfiltered等.
3、有些系统无法通过这种方式扫描;同理,系统中开放端口较少时也无法通过这种方式扫描
b.TTL
不同操作系统的默认TTL值时不同的,可以通过不同的TTL值来判断其操作系统。不过由于TTL值是可以修改的,所以这种方式并不保证一定准确
1、TTL值通常表示包在被丢弃前最多能经过的路由器个数,即数据包经过ttl个路由后,该包将被丢弃。
2、默认操作系统的TTL为:
WINDOWS NT/2000 TTL:128
WINDOWS 95/98 TTL:32
UNIX TTL:255
LINUX TTL:64
WIN7 TTL:64
c.特殊端口
可以通过检查系统开放的特殊端口来进行判断,如3389、1433等,但由于端口可以修改,所以该方法不绝对。
识别数据库的常见方法
1、默认语言搭配数据库:
组合类型asp + access/mssql
组合类型php + mysql
组合类型aspx+mssql
组合类型jsp +mysql/oracle
组合类型Python + MongoDB
2、常见数据库的默认端口:
关系型数据库
mysql 3306
sqlserver 1433
oracle 1521
psotgresql 5432
非关系型数据库
MongoDB 27017
Redis 6379
memcached 11211
三、CDN
常见的CDN绕过方式:
1、子域名绕过
因架设CDN会增加经济成本,所以很多网站子域名并不会假设cdn。在主站和子站架设在同一个服务器上的时候,可以通过子域名绕过的方式绕过其cdn。例如学而思网校的www.xueersi.com和子域名xueersi.com,其子域名并没有使用cdn,可以直接获取到真实ip。
2、邮箱服务查询
一般来说邮箱的访问量不如主站大,而且邮箱主要是由服务器向用户发送,而不是由用户向服务器访问,所以一般来说没有必要使用cdn。例如163的www.163.com和网易邮箱的smtp.163.com
3、国外地址请求
因为部分国内网站的国外访问需求较少,所以在国外并没有架设cdn,可以通过用国外ip访问的方式来获取真实ip。
4、遗留文件
例如如果站点存在遗留的phpinfo.php文件时,其中可能包含了服务器的真实ip
5、拒绝服务攻击
通过耗尽cdn服务器资源的方式来使其真实ip暴露
6、dns历史记录
通过查询dns历史来查询网站没有架设cdn服务器时解析的真实ip地址
四、站点搭建和WAF
站点搭建习惯
目录型站点
主站上还存在其他cms,例如xxx.com/bbs 是一个论坛站点,这时就可以将其视作目录型站点。这时对其渗透可以通过渗透主站和渗透目录站点两种思路进行。
端口类站点
站点的端口不是默认的80端口,而是其他端口,这时可以使用像shodan这样的工具去搜索。
子域名站点
不同的子域名搭建不同的站点,子域名之间的ip可能不同。这种方式是目前主流的搭建方式。
类似域名站点
例如jmlsd.com和jmlsd.cn这两个站点;除此之外,还可以根据网站内容找到其他域名
旁注、C段站点
旁注即当一个服务器上由多个站点的情况下,通过一个站点拿到服务器即可入侵另一个站点
C端即两个站点虽然在两个不同的服务器上,但是这两个服务器在同一个局域网中,可以通过内网渗透的方式进行入侵。
搭建软件特征站点
例如通过PHPStudy或宝塔搭建的站点,其会暴露更多搭建环境信息。
WAF防护分析
WAF即Web Application Firewall,web应用防火墙,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
如果一个站点安装有WAF,在进行渗透时ip极有可能被WAF拉入黑名单进而影响进一步渗透,所以对WAF的识别时必要的,并且针对不同的waf,往往具有不同的绕过方案。
WAF识别可以采用如wafwoof、identYwaf等工具进行扫描,或者使用nmap的–script=http-waf-detect或–script=http-waf-fingerprint脚本进行扫描




