《Web安全基础》01. 基础知识
@
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
1:概念名词
1.1:域名
- 什么是域名
域名是用于标识 IP 地址的字符串。它用于将易于记忆的名称与 IP 地址相关联。
- 域名在哪里注册
域名可以在许多互联网注册机构注册(如 GoDaddy、阿里云、腾讯等)。这些注册机构充当域名的托管人,并向公众出售域名。
- 什么是二级域名或多级域名
二级域名和多级域名是基于域名的层次结构而产生的。
二级域名分为两种。
在国际顶级域名下的二级域名:
国际顶级域名下二级域名,一般是指域名注册人选择使用的网上名称,如 “ yahoo.com ” ;
上网的商业组织通常使用自己的商标、商号或其他商业标志作为自己的网上名称,如 “ microsoft.com ” 。
国家顶级域名下二级域名:
一般是指类似于国际顶级域名的表示注册人类别和功能的标志。例如,在 “ .com.cn ” 域名结构中,“ .com ” 此时是置于国家顶级域名 “ .cn ” 下的二级域名,表示商业性组织,以此类推。
- 域名发现对于安全测试意义
在安全测试中,域名发现是指寻找与目标网站相关的所有域名。
这些域名可能包括子域名、备用域名、相关域名等。
域名发现可以揭示潜在的攻击面,可以帮助安全测试人员发现可能存在的漏洞和安全问题。
1.2:DNS
- 什么是 DNS
DNS(Domain Name System)是一个用于将域名转换为 IP 地址的系统。这个过程被称为域名解析。
DNS 使用 UDP 端口 53。对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。
- 本地 HOSTS 与 DNS 的关系
本地 HOSTS 文件是一个本地的域名-IP地址映射文件。当计算机需要访问特定的域名时,它会首先查找本地 HOSTS 文件,以确定该域名对应的IP地址。如果本地 HOSTS 文件中没有该域名的映射,则计算机将向 DNS 服务器发送查询以获得 IP 地址。
Hosts 文件路径:C:\Windows\System32\drivers\etc\hosts
- CDN 是什么
CDN(Content Delivery Network)是构建在数据网络上的一种分布式的内容分发网。是一个由多个服务器组成的网络,用于提供快速可靠的内容传递服务。
CDN 通过将内容存储在靠近用户的服务器上,以加速用户访问网站和应用程序的速度。
- CDN 与 DNS 的关系
CDN 使用 DNS 来解析访问网站或应用程序所需内容的 IP 地址,并根据用户的位置选择最近的服务器来提供内容。
- 常见的 DNS 安全攻击有哪些
常见的 DNS 安全攻击包括 DNS劫持、域名劫持、缓存投毒和 DDoS 攻击。
1.3:网站开发语言
- 常见的网站开发语言有哪些
asp、php、aspx、jsp、java、javascript、python、ruby 等
- 不同网站开发语言与安全漏洞的关系
关系比较复杂。安全漏洞可能与语言特定的漏洞有关,也可能与编程人员的错误或不安全实践有关。
- 漏洞挖掘、代码审计与不同网站开发语言的关系
漏洞挖掘和代码审计都需要理解不同语言的语法和特定的漏洞类型,并使用适当的工具和技术来识别和纠正潜在的安全问题。
1.4:后门
- 什么是后门
后门(Backdoor)是植入到系统或应用程序中的一种特殊代码或程序方法,以便攻击者绕过安全性控制,从而获取应用或系统的访问权。
在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。
- 有那些后门
常见的后门类型:后门用户账号、后门服务、后门脚本、后门漏洞
- 后门在安全测试中的实际意义
安全测试中,安全测试人员需要通过使用各种技术和工具来识别和验证是否存在后门,以便在攻击者之前发现和修复安全漏洞。
- 关于后门需要了解哪些
需要了解攻击者通常会利用后门访问系统来获取敏感信息、篡改数据、窃取证书、加密文件等。
此外,攻击者还可能使用各种技术和工具来免杀后门与隐藏后门,或通过零日漏洞等未知漏洞来绕过安全控制。
1.5:Web
- Web 的组成架构模型
网站源码:分为脚本类型,分为应用方向
操作系统:windows、linux
中间件(Web搭建平台):apache iis tomcat nginx 等
数据库:access、mysql、oracle、sybase 等
- 架构漏洞安全测试简要介绍
架构漏洞指在系统设计或实现中存在的潜在安全问题。
架构漏洞安全测试主要包括:系统架构分析、模拟攻击、风险评估、测试报告编写。
- 为什么要从 Web 层面为主为首
原因:
Web 应用通常是面向公众的,具有高度可访问性,易受攻击。
Web 网站漏洞相对较多,便于入侵服务器。
Web 作为跳板深入到其他资源相对容易。
1.6:Web 相关安全漏洞
- Web 源码类漏洞
SQL 注入,文件上传,XSS,代码执行,变量覆盖,逻辑漏洞,反序列化等
- Web 中间件漏洞
未授权访问,变量覆盖
- 数据库漏洞
弱口令,权限提升
- 系统层漏洞
提权,远程代码执行
- 第三方应用漏洞
- APP 或 PC 应用结合类
2:数据包
2.1:HTTP
HTTP 协议运行在 TCP 之上,所有传输内容都是明文。端口:80
HTTP 简要通信过程
- 浏览器建立与 web 服务器之间的连接。
- 浏览器将请求数据打包(生成请求数据包)并发送到 web 服务器。
- web 服务器将处理结果打包(生成响应数据包)并发送给浏览器。
- 关闭连接。
2.2:HTTPS
HTTPS 运行在 SSL/TLS 之上,SSL/TLS 运行在 TCP 之上,所有传输的内容都经过加密。端口:443
HTTPS 简要通信过程
HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费。
2.3:请求数据包
详见《网络协议从入门到底层原理》系列。这里只简单介绍。
2.3.1:Request 请求
HTTP 规划定义了 8 种可能的请求方法:
请求方法 | 含义 |
---|---|
GET | 检索 URL 中标识资源的一个简单请求 |
HEAD | 与 GET 方法相同,但服务器只返回状态行和头标,并不返回请求文档 |
POST | 服务器接受被写入客户端输出流中的数据的请求 |
PUT | 服务器保存请求数据作为指定 URL 新内容的请求 |
DELETE | 服务器删除 URL 中命令的资源的请求 |
OPTIONS | 关于服务器支持的请求方法信息的请求 |
TRACE | web 服务器反馈 Http 请求和其头标的请求 |
CONNECT | 已文档化,但当前未实现的一个方法,预留做隧道处理 |
请求头由 关键字/值 组成,每行一对,关键字和值用冒号分隔:
请求头 | 含义 |
---|---|
Host | 主机或域名地址 |
Accept | 指浏览器或其他客户可以接爱的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格式 |
User-Agent | 客户浏览器名称 |
Accept-Langeuage | 指出浏览器可以接受的语言种类 |
Connection | 用来告诉服务器是否可以维持固定的 HTTP 连接 |
Cookie | 浏览器用这个属性向服务器发送 Cookie |
Referer | 表明产生请求的网页 URL。这个属性可以用来跟踪 Web 请求是从什么网站来的 |
Content-Type | 用来表名 request 的内容类型 |
Accept-Charset | 指出浏览器可以接受的字符编码 |
Accept-Encoding | 指出浏览器可以接受的编码方式 |
使用 POST 传送,最常使用的是 Content-Type 和 Content-Length 头标。
2.3.2:Response 响应
HTTP 响应码:
- 1xx:信息,请求收到,继续处理
- 2xx:成功,行为被成功地接受、理解和采纳
- 3xx:重定向,为了完成请求,必须进一步执行的动作
- 4xx:客户端错误
- 5xx:服务器错误
可根据状态码来初步判断请求的文件在服务器的状况:
- 200:存在文件
- 403:存在文件夹
- 3xx:均可能存在
- 404:不存在文件及文件夹
- 500:均可能存在
3:网站搭建介绍
3.1:网站环境
常见搭建平台语言:
asp,php,aspx,jsp,py,javaweb 等环境。
域名、IP目录解析安全问题:
域名扫描只能扫描出来域名文件,而域名文件只占服务器资源的一小部分;IP扫描可以直接扫描服务器根目录,得到的信息更多。
Web 源码中敏感文件:
后台路径,数据库配置文件,备份文件等。
文件后缀解析对应安全:
可能存在下载或解析问题。
3.2:后门注意事项
- 后门是否给予执行权限
- 后门是否给予操作目录或文件权限
- 后门是否给予其他用户权限
4:Web 源码
Web 源码在安全测试中是非常重要的信息来源,源码的获取将为后期的安全测试提供更多的思路,可以用来代码审计也可用来做信息突破口,其中 Web 源码有很多技术需要简明分析。
4.1:知识点
- Web 源码目录结构
- Web 源码脚本类型
- Web 源码应用分类
- Web 源码其他说明
4.2:信息敏感点
敏感目录结构:
数据库配置文件,后台目录,模版目录,数据库目录等Web 脚本类型:
asp,php,aspx,jsp,javaweb 等脚本类型源码应用分类:
- 电商:业务逻辑漏洞
- 论坛:xss 逻辑漏洞
- 门户:综合类漏洞
- 第三方:根据功能决定
- 博客:漏洞较少
开源,未开源问题
- 开源:直接找漏洞或代码审计
- 内部:常规漏洞测试
框架,非框架问题
CMS 识别问题
style.css 文件可以用来生成 md5 值来查寻 cms 框架。
可以通过网页刷新时加载的文件来搜索 cms。
关于源码获取的相关途径:搜索,咸鱼淘宝,第三方源码站
5:数据库拓展
识别数据库类型常用方法:
nmap -O ip地址
nmap ip地址 -p 端口
(通过端口开放反推数据库)
数据库类型识别意义:
- 数据库漏洞和类型相关性很强。
- 不同数据库漏洞爆发点不太一样。
- 能确定数据库类型、版本,会对渗透有很大帮助。
数据库常见漏洞类型及攻击:
- 弱口令
- sql 注入
数据库层面漏洞要参考数据库的重要程度来判定影响范围。
常见语言与数据库:
- asp + access
- php + mysql
- axpx + mssql
- jsp + mssql,oracle
- python + mongodb
数据库端口:
- 关系型数据库:
MySQL:3306
SqlServer:1433
Oracle:1521
- 非关系型数据库:
MongoDB:27017
Redis:6379
memcached:11211
6:操作系统拓展
识别操作系统常见方法:
- Windows 对大小写不敏感,Linux 敏感。
- 看 ping 命令的 ttl 值
- ttl 在 64 左右:Linux
- ttl 在 128 左右:Windows
nmap -O ip
操作系统识别意义:
- 可以明确思路
- 可以筛选掉不不适用系统的情况
操作系统层面漏洞:
- 覆盖面广
- 获取的权限高
- 危害性大
7:第三方拓展
判断第三方平台或软件:
- 端口扫描
- 特征匹配
识别第三方的意义:
- 可以提供额外的攻击面
常见第三方漏洞:
- 弱口令
除去常规 web 安全及 app 安全测试外,服务器单一或复杂的其他服务(邮件,游戏,负载均衡等)),也可以作为安全测试目标,此类目标测试原则只是少了 Web 应用或其他安全问题方面。
8:密码算法
常见密码、编码等算法:
- MD5
- SHA
- ASC
- 进制
- 时间戳
- URL
- BASE64
- Unescape
- AES
- DES
- ...
常见加密形式:
- 直接加密
- 带 salt
- 带密码
- 带偏移
- 带位数
- 带模式
- 带干扰
- 自定义组合
- ...
常见解密方式
- 枚举
- 自定义逆向算法
- ...
了解常规加密算法的特性
- 长度位数
- 字符规律
- 代码分析
- 搜索获取
- ...
9:WEB 漏洞
和 web 相关的漏洞如下。
南湖秋水夜无烟,耐可乘流直上天。
——《游洞庭湖五首 · 其二》(唐)李白
《Web安全基础》01. 基础知识的更多相关文章
- python基础01—基础数据类型
数据类型 单位换算 最小的单位为bit,表示一个二进制的0或1,一般使用小写的b表示 存储的最小单位为字节(Byte),1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB ...
- Java基础|01.基础语法(1)
目录 00x1 基本语法 1.类的语法 2.对象的语法 3.方法的声明 4.小例子 00x2 类和对象的关系 1.堆.栈和元空间 2.基本数据类型和引用数据类型的区别 3. 空对象(null) 00x ...
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- Web安全之Web 安全介绍与基础入门知识
web安全介绍与基础入门知识 安全与安全圈 甲方与乙方 甲方:如腾讯,阿里等需要安全服务的公司 乙方:提供安全服务产品的服务型安全公司 web与二进制 web,研究web安全 二进制,研究如客户端安全 ...
- 01 基础版web框架
01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...
- javascript基础01
javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...
- WEB前端开发CSS基础样式全面总结
Web前端开发css基础样式全面总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-2 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- Androd核心基础01
Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
随机推荐
- HNU2019 Summer Training 3 E. Blurred Pictures
E. Blurred Pictures time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Kubernetes 证书详解
K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 ...
- 前端开发如何更好的避免样式冲突?级联层(CSS@layer)
作者:vivo 互联网前端团队 - Zhang Jiqi 本文主要讲述了CSS中的级联层(CSS@layer),讨论了级联以及级联层的创建.嵌套.排序和浏览器支持情况.级联层可以用于避免样式冲突,提高 ...
- 【webpack系列】从核心概念到上手配置
前言 作为前端开发者,相信大家或多或少都接触过webpack,现如今webpack已经渗透在了前端的各个方面,所以我们有必要来了解并学习webpack,webpack 是一种用于构建 JavaScri ...
- 数据库系统架构:从HBase到InfluxDB的变革
目录 数据库系统架构:从 HBase 到 InfluxDB 的变革 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境 ...
- 数据结构课后题答案 - XDU_953
参考书: 数据结构与算法分析(第二版) 作者:荣政 编 出版社:西安电子科技大学出版社 出版日期:2021年01月01日 答案解析:
- Unity中的PostProcessScene:深入解析与实用案例
Unity中的PostProcessScene:深入解析与实用案例 在Unity游戏开发中,我们经常需要对场景进行后处理,以实现更丰富的视觉效果.Unity提供了一个名为PostProcessScen ...
- 学习C++这一篇就够了(提升篇)
C++中除了面向对象的编程思想外,还有另一种就是泛型编程 主要用到的技术就是模板 模板机制的分类: 函数模板 类模板 函数模板 作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体定制,用虚拟 ...
- Flutter 屏幕采集如何实现(提供示例demo)
在视频会议.线上课堂.游戏直播等场景,屏幕共享是一个最常见的功能.屏幕共享就是对屏幕画面的实时共享,端到端主要有几个步骤:录屏采集.视频编码及封装.实时传输.视频解封装及解码.视频渲染.一般来说,实时 ...
- ISP图像处理之Demosaic算法及相关
CFA及Demosaic介绍 1.Bayer(拜耳滤波器得到彩色) 图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红. 绿. 蓝三个分量的信息, 然后将红. 绿. 蓝三个分量的信息合成彩 ...