信息收集是指通过各种方式获取所需要的信息。信息收集是信息得以利用的第一步,也是关键的一步。信息收集工作的好坏,会影响整个渗透测试流程的进行。收集的信息越多后期可进行测试的目标就越多。信息收集包含资产收集但不限于资产收集。
信息收集的意义
信息收集对于渗透测试前期来说是非常重要的。正所谓,知己知彼百战不殆,信息收集是渗透测试成功的保障,只有我们掌握了目标网站或目标主机足够多的信息之后,才能更好地进行渗透测试。
信息收集的分类
主动信息收集
通过直接访问网站,在网站上进行操作,对网站进行扫描等。这种是有网络流量经过目标服务器的信息收集方式。
被动信息收集
基于公开的渠道,比如搜索引擎等,再不与目标系统直接交互的情况下获取信息,并且尽量避免留下痕迹。
这两种方式各有优势,主动信息收集你能获取更多的信息,但是痕迹较为明显,容易被溯源。被动信息收集因为不是针对网站进行特定的扫描,所以一般来说收集的信息会相对比较少,但是你的行动并不会被目标主机发现。所以我们要灵活运用不同的收集方式,才能保证信息收集的完整性。
域名,又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS)来将域名和IP地址相互映射,使人更方便访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
eg:192.168.1.1 ————> www.baidu.com
这里的www.baidu.com就是域名
whois查询的重要性:通过whois查询可以获得域名注册者邮箱地址等信息。一般情况下对于中小型网站,域名注册者就是网站管理员。利用搜索引擎对whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
查询方法:可通过以下网站进行在线查询:
https://whois.chinaz.com/ 站长之家查询接口
https://whois.aliyun.com/ 阿里云查询接口
https://www.whois.com/cn/ 全球whois查询
子域名指二级域名,二级域名是顶级域名(一级域名)的下一级。比如mail.destiny.com和bbs.destiny.com是destiny.com的子域,而destiny.com则是顶级域名.com的子域。
搜索引擎获取:
google hacking:通过谷歌搜索语法site:baidu.com查找网站根域名带有site:baidu.com字段的网站获取子域名
https://fofa.info/ 通过fofa搜索语法domain=“baidu.com”查找根域名带有此字段的站点
https://zoomeye.org/ 钟馗之眼搜索语法site:baidu.com查找根域名带有此字段的站点
https://www.shodan.io/ shodan搜索语法hostname:baidu.com查找根域名带有此字段的站点
https://quake.cn/quake/#index 360搜索语法domain:”baidu.com”查找根域名带有此字段的站点
https://chaziyu.com/ 一个在线子域名查询站点
Layer子域名爆破:
burp插件domain_hunter_pro收集:
https://github.com/bit4woo/domain_hunter_pro/releases/download/v1.4/domain_hunter_pro-v1.4-jar-with-dependencies.jar
通过浏览该网站主站点功能等操作可自动获取该站点的子域名
![]()
旁注:同服务器下不同站点
C段:同网段不同服务器下不同站点
IP反查:利用IP获取服务器解析域名
为何要获取旁注和C段:
旁注:服务器上存在A,B两个站点,A是测试目标,没有发现漏洞无法测试,这个时候可以借助旁注查询获取B站点,通过B站点的测试进一步获取A目标的权限。
https://www.webscan.cc/通过输入你想要查询的网站,来获取相同ip服务器下的不同站点
![]()
C段:如果服务器是独立站点或其他站点也无漏洞利用时,可以获取同网段服务器下的站点信息,进行安全测试,获取到同网段下的某台服务器权限,进行内网安全测试获取指定服务器权限。
https://chapangzhan.com/通过域名ip解析获取目标ip地址进行C段查询,此条件必须要获取到目标真实ip
![]()
ip反查:通过获取到的ip反差域名信息
http://ip.yqie.com/
http://stool.chinaz.com/same
https://tools.ipip.net/ipdomain.php
通过得到的域名查询ip:
http://ip.tool.chinaz.com/
https://www.webscan.cc/
知道一个站点的域名需要得到它的IP以便之后获取端口信息或扫描等后续工作
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。通俗理解为:用于保护网站,防黑客,放网络攻击的安全防护系统;是最有效,最直接的Web安全防护产品。
功能:
1.使用工具识别:wafw00f
https://github.com/EnableSecurity/wafw00f
前提:本地配置好python环境
安装:在此目录下创建CMD窗口,输入 python setup.py install 。安装成功后,显示版本信息.
使用:进入wafw00f文件夹,启动cmd。输入python main.py url 即可以探测目标网站是否存在waf。
![]()
这种是没有WAF的显示:
这种是有WAF的显示:
这里显示的是有safedog的waf
2.看图识别网址(转载自
):
(1) D盾
![]()
(2) 云锁
![]()
(3) UPUPW安全防护
![]()
(4) 宝塔网站防火墙
![]()
(5) 网防G01
![]()
(6) 护卫神
![]()
(7) 网站安全狗
![]()
(8) 智创防火墙
![]()
(9) 360主机卫士或360webscan
![]()
(10) 西数WTS-WAF
(11) Naxsi WAF
![]()
(12) 腾讯云
![]()
(13) 腾讯宙斯盾
![]()
(14) 百度云
![]()
(15) 华为云
![]()
(16) 网宿云
![]()
(17) 创宇盾
![]()
(18) 玄武盾
![]()
(19) 阿里云盾
(20) 360网站卫士
![]()
(21) 奇安信网站卫士
![]()
(22) 安域云WAF
![]()
(23) 铱讯WAF
![]()
(24) 长亭SafeLine
![]()
(25) 安恒明御WAF
![]()
(26) F5 BIG-IP
![]()
(27) Mod_Security
![]()
(28) OpenRASP
![]()
(29) dotDefender
![]()
(30) 未知云WAF
![]()
参考链接
https://www.mad-coding.cn/2019/12/19/waf的识别与绕过(不断补充)
CDN即内容分发网络。CDN是构建在网络之上的内容分发模块,依靠部署在各地的边缘服务器,通过中心平台的负载均衡,内容分发,调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
带CDN的网站访问流程:
nslookup:在windows中的cmd界面输入nslookup进入域名解析操作,如出现多个解析结果则存在CDN,只有一个结果则不存在CDN
各地ping:
http://ping.chinaz.com/
https://www.17ce.com/
用多种各地ping的服务,查看对应IP地址是否唯一,唯一则不存在CDN,相反则存在带有CDN:
![]()
不带有CDN:
![]()
像这种只有一个地址的就是没有CDN的:
![]()
出现不同的IP就是有CDN检测的:
![]()
子域名绕过:https://ip.tool.chinaz.com/ipbatch
因为成本问题,可能一些网站只有主站存在CDN,子域名网站不存在,且子站和主站搭载在同一台服务器上或同一网段服务器上则可以通过子站来辅助绕过CDN。
去掉www访问:
因为站点解析设置访问www.baidu.com与访问baidu.com是相同的操作,但可能因为管理员疏忽设置,只对www.baidu.com进行了CDN设置,并未对baidu.com进行设置,与子域名绕过类似
以www.sp910.com为例:
这种情况就说明它只给www.sp910.com配置了CDN
接口查询:https://get-site-ip.com/
可直接查询但结果不一定准确可连用多种方式一同使用,失误率较高,可以作为一种辅助。
邮件服务器绕过:
通过邮件服务器发送邮件对方回应,获取真实IP地址
国外访问:http://www.wepcc.com/
通过国外请求获取真实IP地址,因为成本问题,可能有些网站未开通一些国外地区的CDN节点
文件泄密绕过:
phpinfo文件会泄露网站信息,其中包含网站的真实IP
SERVER_NAME字段中包含服务器IP地址
黑暗空间引擎:
通过这些公开的安全搜索引擎爬取的历史快照,主要的一些特征总结如下:
特有的http头部(如server类型,版本,cookie等信息)
特定的keyword(如title,css,js,url等)
特定的IP段搜索(如fofa支持C段搜索)
参考文章:http://zhuanlan.zhihu.com/p/33440472
得到真实IP后通过修改hosts文件内容添加解析地址,来绕过CDN检测
windows文件位置:C:\Windows\System32\drivers\etc\hosts(要用notepad++之类的。用记事本无法修改,会变成txt文件)
Linux文件位置:/etc/hosts
端口介绍:
在Internet上,各主机间通过TCP/IP协议发送和接受数据包,各个数据包根据其目的主机的IP地址来进行互联网中的路由器选择,从而顺利地将数据包顺利的传送给目标主机
协议端口:
根据提供服务类型的不同,端口可分为以下两种:
TCP端口:TCP是一种面向连接的可靠的传输层通信协议
UDP端口:UDP是一种无连接的不可靠的传输层协议
TCP协议和UDP协议是独立的,因此各自的端口号也互相独立。
端口类型:
根据端口和服务的绑定情况,端口可分为公认端口、注册端口和动态端口。
1.公认端口(周知端口):0~1023。这个范围内的端口系统一般保留给一些常用的系统服务,比如WEB服务使用80端口,FTP服务使用21端口。因为这些端口和服务形成了一一对应关系,已被大家所公认,所以这些端口叫做公认端口。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”
但有些系统协议使用固定的端口号,它是不能被改变的,比如139端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.注册端口:1024~49151。这个范围内的端口比较松散地绑定于一些服务,也就是说,和公认端口相比,这些端口和服务并没有形成一一对应关系,许多服务可绑定于这些端口,这些端口同样可用于许多其它目的。这些进程主要是用户选择安装的一些应用程序。这些端口在没有被服务器资源占用的时候,可以被用户端动态选用为源端口。
3.动态端口:49152~65535。这个范围内的端口一般不为服务所使用,它常常被动态分配给客户端,因而这个范围内的端口叫做动态端口。需要注意的是在实际应用中,端口从1024起就开始动态分配了。
渗透测试常用端口:
端口号 | 端口说明 | 攻击技巧 |
---|---|---|
21/22/69 | ftp/tftp:文件传输协议 | 爆破嗅探 ;溢出;后门 |
22 | ssh:远程连接 | 爆破 ;OpenSSH;28个退格 |
23 | telnet:远程连接 | 爆破 嗅探 |
25 | smtp:邮件服务 | 邮件伪造 |
53 | DNS:域名系统 | DNS区域传输;DNS劫持;DNS缓存投毒;DNS欺骗;利用DNS隧道技术刺透防火墙 |
67/68 | dhcp | 劫持 欺骗 |
110 | pop3 | 爆破 |
139 | samba | 爆破 未授权访问 ;远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap | 注入攻击;未授权访问 |
512/513/514 | linux r | 直接使用rlogin远程登录 |
873 | rsync | 未授权访问 |
1080 | socket | 爆破:进行内网渗透 |
1352 | lotus | 爆破:弱口令;信息泄漏:源代码 |
1433 | mssql | 爆破:使用系统用户登录;注入攻击 |
1521 | oracle | 爆破:TNS;注入攻击 |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权访问 |
3306 | mysql | 爆破;拒绝服务;注入 |
3389 | RDP远程桌面 | 爆破;Shift后门 |
4848 | glassfish | 爆破:控制台弱口令;认证绕过 |
5000 | sybase/DB2 | 爆破;注入 |
5432 | postgresql | 缓冲区溢出;注入攻击;爆破:弱口令 |
5632 | pcanywhere | 拒绝服务;代码执行 |
5900 | vnc | 爆破:弱口令 ;认证绕过 |
6379 | redis | 未授权访问;爆破:弱口令 |
7001 | weblogic | Java反序列化;控制台弱口令;控制台部署webshell |
80/443/8080 | web | 常见web攻击控制台爆破;对应服务器版本漏洞 |
8069 | zabbix | 远程命令执行 |
9090 | websphere控制台 | 爆破:控制台弱口令;Java反序列 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权访问 |
27017 | mongodb | 爆破;未授权访问 |
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设置扫描一个网段下的ip nmap -sP 127.0.0.1 /24
扫描目标主机版本(不是很准确) nmap -0 127.0.0.1 -p 80
扫描目标服务版本 nmap -0 -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(扫描IP地址为127.0.0.1—127.0.0.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 -0 -A -v --script vuln 127.0.0.1 简单检测是否存在漏洞问题
自动化web扫描工具ARL灯塔使用
ARL灯塔是信息搜集的工具之一,一款基于Linux搭建的资源信息管理控制器,其作用就是搜集信息,可以快速侦察与目标关联的互联网资产,本次以kali为例,目前暂不支持Windows。
安装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 创建arl_db
docker-compose pull 拉取docker-compose.yml或者docker-stack.yml文件中定义的服务关联的镜像
docker-compose up -d 开启
docker-compose ps 查看系统启动情况,全部up则启动成功
访问https://ip地址:5003即可登录,默认账户admin,密码arlpass
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 创建arl_db
docker-compose pull 拉取docker-compose.yml或者docker-stack.yml文件中定义的服务关联的镜像
docker-compose up -d 开启
docker-compose ps 查看系统启动情况,全部up则启动成功
访问https://ip地址:5003即可登录,默认账户admin,密码arlpass