渗透测试信息收集

2021年进入网络安全行业,作为网络安全的小白,分享一些自学过程的笔记给大家。希望在自己体系化的总结自己已有的知识同时,能对各位博友有所帮助。文章内容比较基础,本文参考了谢公子、背包愙的文章。各位大神不喜勿喷,欢迎提出意见!如果文章对您有帮助,可以给我点赞关注!

渗透测试信息收集

前言

当我们拿到目标站点时,作为新手往往不知道如何开始下手,或直接就用工扫描器开干,但这样经常没有很大的成效,而且浪费大量时间。在我和前辈们的交流中,他们会花很大的经历来进行信息收集,从而很快的在测试过程中找到相应的突破点,因此我觉得信息收集对于渗透测试来说,是非常重要的!我们收集的信息越多,目标的攻击面就越广,我们能攻击的手段和思路就越多,攻破的可能性就越大,所以信息收集是整个渗透测试中最重要的一步也是非常有必要去做的一步。

一、域名信息收集

1.1 whois信息

whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)通过域名Whois服务器查询,可以查询域名归属者联系方式,以及注册和到期时间。
默认情况下,Kali已经安装了Whois。你只需要输入要查询的域名即可
在这里插入图片描述
网页接口的查询工具依赖whois协议向服务器发送查询请求
在这里插入图片描述
进行whois查询查出来信息之后,可以根据查询出来的邮箱、注册人、公司、电话等进行反查。

1.2 备案信息查询

  • ICP备案查询网
  • ICP备案查询-站长工具
  • SEO综合查询-爱站
  • 美国企业备案查询

1.3 子域名探测

在渗透测试的时候,往往主站的防御会很强,常常无从下手,那么子站就是一个重要的突破口,因此子域名是渗透测试的主要关注对象,子域名搜集的越完整,那么挖到的漏洞就可能更多,甚至漏洞的级别也会更高。常用的工具有:

  • 通过爆破子域名进行查询 如 Layer子域名爆破机、subDomainBrute、在线子域名查询网站:https://phpinfo.me/domain/
  • 通过查询DNS服务器,查询该域下的解析记录
  • 通过HTTPS证书来查询(只适用于https网站) ,如:https://crt.sh/ 就是通过https证书查询子域名
  • 通过搜索引擎查询

Layer子域名爆破机
Layer是windows下的一款子域名探测工具,其工作原理是利用子域名字典进行爆破,使用简单容易上手。
subDomainBrute
subDomainBrute的特点是可以用小字典递归的发现三级域名、四级域名、甚至五级域名等不容易被探测到的域名。
FuzzDomain
FuzzDomain 是一款域名爆破工具,爆破的原理其实是通过枚举域名的A记录的方式来实现的。
利用搜索引擎查询
指定站点,然后-就是不包含这个,来查询,详见Google搜索语法。
site:baidu.com -www2.5
HTTP证书查询
证书透明度(Certificate Transparency)是证书授权机构的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索一些公开的CT日志。在线网站:https://crt.sh

1.4 网站真实IP查询

对应给定的目标,例如一个网站,首先获得的是目标域名,下一步就是找到域名背后的服务器ip,由于当前网站大多使用CDN(内容分发网络)对网站访问流量进行分流和一定程度的攻击防护,所以找到CDN背后的服务器真实ip是必须的。
CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。

1.4.1 域名解析
  • 传统访问:用户访问域名–>解析服务器IP–>访问目标主机
  • 普通CDN:用户访问域名–>CDN节点–>真实服务器IP–>访问目标主机
  • 带WAF的CDN:用户访问域名–>CDN节点(云WAF)–>真实服务器IP–>访问目标主机

在渗透测试中,为了要知道网站服务器的真实IP,我们必须绕过CDN查找出网站的真实ip地址。

1.4.2 CDN检测方法

很简单,使用不同地方的 ping 服务,查看对应 IP 地址是否唯一,如果不唯一则极有可能是使用了CDN
ping测试网站有:

  • https://wepcc.com/
  • http://ping.chinaz.com/
  • http://ping.aizhan.com/
1.4.3 CDN绕过找真实IP

查询子域名:CDN 价格较高,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
查询主域名:以前用CDN的时候有个习惯,只让WWW域名使用cdn,秃域名不适用,为的是在维护网站时更方便,不用等cdn缓存。所以试着把目标网站的www去掉,ping一下看ip是不是变了。
邮件服务器:一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)。
DNS历史解析记录:也许目标很久之前没有使用CDN,所以可能会存在使用 CDN 前的记录。所以可以通过网站https://www.netcraft.com 来观察域名的IP历史记录。
国外访问:国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此,通过国外在线代理网站访问 ,可能会得到真实的ip地址。
Nslookup查询:查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。
网站漏洞:利用网站自身存在的漏洞,很多情况下会泄露服务器的真实IP地址
Censys查询SSL证书找到真实IP:利用“Censys网络空间搜索引擎”搜索网站的SSL证书及HASH,在https://crt.sh上查找目标网站SSL证书的HASH,然后再用Censys搜索该HASH即可得到真实IP地址
LTM解码法: 当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。

1.5 网站信息扫描

1.5.1 目录扫描

目录扫描的介绍目录扫描可以让我们探索出网站的整体结构。通过目录扫描我们还能扫描敏感文件,后台文件,数据库文件,和信息泄漏文件等等。
目录扫描有两种方式:

  1. 使用目录字典进行暴力才接存在该目录或文件返回200或者403;
  2. 使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。

扫描工具

  • 御剑后台扫描工具
  • DirBuster
  • wwwscan
  • dirb Kali Linux内置工具
  • cansina
1.5.2 端口扫描

收集到IP或者域名后,就要进行端口扫描了。观察开放端口,对每个端口进行详细的分析,判断是否存在漏洞。
常见端口
常用工具如下:
加粗样式
Nmap(端口扫描之王)(使用方式)
Nmap常用命令

-sP/-sn 不进行端口扫描 -p指定端口扫描
-sT TCP全链接扫描,建立完整三次握手过程
-sS SYN半连接扫描,只进行三次握手的前两次
-O 显示服务的详细版本
-b 显示banner信息
-T0~-T5时序选项

Goby

1.5 旁站/C段探测

旁站:
是和目标网站在同一台服务器但开放在其他端口的网站。如果一台服务器通过其上的一个网站拿不下,可以从旁站入手,即同一服务器上的其他网站,最终也可拿下这台服务器。
查询旁站

  • 站长之家
  • webscan

C段:
是和目标服务器处在同一个C段的其他服务器。很多系统并没有绑定域名,通过子域名能够获得的资产是有限的,这时候若想找到更多资产,可从C段入手。

  • google语法 site:211.69.130.*
  • fofa、shodan ip=“211.69.130.0/24”
  • 御剑扫描工具

二、目标指纹信息

2.1 操作系统探测

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

  • 在URL中修改大小写,看页面返回结果;若更改大写后,页面返回正常,则是windows系统服务器,反之则是linux系统服务器。
  • 端口探针通过常见开放端口判断: windows端口:iis 80 RPC 135 SMB 445 Mssql 1433;linux端口:ssh 22 等
  • ping 域名或者URL,查看TTL值,判断操作系统(仅作参考,不一定准确)
  • 使用nmap识别

2.2 中间件平台探测

  • 网站数据包
  • 端口探针
  • 浏览器插件wappalyzer

知道了web服务器是哪种类型后,我们还要探测web服务器具体的版本。比如Ngnix版本<0.83会有解析漏洞 ,IIS6.0会有文件名解析漏洞、IIS7.0会有畸形解析漏洞等。不同的web服务器版本,存在着不同漏洞。

2.3 数据库类型探测

各种数据库都有它的默认端口,根据端口也能知道使用了哪种数据库

  • Oracle:1521
  • Myssql:1433
  • Mysql:3306
  • DB2:5000
  • PostgreSQL:5432
    这几种数据库的语法大体上相同,但是还是有区别。所以我们需要知道目标网站用的是哪种数据库,并且数据库是哪个版本的

2.4 开发语言探测

需要知道网站用的语言类型:php 、jsp 、asp 、aspx 。

  • 可以根据网站URL来判断

  • site:xxx filetype:php

  • 可以根据Firefox的插件来判断

2.5 CMS探测

CMS是Content Management System的缩写,意为"内容管理系统"。 如果网站使用一套存在漏洞的cms,那么就可以使得攻击者更容易的攻击网站。
常见的CMS有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝国、Z-Blog等。
常见的网站指纹识别工具有:whatweb等。
在线指纹识别网站

  • BugScaner:http://whatweb.bugscaner.com/look/
  • 云悉指纹:http://www.yunsee.cn/finger.html
  • WhatWeb:https://whatweb.net/

2.6 WAF探测

Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。探测WAF的原因——WAF也叫Web应用防火墙,WAF的探测很多人都会忽略掉,当我们知道是什么WAF时,可以尝试绕过WAF

常用的两种方式:可用来进行爆破或者弱口令登录以及撞库攻击
2.6.1 提交恶意数据(简单粗暴)
在网站的URL中,提交恶意数据,网站会爆出waf。
2.6.2 kali工具

  • WAFW00F
  • Nmap

在nmap中有两种探测WAF的脚本

1.http-waf-detect脚本
2.http-waf-fingerprint脚本

三、文件信息

3.1 敏感目录探测

3.1.1 常见敏感文件或目录

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

  • robots.txt
  • crossdomain.xml
  • sitemap.xml 后台目录:弱口令,万能密码,爆破
  • 网站安装目录
  • 网站上传目录:截断、上传图片马等
  • mysql管理页面:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
  • phpinfo:会把你配置的各种信息暴露出来
  • 网站文本编辑器:FCKeditor、eWebEditor等 测试文件
  • 网站备份文件(.rar、.zip、.7z、.tar、.gz、.bak) DS_Store文件•vim编辑器备份文件(.swp)
  • WEB-INF/web.xml文件
3.1.2 敏感目录收集方式

网页中寻找

  1. 在robots.txt中看能否发现敏感目录
  2. F12源代码链接处
  3. 通过查看一些图片的属性路径,运气好会发现很多隐藏的目录
  4. 结合域名+目录,用御剑进行扫描,当然也可以手动输入一些常见的后台管理地址进行访问

其他端口中寻找
有时候网站的不同端口中有一些便是专门的后台管理地址。根据经验总结,很多网站8080、8081端口是网站的管理地址。
子域名下寻找
有的时候网站的管理地址会放在子域名下,所以主站什么都找不到的情况下,如果发现子域名,就通过这些方法去子域名下找一下
Google Hacking

3.2 目录泄露漏洞

3.2.1 .git源代码泄露
Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
利用工具:GitHack
项目地址:https://github.com/BugScanTeam/GitHack
扫描目录发现有./git的文件夹时使用GitHack工具成功恢复代码
3.2.2 .cvs源代码泄露
CSV是一个C/S系统,多个开发人员通过中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。主要是针对CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

返回根信息:
http://www.example.com/CVS/Root
返回所有文件的结构:
http://www.example.com/CVS/Entries

漏洞利用工具:dvcs-ripper
项目地址:https://github.com/kost/dvcs-ripper.git

运行示例:
rip-cvs.pl -v -u http://www.example.com/CVS

3.2.3 .svn源代码泄露
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要地方源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露在外网环境,可以使用.svn/entries文件,获取到服务器源码。
漏洞利用工具:Seay SVN漏洞利用工具:SvnExploit
项目地址:https://github.com/admintony/svnExploit/
扫描站点存在/.svn/entries目录,可使用工具成功恢复代码
3.2.4 .hg源代码泄露
Mercurial是一种轻量级分布式版本控制系统,使用hg init的时候会生成.hg。
漏洞利用工具:dvcs-ripper
项目地址:https://github.com/kost/dvcs-ripper.git

运行示例:
rip-cvs.pl -v -u http://www.example.com/.hg/

3.2.5 .DS_store文件泄露
.DS_store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_store上传部署到服务器,可能造成文件目录结构泄露,特别是备份文件、源代码文件。
漏洞利用工具:ds_store_exp
项目地址:https://github.com/lijiejie/ds_store_exp

运行示例:
ds_store_exp.py http://xxx.com/.DS_Store

3.2.6 网站备份文件泄露
管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。常见的备份文件后缀:.rar、.zip、.7z、.tar.gz、.bak、.txt、.old、.temp
3.2.7 SWP文件泄露
swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为.filename.swp。
3.2.8 WEB-INF/web.xml泄露
WEB-INF是Java的Web应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含以下文件或目录:

WEB-INF/web.xml:Web应用程序配置文件,描述了servlet和其他的应用组件及命名规则
WEB-INF/database.properties:数据库配置文件
WEB-INF/classes/:一般用来存放Java类文件(.class)
WEB-INF/lib/:用来存放打包好的库(.jar)
WEB-INF/src/:用来存放源代码

通过找到 web.xml 文件,推断 class 文件的路径,最后直接下载 class 文件,再通过反编译 class 文件,得到网站源码。

3.3 公司敏感信息探测

当确定了公司后,我们可以去互联网上查询与该公司有关的任何信息。比如,公司的邮箱格式,公司的员工姓名,以及与该公司有关的任何信息。并且,我们还可以去Github、码云等代码托管平台上查找与此有关的敏感信息,有些粗心的程序员在将代码上传至代码托管平台后,并没有对代码进行脱敏处理。导致上传的代码中有包含如数据库连接信息、邮箱密码、还有可能有泄露的源代码等。
在信息时代,互联网存在着大量的数据,搜索引擎是我们获取信息的道路。
白色引擎

  • Baidu
  • Google
  • Bing
  • 搜狗
  • Yohoo

黑暗引擎:

  • Shodan:https://www.shodan.io/
  • zooeye:https://www.zoomeye.org/
  • fofa:https://fofa.so/
  • censys:https://censys.io/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值