信息收集技术

信息收集技术           

信息收集概要

进行渗透测试之前,最重要的一步就是信息收集。在这个阶段,我们要尽可能地收集目标的信息。所谓“知己知彼,百战不殆”,我们越了解测试目标,测试的工作就越容易。

信息收集的方式可以分为两种:主动和被动。

.’主动信息收集:通过直接访问、扫描网站,这种流量将流经网站。

.被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google 搜索、Shodan、 fofa 搜索等。

没有一种方式是最完美的,每个方式都有自己的优势,主动方式,你能获取更多的信息, 但是目标主机可能会记录你的操作记录。被动方式,你收集的信息会相对较少,但是你的行动并不会被目标主机发现。一般在一个渗透项目下,你需要有多次的信息收集,同时也要运用不同的收集方式,才能保证信息收集的完整性。而信息收集到底要收集哪些信息呢?接下来,我就给大家整理了一下,渗透测试中常见的一些需要收集的信息。

基本信息收集

Whois

whois 是用来查询域名注册所有者等信息的传输协议。简单的说,就是通过 whois 来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS 解析服务器、注册人联系电话等等,可以进行邮箱反查域名,爆破邮箱,社工,域名劫持,寻找旁站等等。

因为有些网站信息查得到,有些网站信息查不到,所以推荐以下信息比较全的查询网站, 直接输入目标站点即可查询到相关信息。

l 在线 whois 查询

(1) 国内 WHOIS 信息查询地址:

站长之家 爱站网 https://whois.aizhan.com/

(2) 国外 WHOIS 信息查询地址 

一定要养成收集站点邮箱账号收集的习惯(因为好多官方后台都是用内部邮箱账号登录的,指不定哪天你就得到一个进后台的机会)。

(1) 通过说明文档以及网站页面收集,或者网站发表者以及留言板信息处收集账号

(2) 通过 teemo,metago,burpusit,awvs,netspker 或者 google 语法收集

(3) 搜索相关群收集相关企业员工的社交账号 (用途:可用来进行爆破或者弱口令登录以及撞裤攻击)

备案信息

网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,如果需要查询企业备案信息(单位名称、备案编号、网站负责人、电子邮箱、联系电话、法人等)

l 在线网站备案查询

(1) 天眼查

(2) ICP 备案查询网 http://www.beianbeian.com/

l 利用技巧

(1) DNS 解析记录可以反查 IP,比较早的解析记录有时可以查到真实 IP,需要留意一下。

(2) 注册人电话,注册人邮箱等社工信息可以钓鱼或者收集进字典来爆破目标办公系统。

查找真实 IP

CDN

在渗透测试过程中,经常会碰到网站有 CDN 的情况。CDN 即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程 Web 服务器上响应,这样可以大大提高网站的响应速度及用户

CDN 的优势

(1) 提高用户访问速率,优化用户使用体验。(2)隐藏真实服务器的 IP

(3)提供WAF 功能,目前很多 CDN 也提供了 WAF 的功能,我们的访问请求会先经过 CDN 节点的过滤,该过滤可对 SQL 注入、XSS、Webshell 上传、命令注入、恶意扫描等攻击行为进行有效检测和拦截。CDN 节点将认为无害的数据提交给真实的主机服务器。所以在渗透测试中,为了要知道网站服务器的真实 IP,我们必须绕过 CDN 查找出网站的真实 ip 地址。判断域名对应的真实 IP首先,我们要判断该域名是否存在 CDN 的情况,我们可以去在线 CDN 查询网站:;。

如果查询出的 ip 数量大于一个的话,则说明该 ip 地址不是真实的服务器地址。以我的经验来看,如果是 2 个或者 3 个,并且这几个地址是同一地区的不同运营商的话,则很有可能这几个地址是服务器的出口地址,该服务器在内网中,通过不同运营商 NAT 映射供互联网访问,同时采用几个不同的运营商可以负载均衡和热备份。如果是多个 ip 地址,并且这些 ip 地址分布在不同地区的话,则基本上可以断定就是采用了 CDN 了。那么如何绕过 CDN 查找网站真实的 ip 地址呢?绕过 CDN 查找网站真实 ip

绕过 CDN 查找网站真实 ip

(1) 查询子域名

毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN, 而很多小站子站点又跟主站在同一台服务器或者同一个 C 段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实 IP。

查询子域名有四种方法:

通过爆破子域名进行查询,如 Layer 子域名爆破机、subDomainBrute,在线子域名查询网站:。

通过查询 DNS 服务器,查询该域下的解析记录。

通过 HTTPS 证书来查询(只适用于 https 网站) ,如:;就是通过https 证书查询子域名。

通过 google 查询

(2) 查询主域名

以前用 CDN 的时候有个习惯,只让 WWW 域名使用 cdn,秃域名不适用,为的是在维护网站时更方便,不用等 cdn 缓存。所以试着把目标网站的 www 去掉,ping 一下看 ip 是不是变了,您别说,这个方法还真是屡用不爽。

(3) 邮件服务器

一般的邮件系统都在内部,没有经过 CDN 的解析,通过目标网站用户注册或者 RSS 订阅功能,查看邮件,寻找邮件头中的邮件服务器域名 IP,ping 这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)。

(4) 查看域名历史解析记录

也许目标很久之前没有使用 CDN,所以可能会存在使用 CDN 前的记录。所以可以通过网站来观察域名的 IP 历史记录。

(5) 国外访问

国内的 CDN 往往只对国内用户的访问加速,而国外的 CDN 就不一定了。因此,通过国外在线代理网站访问 ,可能会得到真实的 ip 地址。

nslookup xxx.com 199.89.126.10

C:\Users\asus\Desktop> nslookup hi-ourlife.com 199.89.126.10名称: hi-ourlife.com

Address: 45.64.65.85

(6) Nslookup 查询

查询域名的 NS 记录、MX 记录、TXT 记录等很有可能指向的是真实 ip 或同 C 段服务器。

(7) 网站漏洞

利用网站自身存在的漏洞,很多情况下会泄露服务器的真实 IP 地址。

(8) Censys 查询 SSL 证书找到真实 IP

利用“Censys 网络空间搜索引擎”搜索网站的 SSL 证书及 HASH,在上查找目标网站 SSL 证书的 HASH,然后再用 Censys 搜索该 HASH 即可得到真实 IP 地址。

操作系统类型探测

服务器信息包括服务器用的操作系统:Linux 还是 Windows 。知道了服务器的操作系统之后,还需要知道操作系统使用的具体版本。因为很多低版本的操作系统都存在已知的漏洞。

操作系统判断方法:

(1) 大小写访问网站:

;&& http://www.xxx.com/inDex.html

Windows 操作系统不区分大小写,Linux 系统大小写敏感,用此方法能够判断是 Windows还是 Linux 系统。

(2) ping

判断是 Linux 还是 Windows 最简单就是通过 ping 来探测,Windows 的 TTL 值都是一般是 128,Linux 则是 64。所以大于 100 的肯定是 Windows,而几十的肯定是 Linux。

但是,通过 TTL 值来判断服务器类型也不是百分之百准确的,有些 windows 服务器的 TTL值也是几十,而且有的服务器禁止 ping。

(3) 其他主动或者被动信息收集工具如:nmap -O 目标 IP

网站脚本类型

(1) 探测网站编写的语言,为什么要进行脚本类型探测?

• 网站会进行伪装,要么没有后缀,要么就是伪静态。

• 有些站点会修改解析后缀,比如:本来是 PHP 的站点,可以修改文件把 asp 后缀当作 php 解析。

(2) 探测脚本类型:

• 如果不是静态或者伪静态 则多点开几个界面,可以看到脚本后缀。

• 最简单的方法,在域名后面分别加个 /index.asp /index.aspx /index.php /index.jsp不报错则是网站支持的脚本语言(原理:大部分网站根目录都会放个 index 首页文件,这是最快速最简单的方式)。

• F12 审查元素,在返回头一般都能看到网站脚本。

• 网站的 robots.txt site.xml 这些文件很可能会有暴露网站的语言 这个直接就访问, robots.txt 等等就可以,存在的话网站脚本一目了然。

• 在网站任意界面直接查看源码,搜索 asp 或 aspx 或 php 或 jsp 很多伪静态的站,都可以用这种方法。他会调用一些动态脚本,在源码会看到。

• 用 google 搜索 site:xxx filetype:php site:目标站域名 inurl:脚本语言类型 如果收录不是很少,一般都能看出来。

• 抓取数据包,分析 cookie 或 session 名称,有可能有脚本前缀 比如:php 的站点, session 名称是 phpsesssion。

敏感信息

物理路径

ü 报错获得

在处理报错信息的问题上如果处理不当,就可导致路径信息泄露,比如访问一些不存在的文件等思路。

这里的报错方法就很多了,说不完的,具体还要根据实际情况操作。下面说几种实用的:

• 有动态 URL 的地方可以替换参数 替换参数值为不存在的,很多时候都能爆物理路径。

• 访问不存在的文件名 文件 或者改正常后缀为不支持的后缀。

IIS7.0 以上,如果没有修改 404 页面,只要浏览 web 任意不存在的文件,都会直接暴出绝对路径。同理,thinkphp 也有这个性质。在 id=1 的注入点,使用各种不支持的字符,比如 id=1’ id=? id=-1 id=\ id=/ 都有可能暴出绝对路径。还有的时候传一些错误图片会报错 windows不支持的符号,?:<>之类的,还有 windows 不支持的文件名 aux Windows 服务器上传 aux 文件或者新建 aux 文件夹,因为不允许这种文件存在而报错泄露绝对路径。

• 尤其是 php 框架写的站,上传很容易爆出物理路径,根据具体情况了,比如一次提交允许的后缀,整体提交时抓包改为不支持的后缀,放包,很多时候都能爆出物理路径。有一部分都是 sql 语句报错,sql 很多时候会爆物理路径,所以相信你已经会拓展了。

ü 后台获得

可以登录后台的话,后台首页一般都有服务器信息的,大部分情况下物理路径都在里面。

ü 上传图片处

在上传图片处,这里我说下最可能存在问题的点,就是关于上传相关证明,进行实名制上传信息等功能页面,在上传图片时进行抓包,然后查看返回包,那么就可看到当前服务器的绝对路径信息。

ü 搜索引擎探测

结合关键字和 site 语法搜索出错页面的网页快照,常见关键字有 warning 和 fatal error。

注意,如果目标站点是二级域名,site 接的是其对应的顶级域名,这样得到的信息要多得多。

Site:xxx.edu.tw warning Site:xxx.com.tw “fatal error”由于很多网站本身容错做的不好,会有一些暴露物理路径的界面,如果被搜索引擎收录了, 那么可以通过搜索引擎来找到在搜索引擎搜索 site:目标 关键字常见的报错关键词warning error module file not exist 数据库 配置出错 找不到包含文件 包含路径 路径为 select Warning: mysqli_query() expects parameter to be mysqli boolean given in on line directory in Fatal error require_once() Failed opening required include_path=

容器特性爆物理路径

如:Apache Tomcat、Struts2、CMS、zabix、Nginx 等等,例如 Nginx 的某版本解析漏洞,就可造成路径信息泄露。

• IIS 大于 6 的版本,基本都是 导致他 404 就可以爆出物理路径、IIS 名、IIS 版本。这个很简单,随便访问个不存在的目录或文件就可以。

• nginx 文件类型错误解析爆路径: 说明:要求 Web 服务器是 nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作 php 文件执行,有可能爆出物理路径www.xxx.com/xx.jpg/x.php

• /etc/httpd/conf/httpd.conf

这是 apache 默认目录,最底下有一句

Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/.conf

这代表,在/etc/httpd/conf.d 目录下的所有.conf 文件都会被加载,也就是说管理员可以在

/etc/httpd/conf.d/.conf 里面写网站目录。

所以最后读 /etc/httpd/conf.d/vhost.conf 成功读出网站绝对路径

思 路 就 是 先 读 /etc/httpd/conf/httpd.conf 没 有 网 站 目 录 就 看 IncludeOptional conf.d/*.conf 看完就尝试读 /etc/httpd/conf.d/httpd.conf

/etc/httpd/conf.d/vhost.conf

/etc/httpd/conf.d/httpd-vhost.conf

/etc/httpd/conf.d/httpd.conf.bak 等 等

ü 遗留文件 探针文件

通过遗留文件获得,比如 phpinfo.php info.php site.php 1.php a.php 一些探针文件啊都有,等等。在遗留文件中搜索 SCRIPT_FILENAME。

很多网站的根目录下都存在测试文件,脚本代码通常都是 phpinfo(),如:

test.php ceshi.php info.php phpinfo.php php_info.php 1.php

ü phpmyadmin 爆路径

一旦找到 phpmyadmin 的管理页面,再访问该目录下的某些特定文件,就很有可能爆出物理路径。至于 phpmyadmin 的地址可以用 wwwscan 这类的工具去扫,也可以选择 google。

/phpmyadmin/libraries/lect_lang.lib.php

/phpMyAdmin/index.php?lang[]=1

/phpMyAdmin/phpinfo.php

/phpmyadmin/themes/darkblue_orange/layout.inc.php

/phpmyadmin/libraries/select_lang.lib.php

/phpmyadmin/libraries/lect_lang.lib.php /phpmyadmin/libraries/mcrypt.lib.php XML 处

一些 XML 限制或删除不完全,可导致服务器等信息泄露。

配置文件找路径

如果注入点有文件读取权限,就可以手工 load_file 或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下 Web 服务器和PHP 的配置文件默认路径可以上网查, 这里列举常见的几个。

(1) Windowsc:\windows\php.ini php 配置文件 c:\windows\system32\inetsrv\MetaBase.xml IIS 虚拟主机配置文件如果有 root 读取文件的权限,或者任意文件读取漏洞,可以读取容器的配置文件,或者集成环境的固定 web 目录,判断集成环境,可以通过 mysql 的根目录判断,前面注入时说到的@@datadir: 常见配置文件:

C:\Windows\system32\inetsrv\metabase.xml C:\Windows\System32\inetsrv\config\applicationHost.config C:\xampp\apache\conf\httpd.conf /var/www/conf/httpd.conf

常见集成环境默认目录,后面往往还有以域名命名的目录,比如: C:\www\baidu

C:\Inetpub\wwwroot C:\xampp\htdocs

D: \phpStudy\WWW

(2) Linux

/home/wwwroot/

/www/users/

/var/www/html/网站名

其实 linux 还可以用瞎蒙大法

/etc/php.ini php 配置文件

/etc/httpd/conf.d/php.conf

/etc/httpd/conf/httpd.conf Apache 配置文件

/usr/local/apache/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf

/usr/local/apache/conf/extra/httpd-vhosts.conf 虚拟目录配置文件

收集敏感目录文件

在渗透测试中,探测 Web 目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理页面、文件上传页面、甚至可以扫描出网站的源代码。

常我们所说的敏感文件、敏感目录大概有以下几种:

后台、robots.txt、数据库 log、sitemap.xml、mysql.sql、licence.txt、WEB-INF 泄露、备份文件泄露、配置文件泄露

· 收集方向

后台目录:弱口令,万能密码,爆破 (常用后台 admin\admin.后缀\admin/login.后缀 \manage \webmanager\等等)

安装包:获取数据库信息,甚至是网站源码上传目录:截断、上传图片马等

mysql 管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到 shell安装页面 :可以二次安装进而绕过

phpinfo:会把你配置的各种信息暴露出来编辑器:fck、ke、等

iis 短文件利用:条件比较苛刻 windows、apache 等 robots.txt 文件

robots.txt 文件是专门针对搜索引擎机器人 robot 编写的一个纯文本文件。我们可以在这个文件中指定网站中不想被 robot 访问的目录。这样,我们网站的部分或全部内容就可以不被搜索引擎收录了,或者让搜索引擎只收录指定的内容。因此我们可 以利用robots.txt 让 Google 的机器人访问不了我们网站上的重要文件,GoogleHack 的威胁也就不存在了。假如编写的 robots.txt 文件内容如下:

User-agent: * Disallow: /data/ Disallow: /db/ Disallow: /admin/ Disallow: /manager/ Allow:/images/

其中“Disallow”参数后面的是禁止 robot 收录部分的路径,例如我们要让 robot 禁止收录网站目录下的“data”文件夹,只需要在 Disallow 参数后面加上 /data/ 即可。如

果想增加其他目录,只需按此格式继续添加。文件编写完成后将其上传到网站的根目录, 就可以让网站远离 Google Hacking 了。

虽然 robots 文件目的是让搜索蜘蛛不爬取想要保护的页面,但是如果我们知道了robots 文件的内容的话,我们就可以知道目标网站哪些文件夹不让访问,从侧面说明这些文件夹是很重要的了。如:

· 常用工具

探测目标网站后台目录的工具有:

字典爆破:dirb[kali 如:dirb ]对目标网站进行目录扫描]、 DirBuster、 wwwscan 、御剑后台、Webdirscan 等

蜘蛛爬行:Burp、OWASP ZAP、AWVS 等

在线工具站:webscan

· 联网设备搜索

钟馗之眼 www.zoomeye.com。傻蛋 www.oshadan.com(使用)

联网设备搜索引擎可以检索到许多搜索引擎不收录的页面,通常是后台等页面。构造检索关键词时:

系统/后台类,可以搜索“xxx 系统/平台/管理”。企业类,可以搜索“xxx 企业/公司/平台”。

比如我们要挖电信的系统,可以搜索“电信系统/平台/管理”。

· 搜索引擎site:xxx.xxx system site:xxx.xxx 内 部site:xxx.xxx 系 统site:目标 admin site:目标 login site:目标 管理员登陆site:目标 后台

site:目标 中心site:目标 登录site:目标 登陆site:目标 管理中心

等等很多,可以自行拓展

4、中间件和容器(CMS)

我们需要知道网站用的 web 服务器是什么类型的:Apache、Nginx、Tomcat 、Lighttpd、 Weblogic、Jboss 还是 IIS。

知道了 web 服务器是哪种类型后,我们还要探测 web 服务器具体的版本。

比如 Ngnix 版本<0.83 会有解析漏洞 ,IIS6.0 会有文件名解析漏洞、IIS7.0 会有畸形解析漏洞等。不同的 web 服务器版本,存在着不同漏洞。

CMS(Content Management System)又称整站系统或文章系统。在 2004 年以前,如果想要进行网站内容管理,基本上都靠手工维护,但在信息爆炸的时代,完全靠人维护相当困难。所以就出现了 CMS,开放者只要给客户一个软件包,客户自己安装配置好,就可以定期更新数据来维护网站,节省了大量的人力和物力。

常见的 CMS 有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、 SiteWeaver、AspCMS、帝国、Z-Blog 等。

CMS 指纹识别又有很多方法,比如说御剑指纹识别、Webrobot 工具、whatweb 工具、还有在线查询的网站等等。

CMS 在线指纹识别:

数据库

数据库的区别

我们需要知道网站用的是哪种类型的数据库:Mysql、Oracle、SqlServer 还是 Access 。虽然这几种数据库的语法大体上相同,但是还是有区别的。

所以我们还是要知道目标网站用的是哪种数据库,并且数据库是哪个版本的。几种数据库的区别:

• Access 全名是 Microsoft Office Access,是由微软发布的关联式数据库管理系统。小型数据库,当数据库达到 100M 左右的时候性能就会下降。

数据库后缀名:.mdb 一般是 asp 的网页文件用 access 数据库

• SQL Server 是由 Microsoft 开发和推广的关系数据库管理系统(DBMS),是一个比较大型的数据库。

端口号为 1433。数据库后缀名 .mdf

• MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的应用软件之一,MySQL 数据库大部分是 php 的页面。默认端口是 3306

• Oracle 又名 Oracle RDBMS,或简称 Oracle。

是甲骨文公司的一款关系数据库管理系统。常用于比较大的网站。默认端口是 1521

首先,成本上的差距,access 是不要钱的,mysql 也是开源的,sql server 是收费的一般也就几千,Oracle 的费用则数万。

其次,处理能力,access 支持千以内的访问量,sql server 支持几千到上万的访问,而Oracle 则支持海量的访问。

再次,从数据库的规模来看,access 是小型数据库,mysql 是中小型数据库,sql server是中型数据库,Oracle 是大型数据库。

判断网站搭建数据库的方法

根据脚本语言判断

如果语言为 asp,基本就是 access 数据库 aspx 可能是 mssql 很少是 access jsp 的站 oracle 居多 php 一般为 mysql (也有可能是其他数据库)

ü 根据报错判断

在参数后面使网站报错也可能会给出数据库报错信息,报错方法很多,可以修改参数为不存在的参数,比如也可以用特殊符号,等等。

ü 根据数据库特性判断

存在注入时 在参数后面加上 and len(a)=1 如果返回正常,一般数据库为 mssql 或 mysql,大站的话可能是 db2,界面返回错误的话,数据库基本是 oracle

在参数后面加上 ;and (select count(*) from sysobjects)>0 如果返回正常那就是 mssql 数据库,如果不正常那就不是 mssql(sql server)

ü 根据端口判断

这个很简单,其实你扫一下端口,就知道是什么数据库了。1433 对应 mssql 数据库, 3306对应 mysql 数据库,1521 对应 oracle 数据库 。

如果端口被更改,可以逐一用 xx.xx.xx.xx:: 尝试访问端口,如果是数据库端口,会返回对应的无法连接数据库的英文 。不是数据库,服务器会一直载入或者找不到界面。

常见搭配

常见搭配

ASP 和 ASPX:ACCESS 、 SQL Server PHP:MySQL 、 PostgreSQL JSP:Oracle、MySQL

6、WAF 探测

Waf 也叫 Web 应用防火墙,是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web应用提供保护的一款产品。

常用的两种方式:

(1) 手工(提交恶意数据,简单粗暴)

(2) Kaili 工具(WAFW00F、Nmap)

• Nmap 探测 WAF 有两种脚本一种是 http-waf-detect。

命令:nmap -p80,443 --script=http-waf-detect ip一种是 http-waf-fingerprint。

命令:nmap -p80,443 --script=http-waf-fingerprint ip

• WAFW00F 探测 WAF

命令:wafw00f -a 域名

• 在线识别https://scan.top15.cn/web

7、C 段和旁站

旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的 webshell,然后再提权拿到服务器的权限,最后就自然可以拿下该网站了!

对于红蓝对抗和护网,C 段扫描比较有意义。对于单独网站的渗透测试,C 段扫描意义不大。C 段指的是同一内网段内的其他服务器,每个 IP 有 ABCD 四个段,举个例子,192.168.0.1, A 段就是 192,B 段是 168,C 段是 0,D 段是 1,而 C 段嗅探的意思就是拿下它同一 C 段中的其中一台服务器,也就是说是 D 段 1-255 中的一台服务器,然后利用工具嗅探拿下该服务器。

旁 站 和 C 段 在 线 查 询 地 址 : ttp://www.5kik.com/

工具:K8 旁站、御剑 1.5

END

作者:Fright-Moch     排版:王雅馨