渗透测试-Web服务器信息收集
场景引入
双11前夕,受某电商公司所托,对其Web服务等进行全方位的渗透测试,为期1周,执行3轮渗透,并输出渗透测试报告,公司派遣你和其他两名同事入驻该公司。
当前:
- 已获得当前公司许可,人员已入驻该公司并联入内网;
- 已确定测试范围包含域名 *.aaa.com, *.bbb.com, *.ccc.com.cn
你和同事如何开展渗透测试,从哪里开始入手?
PTES 渗透测试标准执行步骤
前期交互阶段
✅ 收集客户需求(拿到客户授权)
✅ 准备测试计划
✅ 定义测试范围与边界(确定渗透测试范围)
✅ 项目管理与规划等
2. 情报收集阶段 ⌛️
威胁建模阶段
漏洞分析阶段
渗透攻击阶段
后渗透攻击阶段
报告阶段
教学目标
教学目标
1.了解收集Web服务器哪些内容及实施顺序;
2.掌握Web搜索、DNS解析、路由探测、查点、扫描等信息收集方法
3.掌握dnsenum、nslookup、whois、traceroute、tcptraceroute、telnet、ping、fping、arping、nmap、p0f等工具的使用
重难点
- nmap命令等使用
Web服务器搜集那些内容
- 目标系统IP地址范围
- 详细的注册信息
- DNS服务位置
- 电话号段
- 外部网络拓扑结构
- 目标网络中活跃的主机
- 操作系统类型
- 开放的端口
- 是否存在已公开披露的安全漏洞
- 用户账号
- 共享资源
- 网络服务类型与版本号
- 服务器配置信息
Web搜索
搜索站点入口及其他不小心暴露的信息
-
Google常见搜索语法
site: 限定搜索域名
intitle: 限定搜索标题
allintitle: 限定标题包含所有关键字
inurl: 限定搜索url
allinurl: 限定url包含所有关键字
filetype:限定文件类型
“”: 精确匹配(不拆分关键字)
+:包含关键字
-:不包含的关键字 -
搜索什么
查找利用php webshell
intitle:"php shell*" "Enable stderr" filetype:php
搜索INC敏感信息
.org filetype:inc
搜索robots等其他敏感信息
"robots.tx"
"disallow:"
filetype:txt
allinurl:/examples/jsp/snp/snoop.jsp
allinurl:phpsysinfo
ipsec filetype:conf
搜索入口及配置文件等
filetype:xls username password email
"ws_ftp.log"
"config.php"
DNS解析
确定某个域名对应的地址范围
- dnsenum命令
dnsenum -enum <域名> - nslookup命令
nslookup <域名> - whois命令
whois是一个行业标准协议,能够通过互联网上面已有数据库查询某个域名的信息
whois <域名>
路由探测
探测网络拓扑结构
- traceroute命令
查看 从当前及其到目标ip中间经过到路由地址
原理:使用IP报文等TTL字段,设置为1,设置为2... 发送报文,路由器获取到IP报文,将IP报文的ttl -1, 当ttl=0时访华一个ICMP报文给源主机,源主机就明确报文到达了哪台服务器
traceroute <ip/域名> - tcptraceroute命令
区别:traceroute发送的时ICMP报文,tcptracerout发送的时TCP 第一次握手包
查点
探测主机是否在线 指定端口是否可链接
- ping命令
检查(主机是否在线存活)连通性
-c 指定发送次数
ping baidu.com -c 3
(Linux)不填会一直发送
-I 指定从哪个网卡发送
-s 指定报文大小
ping example.org -s 60000
默认56,加上8个字节的ICMP包头共64字节
ping attack - telnet命令
检查指定主机端口是否可连接
telnet <ip/域名> 端口
telnet www.baidu.com 80
输入
GET / HTTP/1.1
扫描
扫描存活主机几开放端口
- fping命令
同时检查多个IP或某个网段所有ip
fping...
fping -g <192.168.1.1/24> - arping命令
发起arp请求(局域网广播)对方无法拒绝
3.nmap命令
Nmap(Network Mapper)是一个免费开放的网络扫描和嗅探工具包
用途:
a) 探测一组主机是否在线
b) 扫描主机端口,嗅探所提供的网络服务
c) 探测服务器指纹信息
d) 推断主机所使用的操作系统
a) -sP 使用ping的方式确定目标及其是否存活
nmap -sP 192.168.37.22 扫描指定IP
nmap -sP 192.168.37.22/24 扫描一段IP
b) 端口扫描
nmap 192.168.37.37 扫描常用1000个端口
nmap -p 0-65535 192.168.37.37 扫描所有端口
常用参数:
-sT: tcp connect扫描方式,正常的TCP端口探索,使用网络编程connect api 完成3次握手,判断对方该端口是TCP服务端口;
-sU: udp扫描方式 发送一些UDP报文到目标端口,如果对方不回应,应该启动了UDP如果对方回应一些ICMP报文,端口不可达,UDP服务没启动,如果返回RST,TCP报文,则启动了TCP;
-sS: syn扫描 只发送第一次握手包,观察回不回第二次握手,而不会完成第三次握手,完成3次握手服务器是可以感知的,需要root权限
c) -sV 端口服务指纹识别
nmap -sV -p 22 192.168.1.1
漏洞案例
ftp服务vsftpd 2.3.4 笑脸漏洞
靶机:Metasploitable2
漏洞描述:特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“😃”为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
测试步骤:
- 使用nmap端口扫描metasploitable2主机开放的端口及对应的版本
- 发现21端口ftp服务开放,且使用的是vsftpd2.3.4版本(已知有漏洞)
- 使用Kali主机 ftp
命令链接靶机ftp服务,用户输入a:),密码输入111111,回车 - 使用Kali主机nc
6200 命令连接靶机6200端口,并执行任意shell命令
今日作业
- 扫描Metasploitable2,使用指定的客户端(如ssh、mysql、psql等)尝试连接指定开放的端口
- 搭建Ubuntu虚拟机,安装并启动ftp、mysql、nginx等服务,使用nmap扫描当前虚拟机,获取开放的端口、服务版本及服务器版本等相关信息;