07. 渗透测试之针对网站的信息收集
01 信息收集简介
什么是信息收集
信息收集(Information Gathering)是指通过各种方式获取所需要的信息。信息收集是信息得以利用的第一步,也是关键的一步。信息收集工作的好坏,会影响整个渗透流程的进行。收集的信息越多后期可进行测试利用的目标就越多。信息收集包含资产收集但不限于资产收集。
信息收集的意义
信息收集对于渗透测试前期来说是非常重要的。信息收集是渗透测试成功的保障。只有我们掌握了目标网站或目标主机足够多的信息之后,才能更好地进行渗透测试。
信息收集的分类
主动信息收集
通过直接访问网站,在网站上进行操作,对网站进行扫描等。这种是有网络流量经过目标服务器的信息收集方式。
被动信息收集
基于公开的渠道,比如搜索引擎等,在不与目标系统直接交互的情况下获取信息,并且尽量避免留下痕迹。
这两种方式各有优势,主动信息收集你能获得更多的信息,但是痕迹较为明显,容易被溯源。被动信息收集因为不是针对网站进行特定的扫描,所以一般来说收集的信息会相对较少,但是你的行动并不会被目标主机发现。所以我们要灵活运用不同的收集方式,才能保证信息收集的完整性。
02 域名资产收集
2.1 域名介绍
域名(Domian Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网络名称系统(DNS,Domian Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
2.2 域名的分类
顶级域名:.com .org .cn .net
二级域名:baidu.com google.com
三级域名:www.baidu.com www.google.com
政府域名:.gov
商业域名:.com
教育域名:.edu
2.3 whois查询
whois查询的重要性:通过whois查询可以获得域名注册者邮箱地址等信息,一般情况下对于中小型网站域名注册者就是网站管理员。利用搜索引擎对whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
查询方法:可通过以下网站进行在线查询
c 站长之家查询接口
https://whois.aliyun.com/ 阿里云查询接口
https://www.whois365.com.cn/ 全球whois查询
2.4 子域名收集
子域名的概念:
子域名指二级域名,二级域名是顶级域名(一级域名)的下一级。
比如mail.hetian.com和bbs.hetian.com是hetian.com的子域,而hetian.com则是顶级域名.com的子域。
搜索引擎获取:
google hacking:通过google搜索语法 site:hetianlab.com 查找网站根域名带有hetianlab.com字段的网站获取子域名
https://fofa.info/ 通过fofa搜索语法domain = "baidu.com"查找根域名带有此字段的站点
https://www.zoomeye.org/ 钟馗之眼搜索语法site:baidu.com查找根域名带有此字段的站点**(不太常用)**
https://www.shodan.io shodan搜索语法 hostname:baidu.com 查找根域名带有此字段的站点
https://quake.360.cn/quake/#/index 360搜索语法domain:"baidu.com"查找根域名带有此字段的站点
https://chaziyu.com/ 一个在线子域名查询站点
https://phpinfo.me/domain/
https://hunter.qianxin.com
工具收集:
Layer子域名挖掘机:(不太推荐)
https://github.com/euphrat1ca/LayerDomainFinder/releases/
03 端口探测扫描
3.1 端口简介
端口介绍:
在Internet上,各主机间通过TCP/IP协议发送和接受数据包,各个数据包根据其目的主机的IP地址来进行网络中的路由选择,从而顺利地将数据包传送给目标主机
协议端口
根据提供服务类型的不同,端口可分为以下两种:
TCP端口:TCP是一种面向连接的可靠的传输层通信协议
UDP端口:UDP是一种无连接的不可靠的传输层协议
TCP协议和UDP协议是独立的,因此各自的端口号也互相独立。
3.2 端口类型
-
周知端口(Well Known Ports)
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是”80“。网络服务时可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址栏后加上冒号 ”:“,再加上端口号。比如使用 ”8080“ 作为WWW服务的端口,则需要在地址栏里输入 ”网址:8080“。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
-
动态端口(Dynamic Ports)
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
-
注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口没有被服务器资源占用的时候,可以为用户动态选用为源端口。
3.3 常用端口
渗透测试常用端口号
3.4 端口探测扫描
nmap下载地址
http://www.nmap.com.cn/
基础用法
nmap 127.0.0.1 -p 80 (指定单个端口)
nmap 127.0.0.1 -p 1-100 (多个端口)
nmap 127.0.0.1 -p-(所有端口)
扫描目标服务版本 nmap -O -sV 127.0.0.1 -p 80
全面扫描 nmap -A 127.0.0.1 -p-
扫描多个目标
nmap 127.0.0.1 127.0.0.2
nmap 127.0.0.1-100
nmap -iL target.txt(nmap在同一目录下,扫描这个txt内的所有主机)
nmap -sS -v -T4 -Pn -p 0-65535 127.0.0.1 扫描全部端口
nmap -sV -T4 -Pn 127.0.0.1 扫描服务版本信息
nmap -T5 -O -A -V --script vuln 127.0.0.1 简单检测是否存在漏洞问题
Railgun1.3.8.0
04 自动化web扫描工具ARL灯塔使用
4.1 自动化web扫描工具ARL灯塔搭建
安装docker
添加Docker PGP key:
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
配置Docker APT repository:
echo ‘deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable’ | sudo tee /etc/apt/sources.list.d/docker.list
更新APT
sudo apt-get update
如果您安装了旧版本的Docker,请卸载它们:
apt-get remove docker docker-engine docker.io
安装docker:
apt-get install docker-ce
查看docker状态:
systemctl status docker
启动docker:
systemctl start docker
开机自动启动:
systemctl enable docker
安装pip,kali默认安装了python2.7 python3.7,所以直接使用apt安装pip
apt install python3-pip
安装docker-compose:
pip install docker-compose
安装git:
apt-get install git
拉取ARL文件
git clone https://github.com/TophantTechnology/ARL
进入目录
cd ARL/docker
docker volume create arl_db
docker-compose pull
docker-compose up -d 开启
输入服务器地址默认端口为5003
https://192.168.34.121:5003/login 进行访问
默认端口5003(https),默认用户名密码为admin/arlpass