概念:域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。 [1]
由于 IP 地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
1、什么是DNS
概念:域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。
2、本地 HOSTS 与 DNS 的关系
本地 HOST 可以重定向解析的 IP 地址
没有修改 HOST 的时候,ping 这个网站解析的 IP 地址是 47.75.212.155
找到本地 HOST 文件【路径:C:WindowsSystem32driversetchosts】
选择记事本打开的方式,在里面修改网站对应的 IP 地址
再次 IP 该网站,解析出来的 IP 地址就是 1.2.3.4
ping 某个网站的时候,会先到 HOST 文件看一下有没有该域名对应的 IP 地址,如果没有才会去互联网上的 DNS 去解析
举个例子:
Steam 上下载游戏会比较慢,因为访问的是国外(国内访问国外)的 IP ,有些加速器通过修改 HOST 访问国内的 IP (该地址是一个缓存节点),这样就可以提高下载速度(国内访问国内)
3、CDN 是什么,与 DNS 的关系
概念:CDN 即内容分发网络。CND 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
(说白一点:CDN 是一种节点技术)
好处:
①、提高临近用户的访问速;
②、每个节点上保存的书缓存数据,IP 地址也不是源站的 IP ,黑客进行安全检测的时候检测的也只是缓存的数据,没有意义,在一定程度上加大了黑客的工具难度
但是 CND 出现的本意并不是阻碍黑客的工具,只是为了提升用户的访问速率
4、常见的 DNS 安全攻击有哪些
①、DNS 劫持
DNS劫持又称域名劫持,是攻击者利用缺陷对用户的DNS进行篡改,将域名由正常IP指向攻击者控制的IP,从而导致访客被劫持到一个不可达或者假冒的网站,以此达到非法窃取用户信息或者破坏正常网络服务的目的。
DNS劫持可用于DNS域欺骗(攻击者通常目的是为了显示不需要的广告以产生收入)或用于网络钓鱼(为了让用户访问虚假网站并窃取用户的数据和凭据)。互联网服务提供商(ISP)也可能通过DNS劫持来接管用户的DNS请求,收集统计数据并在用户访问未知域名时返回广告或者屏蔽对特定网站的访问。
②、DNS 放大攻击
DNS放大攻击是一种流行的DDoS攻击形式,其中目标系统被来自公共DNS服务器的查询响应淹没。攻击者向公共DNS服务器发送DNS名称查询,使用受害者的地址作为源地址,导致公共DNS服务器的响应都被发送到目标系统。
攻击者通常会查询尽可能多的域名信息,以最大限度地发挥放大效果。通过使用僵尸网络,攻击者也可以毫不费力地生成大量虚假DNS查询。此外,由于响应是来自有效服务器的合法数据,因此很难防止DNS放大攻击。
③、DNS 缓存投毒
DNS缓存投毒又称DNS欺骗,是一种通过查找并利用DNS系统中存在的漏洞,将流量从合法服务器引导至虚假服务器上的攻击方式。
在实际的DNS解析过程中,用户请求某个网站,浏览器首先会查找本机中的DNS缓存,如果DNS缓存中记录了该网站和IP的映射关系,就会直接将结果返回给用户,用户对所得的IP地址发起访问。如果缓存中没有相关记录,才会委托递归服务器发起递归查询。
这种查询机制,缩短了全球查询的时间,可以让用户获得更快的访问体验,但也存在一定的安全风险。如果攻击者通过控制用户的主机或者使用恶意软件攻击用户的DNS缓存,就可以对DNS缓存中的域名映射关系进行篡改,将域名解析结果指向一个虚假IP。
④、DNS 隧道
另一种流行且经验丰富的攻击模式是DNS隧道。这种攻击主要利用客户端-服务器模型注入恶意软件和其他数据。利用这些数据的有效负载,网络犯罪分子可以接管DNS服务器,然后可能访问其管理功能和驻留在其上的应用程序。
DNS隧道通过DNS解析器在攻击者和目标之间创建隐藏连接,可绕过防火墙,用于实施数据泄露等攻击。在大多数情况下,DNS隧道需要借助能够连接外网的受感染系统作为跳板,来访问具有网络访问权限的内部DNS服务器。
⑤、僵尸网络反向代理(Fast Flux)
Fast Flux是一种DNS规避技术,攻击者使用僵尸网络隐藏其网络钓鱼和恶意软件活动,逃避安全扫描。攻击者会使用受感染主机的动态IP地址充当后端僵尸网络主机的反向代理。Fast Flux也可通过组合使用点对点网络、分布式命令和控制、基于Web的负载平衡和代理重定向等方法,使恶意软件网络更难被检测到。
1、什么是后门
后门是指恶意程序或代码,通过绕过正常的访问控制机制,使攻击者能够在目标系统中保持持久的访问和控制权限。后门通常被用于非法入侵、数据盗取、远程控制等恶意活动。
常见的后门类型包括:
- 逻辑后门:通过在代码中插入特定的条件或逻辑,使攻击者可以在特定条件下获得未授权的访问权限。(黑客遗留的后门文件,网站后门webshell)
- 远程后门:通过在目标系统上开放特定端口或服务,使攻击者可以远程访问和控制目标系统。
- 无文件后门:不需要在磁盘上留下可疑文件,而是利用系统本身的功能或合法进程来实现持久访问。
- 超级用户后门:通过获取系统管理员或超级用户的权限,攻击者可以完全控制目标系统。
1、Web 的组成架构模型
①、网站源码
分脚本类、分应用方向
②、操作系统
Windows、Linux
注意:服务器的操作系统和我们平时用的操作系统是有区别的,比如说我们平时用的是 Windows xp,而服务器上用的是 Windows Server 2008 之类的
③、中间件(搭建平台)
Apache 、lis 、Tomcat 、nginx 等
④、数据库
access 、MySQL 、mssql 、oracle 、sybase 、db2 、postsql 等
- SQL注入
- 文件上传
- XSS
- 代码执行
- 变量覆盖
- 逻辑漏洞
- 反序列化
- 未授权访问
- 文件包含漏洞
......
方法一:
使用软件:Layer子域名挖掘机
方法二:
利用搜索引擎搜索
方法三:
使用 kali 工具 :Sublist3r
【图片截至:kali sublist3r子域名收集_kali枚举子域名-CSDN博客】
注意:Sublist3r 是需要下载后才能用的
kali信息收集二 Sublist3r安装以及出现的问题_sublist3r安装方法-CSDN博客
1、HTTP 简要通信过程
建立连接 -> 发送请求数据包 -> 反回响应数据包 -> 关闭连接
1、浏览器建立与 web 服务器之间的连接
2、浏览器将请求数据打包(生成请求数据包)并发送到 web 服务器
3、web 服务器将处理结果打包(生成响应数据包)并发送给浏览器
4、web 服务器关闭连接
2、HTTPS 的通信过程
1、请求行:请求类型/请求资源路径、协议的版本和类型
2、请求头:一些键值对,浏览器与 web 服务器之间都可以发送,特定的某种含义
3、空行:请求头与请求体之间用一个空格隔开
4、请求体:要发送的数据(一般 post 提交会使用);例如:user=123&pass=123
例:
# Request Headers
POST /adduser HTTP/1.1
HOST:localhost:8030
Connection:keep-alive
Content-Length:16
pragma:no-cache
Cache-Control:no-cache
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent:Mozilla/5.0 (Windows NT 6.1;Win64;x64)
AppleWebKit/537.36 (KHTML,like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type:application/x-www-form-urlencoded
Accept:*/*
Accept-Encoding:gzip,deflate,br
Accept-Language:zh-CN,zh;q=0.9
# Form Data
name=name&age=11
#请求行
请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,他们用空格分享。
例如:GET / index.html HTTP/1.1
HTTP 规划定义了 8 种可能得请求方法:
GET:检索 URL 中标识资源的一个简单请求
HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接受被写入客户端输出流中的数据的请求
PUT:服务器保存请求数据作为指定 URL 新内容的请求
DELETe:服务器删除 URL 中命令的资源的请求
OPTIONS:web 服务器反馈 Http 请求和其头标的请求
CONNECT:已文档化,但当前未实现的一个方法,预留做隧道处理
#请求头
由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器
HOST:主机或域名地址
Accept:指浏览器或其他客户可以接受的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格式。
User-Agent:是客户浏览器名称
Host:对应网址 URL 中的 Web 名称和端口号
Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语
connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用 Keep-Alive 为默认值,这样,当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接
cookie:浏览器用这个属性向服务器发送 cookie。cookie 是在浏览器中寄存的小型数据体,他可以记载和服务器相关的用户信息,也可以用来实现回话功能。
Referer:表面产生请求的网页 URL。比如从网页 /icconcept/index.jsp 中点击一个链接到网页 /icwork/search,向服务器发送的 GET/icwork/search 中的请求中,Referer 是 http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪 web 请求是从什么网站来的。
Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的 getContentType()方法取得。
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 web 响应之后先解码,然后再检查文件格式。
#空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
#请求数据
使用 POST 传递,最常使用的是 Content-Type 和 Content-Length 头标。
#Response 请求数据包数据格式
一个响应由四个部分组成:状态行、响应头标、空行、响应数据。
1、状态行:协议版本、数字形式的状态代码和状态描述,各元素之间以空格分隔
2、响应头标:包含服务器类型、日期、长度、内容类型等
3、空行:响应头与响应体之间用空行隔开
4、响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTTP响应码:
1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误
5xx:服务器错误
200 存在文件
403 存在文件夹
3xx 均可能存在
404 不存在的文件及文件夹
500 均可能存在
#响应头标
像请求头标一样,他们指出服务器的功能,标识出响应数据的细节。
#空行
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。
#响应数据
HTML 文档和图像等,也就是 HTML 本身。
1、IP地址去扫描网站目录比域名扫描能获取到更多的信息
由于域名解析的是某个特定的文件夹,所以用域名扫描只能扫描到该特定文件夹下的文件
用 IP 地址扫描可以扫描到域名对应特定文件的上一级文件内容,所以可获取更多信息
用域名访问是不需要指定文件路径的,因为已经解析好了,但是用 IP 访问页面是需要指定路径的,默认路径不是我们想要的页面,这也证明了上面的说法
【域名在访问的时候会指向某个目录,IP 在访问的时候会指向根目录】
【CMS 指开源程序】
后台目录 (admin)
模版目录 (template)
数据库配置文件(config.php)
该文件中可以获取到数据库的地址、账号、密码等重要信息
有数据库配置文件,数据库才能和网站进行通讯
Web 安全学习网站:Web安全学习笔记 — Web安全学习笔记 1.0 文档
社交、论坛、门户、第三方、博客等
论坛的话,像 xss 漏洞就比较突出是,博客这种漏洞一般比较少【网站越简单漏洞越少】等
搜索、闲鱼淘宝、第三方源码站等等
1、识别操作系统常见方法
①、改变网站地址的大小写,Windows 操作系统大小写不敏感;Linux 操作系统的大小写敏感
②、根据 TTL 值判断
不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:
1、WINDOWS NT/2000 TTL:128 2、WINDOWS 95/98 TTL:32 3、UNIX TTL:255 4、LINUX TTL:64 5、WIN7 TTL:64
由此可以猜测,该网站的操作系统是 WINDOWS NT/2000 (不一定准确)
③、通过 kali 的 nmap 工具:
问题:kali 网络无法访问
ping 一下 ip 地址,发现提示我们网络无法访问
我们用 ifconfig 看一下 ip
发现只有 lo,没有 eth0,输入 dhclient -v
重新看一下 ip
再次使用 nmap
(不一定准确)
nmap 命令的总结
【内容截取自:Nmap常用命令总结_nmap -ss-CSDN博客】
2、识别操作系统的意义
用于判断哪些漏洞适用,哪些不适用,后期上传哪些文件能够被系统兼容,哪些不能
3、漏洞的影响范围
①、可以提权的漏洞(对我们来说才是有意义的)
②、无法提权,只对服务器或网站起一定的干扰(没什么意义)
【网站分为静态和动态,静态网站是没有漏洞的,动态才有,因为静态网站没有数据的传递】
1、数据库识别
①、有网站,通过网站去判断
有网站的话通常是进行组合的
ASP + Access
php + mysql
aspx + mssql
jsp + mssql,oracle
python + mongodb
......
【如果是 Linux 的话可以之间将 mssql 和 Access 排除,这两个只能用于 Windows 系统】
②、没网站可以用 nmap 去扫端口
常见数据库默认开放的端口
Oracle :1521
MySQL:3306
SQLServer:1433
MongoDB:27017
Redis:6379
memcached:11211
db2:5000
pointbase:9092
......
所以通过端口扫描,看看开放哪些端口从而判断使用什么数据库
2、判断数据库类型的意义
和操作系统一样的,不同的数据库写法机制不一样,产生的漏洞也不同
信息收集-CDN绕过
CDN 即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程
①、利用网上的超级ping,然后看返回的 id 是不是都一样,都一样证明没有 CDN ,很多不同的证明有 CDN
上图就表示没有 CDN ,因为返回的 IP 地址都是同一个
这个就是使用了 CDN 的,因为不同地方返回的结果不同
①、子域名查询
②、邮件服务查询(邮箱一般都是内部人在使用,所以没必要设置 CDN)
③、国外地址请求
④、遗留文件,扫描全网
⑤、黑暗引擎搜索特定文件
- shodan
- zoomeye
- fofa
⑥、DNS 历史记录,以量打量(以量打量也就是我们常说的 DDOS 攻击)
- 比如说节点的流量是 100 兆,当是这 100 兆访问完了,接下来访问的就是真实的 ip 了
3.1、xueersi 网站
【超级ping:多个地点Ping服务器,网站测速 - 站长工具 (chinaz.com)】
都是同一个网段的
访问网站的时候,加 www. 和不加访问的效果都是一样的,但是在解析上可能会有区别
星号表示索引解析到 47.75.212.155 ,也就是说没加 www 也可以解析到对应的 ip 地址即:
*.xiaodi8.com 和 www.xiaodi8.com 效果一样,不输入 www 就使用 *.xiaodi8.com
但是有一些管理员他在设置 CDN 时只设置了上图的第二条,而第一条没有设置,所以在超级 ping ip 的时候,ping xiaodi8.com 和 ping www.xiaodi8.com 的结果是不同的,ping xiaodi8.com 就可以得到真实的 ip
用该网站可以验证一下
Get Site IP - Find IP Address and location from any URL (get-site-ip.com)
3.2、sp910.com
也可以用上面的方法,也是 *.sp910.com 这条没加 CDN
不过这个例子主要是说另一个方法:
第三方网站:
情报社区:x.threatbook.cn
进行 DNS 历史记录查询,追寻他很久以前没做 CDN 的时候(不过不一定准确,有可能后面换了)
还可以收集它的子域名,用子域名去 ping 也可能可以找到真实的 ip
3.3、mozhe
邮件源码测试对比第三方查询
利用墨者学院绑定QQ邮箱,让后用 QQ 邮箱查看 IP
这条就是了,接下来我们用第三方工具再查一下,看看结果
两条不一样要怎么确认
方法一:通过查询网站公司所在地址来确定
所以地址是重庆的那条哦大概率就是了,不过应该是修复或者换了吧,我上面两个都不是重庆的,这只是提供一个思路而已。
在安全测试中,信息收集是非常重要的一个环节,此环节的信息将影响到后续的成功几率,掌握信息的多少将决定发现漏洞机会大小,换言之决定着是否能完成目标的测试任务。也可以很直接的跟大家说:渗透测试的思路就是从信息收集这里开始,与大牛的差距也是从这里开始!
# CMS 识别技术
# 源码获取技术
# 架构信息获取
# 站点搭建分析
搭建习惯 - 目录型站点
搭建习惯 - 端口类站点
搭建习惯 - 子域名站点
搭建习惯 - 类似域名站点
搭建习惯 - 旁注,C段站点
- 旁注:同服务器,不同站点
前提条件:多个站点服务器
192.168.1.100
www.a.com
www.b.com
- C段:同网段不同服务器不同站点
192.168.1.101
www.c.com
www.d.com
(目标网站拿不下,可以通过获取同网段的不同站点信息,拿到服务器权限后进行内网的安全测试)
herrrb.com上的同IP网站,herrrb.com同IP站点域名,herrrb.com反查域名 - WebScan
搭建习惯 - 搭建软件特征站点
WAF 全称为 Web Application Firewall,和传统防火墙的区别是,它是工作在应用层的防火墙,主要对 web 请求/响应进行防护。【WAF 的防御往往滞后于黑客的攻击,无法对新型的攻击进行有效的识别和阻断】
【图片截取自:WAF基本原理与部署方式-CSDN博客】
WAF 分为非嵌入型 WAF 和嵌入型 WAF,非嵌入型指的是硬 WAF、云 WAF、虚拟机 WAF之类的;嵌入型指的是 web 容器模块类型 WAF、代码层 WAF。
通过工具 wafw00f (kali 自带)
命令:
wafw00f ip(或者 url):测试网站是否存在 waf
wafw00f -l:查看当前 wafw00f 支持检测哪些 waf
【注意:如果存在 waf 一定不要直接用扫描工具去扫,不然可能刚开始扫,ip 就被封了】
有一些网站响应信息里有:X-Powered-By:WAF (有这个就证明存在 waf)