1-信息收集—DNS域名查询

信息收集在开始web渗透测试之前是一个非常重要的阶段,正所谓“知己知彼,百战不殆”,当我们对目标计算机更了解和掌握更多的信息,对渗透测试工作就越有利。

 

通常在我们确定了渗透的目标后,渗透的思路就是从信息收集开始,主要需要收集的目标信息有以下几点:

域名信息收集

真实ip地址信息

旁站/C段

目标站点指纹

敏感目录文件

端口扫描

目标系统使用的基础技术架构

 

当知道目标域名信息后,我们要做的第一件事就是收集域名的注册信息:包括该域名的DNS服务器信息和注册人的信息,常用的DNS域名收集方式有以下几种:

1. Whois工具

2. NSLOOKUP工具

3. DIG工具

 

1. 社会工程学字典生成—cewl

cewl是一个kali下的字典生成程序,由ruby开发,通过给cewl的爬虫制定URL地址和爬取深度,或者添加外部链接,cewl会返回一个字典文件。

 

cewl常用选项:

-d x:爬行深度x,默认2
-w:将输出结果写入到文件
-e:包括email地址。
-o:允许爬虫访问其他站点
-u:设置user agent
-c:显示发现的每个单词的数量。

例如:

cewl http://www.hengtongaustralia.com/ -d 2 -o -w dict.txt

cewl会爬取网站的每个单词并存放到dict字典文件中

 

2. NSLOOKUP工具

对于公司域名和ip地址信息,可以使用NSLOOKUP工具来进行相关域名信息的收集,NSLOOKUP工具是kali linux的一个DNS域名收集工具:

以查询域名www.sina.com对应的ip地址为例,运行NSLOOKUP工具后直接输入域名,发现查询出来的是c name记录,所谓c name记录就是作为一个域名的别名,用于描述域名,当dns服务器在查询CNAME时会逐级的往下查询,一直查询到ptr或者A记录为止,成功查询后才会做出回应A记录则是web服务器的ip对应的域名(也就是说主机记录),我们可以看到117.169.85.188就是www.sina.com域名对应的服务器ip地址。

 

 

NSLOOKUP工具当然也支持直接查询A记录,通过set type=a命令设置查找A记录:

 

 

NSLOOKUP还能查询MX记录,即邮件交换记录,用于将以该域名结尾的邮件指向对应的邮件服务器,:

例如张三通过sina.com为后缀的地址发送电子邮件时,邮件系统会通过DNS系统查找sina.com域名对应的mx记录,如果存在的话用户就会发送电子邮件到指定邮件服务器上,上图中sina.com域名对应的邮件服务器地址有三个。前面那一部分代表邮件服务器的优先级,越小越优先,会查找优先级高的邮件服务器。

 

查找邮件服务器对应的主机记录(A记录):

以上就是三个邮件服务器对应的主机记录。

 

 

另外通过set type=ns命令可以查找域名对应的域名服务器地址:

还可以通过set type=any命令查询所有类型的记录,或者通过set -q=any 163.com命令查看163.com域名的所有类型记录。

 

 

3. DIG工具

 

使用DIG工具进行DNS域名追踪:

dig工具会把整个dns域名逐步查询解析的过程列出来,例如上图中会先把13台根域服务器进行解析,然后再到com服务器解析,最终到sina.com服务器解析。

 

4. whois工具

whois是一个标准互联网协议,可用于收集网络注册的信息,包括域名,ip等地址信息。简单来说,whois就是就是一个用来查询域名注册信息的数据库(例如域名所有人,域名注册商),在whois查询中得到注册人的名字和邮箱对我们的渗透工作非常有帮助。

 

在kali系统中whois已经默认安装了,我们可以直接输入域名查询DNS域名注册的相关信息:

 

5. 子域名探测

单个网站可能只有一个域名,但有些大型站点可能一个域名下会有很多子域名,例如baidu.com就有很多子域名(map.baidu.com,news.baidu.com等等)。

收集更多的子域名是为了发现更多服务,增加攻击面,提高发现漏洞的概率。特别是我们对一个站点没有找到相关漏洞,束手无策时,可以通过渗透旁站的方式再拿到其权限。

子域名常出现在OA,论坛,商城,等其它管理系统,子域名探测方法:在线查询网站,暴力破解,搜索引擎,CT证书透明,信息泄露,DNS区域传送.

 

在线查询网址:

https://phpinfo.me/domain

https://x.threatbook.cn/

https://dnsdumpster.com/

 

暴力破解工具:layer,subDomainsBrute,Sublist3r

 

subDomainsBrute:

subDomainsBrute工具是一个python编写的子域名暴力破解工具,并且内置了字典来提高子域名爆破的效率, 下载安装地址:https://github.com/lijiejie/subDomainsBrute

 

subDomainsBrute工具内置的字典:

 

常用选项:

  --version                 显示版本信息
  -f FILE              	    指定字典文件,不指定默认为subnames.txt
  -t 			    指定扫描的线程数量
  -p  --process=PROCESS	    扫描进程数量,默认是6
  -o OUTPUT		    扫描结果输出的文件名

 

subDomainsBrute工具的用法,扫描子域名:

 

Sublist3r

Sublist3r工具和subDomainsBrute的作用是类似的,常用选项如下:

-d	//指定子域名
-b	//开启暴力破解
-p	//指定端口
-v	//实时列举搜索结果
-t	//指定线程
-e	//指定搜索引擎,例如-e google,yahoo
-o	//输出到文件

用法:python3 Sublist3r.py -d [子域名]

 

OneForAll

OneForAll工具是一款子域名探测的工具集合,项目地址:https://github.com/shmilylty/OneForAll

在下载安装OneForAll之前,当前系统环境需要python3.6以上,pip3的版本,可以通过pip3 -V命令查看:

┌──(songly㉿kali)-[~]
└─$ pip3 -V
pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9)

 

输入命令进行安装OneForAll:

python3 -m pip install -r requirements.txt

 

OneForAll工具用法:

python3 oneforall.py --target example.com run			//探测单个域名
python3 oneforall.py --targets ./example.txt run		//指定域名文件example.txt

执行完毕后,会在当前/result目录文件下生成一个以域名为文件名的csv文件:

 

6. 真实ip查询

现在大部分的服务器系统架构都会存在cdn节点,我们在渗透过程中需要确定两件事:

  1. 判断目标系统有无cdn节点
  2. 绕过cdn节点,找到目标系统真实的ip地址。

 

单个网站的情况下如何判断有无CDN,一般可通过以下方式去判断,其中一个方式有,则代表有cdn:

1.多地ping网址,看ip是否唯一(可通过https://wepcc.com网站多个线路去ping网址,如果有解析不同ip,则有cdn)
2.访问ping目标网址的ip,如果有cdn,是不能通过ip访问网站的
3.一般有cname记录的,大多数有cdn节点
4.在反查网站的ip时,如果有多个不同的域名,则说明这个ip不是真实ip地址

 

 

多个网站判断是否有无cdn,可以通过github地址:https://github.com/al0ne/Vxscan/blob/master/README.zh-CN.md

获取真实ip可以通过不常用的域名或子域名的方式,可以通过工具来判断:

https://x.threatbook.cn/

https://dnsdb.io

 

子域名扫描器subDomainsBrute也可以获取真实ip

 

7. 旁站/C段

旁站是和目标网站在同一台服务器上的其它网站,而C段就是和目标服务器在同一网络的的其它服务器。

当我们拿到其中一台服务器的权限后相当于进入了内网,也就是说,旁站/C段探测的意义也是发现更多服务,扩大攻击面。

 

旁站探测工具:

站长工具 http://stool.chinaz.com/same?s=ip

webscan  https://www.webscan.cc/

 

C段探测工具:

fofa

zoomeye

nmap

masscan

 

举个例子:192.168.0.1地址,192可以看做是一个A段,168是B段,0是C段,1是D段。nmap工具扫描C段,-p指定端口,-Pn禁止ping探测,跳过主机发现:

nmap -p 1-65535 -Pn 192.168.0.0/24

 

masscan和nmap的功能差不多,号称最快的网络扫描器,不过masscan扫描速度比nmap更快。

<ip/range> IP地址范围,有三种有效格式,1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports> 					指定端口进行扫描
--banners 					获取banner信息,支持少量的协议
--rate <packets-per-second> 			指定发包的速率
-c <filename>, --conf <filename> 		读取配置文件进行扫描
--echo <filename> 						将当前的配置重定向到一个配置文件中
-e <ifname> , --adapter <ifname> 		指定用来发包的网卡接口名称
--adapter-ip <ip-address> 			指定发包的IP地址
--adapter-port <port> 				指定发包的源端口

 

扫描192.168.0.0网段,将扫描的结果以json的数据格式输出到ip.txt文件中:

masscan -p 80,443 -Pn 192.168.0.0/24 -oJ ip.txt

 

8. 目标系统指纹信息

所谓指纹信息指的就是目标系统所使用的技术架构,例如:操作系统,开发语言,web框架,数据库,中间件,cms,waf等等。当我们知道了指纹信息就可以利用相关漏洞对目标系统进行渗透。

常见的指纹信息收集工具和网址:

whatweb,Wappalyzer工具

BugScaner:http://whatweb.bugscaner.com/look/

云悉指纹:http://www.yunsee.cn/finger.html

WhatWeb:https://whatweb.net/

CMS识别:http://whatweb.bugscaner.com/look/

 

1.操作系统指纹识别:

通过nmap工具的-O参数来扫描目标站点的操作系统信息,例如nmap -sV -O 192.168.0.110

 

2.开发语言的识别:

可以通过查看网页的后缀(.do .jsp .asp .aspx .php)

查看首页index的方式,例如百度的index.php可以访问,但是index.jsp访问失败

google hack语法,例如site:qq.com inurl:php能查到,但jsp则没有

通过浏览器F12的web调试工具在network菜单中分析http包的server字段获取web服务器框架

wappalyzer插件可以获取目标站点的操作系统(web服务器框架,开发语言,前端框架,数据库)

 

3.WAF识别: 

手工提交恶意数据或者WhatWaf工具,可以通过./whatwaf -u host命令检测waf

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

 

4.CMS类型识别:可以whatweb,Wappalyzer工具

 

 

9. 敏感目录文件

扫描网站的目录结构,看是否有敏感的目录文件,例如数据库的配置文件,应用的源代码文件,这些信息有利于我们下一步的渗透:

版本控制信息(git/svn)
WEB-INF文件
网站备份文件
配置文件
robots.txt,phpinfo.php
物理路径
目录浏览
系统管理后台

文件泄露有crossdomain.xml和robots.txt,github,svn仓库,html源码,js接口等等。

 

WEB-INF文件是java开发中比较重要,常用的一个配置文件:

WEB-INF/web.xml文件是web应用程序servlet的配置文件

WEB-INF/database.properties文件是数据库配置文件

WEB-INF/classes/目录文件一般是存放java类文件(.class)

WEB-INF/lib/目录是存放打包好的库(.jar)

WEB-INF/src/目录存放php,asp源代码

robots.txt文件是用来限制爬虫的,该文件里定义的内容可以规定那些内容可以被robot访问,那些不能访问,这样我们不想让robot访问的内容就不会被搜索引擎收录。

 

敏感文件探测工具dirsearch

dirsearch是一个python开发的网站目录伟岸扫描工具,主要是扫描敏感的文件或目录。dirsearch常用选项:

-u:            指定URL
-l:            指定URL文件
-e:            网站的语言类型
-X:            排除的脚本类型
-w:            字典
--prefixes:    前缀
-timeout:        超时时间
-s:            2个请求的间隔时间
--proxy:        代理
--exclude-status:排除的状态码,例如有时候扫描的时候会有一些404的文件目录,这样会增加我们分析该网站目录结构的工作量,那么可以通过该选项进行排除
--include-status:包含的状态码,

dirsearch的用法:

python3 dirsearch.py -u https://www.51cto.com -e java -X php,asp --exclude-status=403,401

扫描https://www.jss.com.cn网站的java目录,并过滤php,asp语言的目录,并过滤掉403,401的状态码。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值