Web安全与风险
Web 攻击基础知识
概念
Web 攻击的本质,就是利用 HTTP 协议篡改应用程序。
可利用点:请求方法、请求头、数据体
可利用过程:认证、会话、授权
认证过程中存在的攻击:
账号枚举:在认证过程中,hacker 手中有账号数据源,根据将其中账号认证接口“该账号不存在”响应, 进而枚举出存在于该平台的账号。
密码爆破:枚举账号之后,用密码字典再挨个去攻击账号。
利用途径:Web、客户端、HTML、其他协议
特点
- 广泛性
- 匿名性
- 利用难度低(对比主机漏洞、木马病毒)
常见攻击点
-
中间件:针对 HTTP 底层服务器,如 IIS、Apache、Nginx、Tomcat
-
Web 应用:授权、认证、输入验证、程序逻辑、钓鱼等
-
数据库:SQL 注入
-
Web 客户端:客户端软件漏洞、浏览器、APP、小程序等
-
传输:中间人攻击、窃听等
-
可用性:DDOS(Distributed Denial of Service,利用大量傀儡机/肉机去攻击某个网站服务,造成网站服务无法处理正常用户请求)、CC 攻击(Credential Stuffing Attack)
渗透测试学习框架
渗透测试我们将学习如下内容:
1. 信息搜集
假设我们要扫描淘宝的漏洞:https://www.taobao.com
首 先登录网站,可收集如下信息:
- 端口
- 子站,比如 abc.taobao.com、a.b.taobao.com
- 新业务
- 收集业务
- 微信小程序
- 友情链接
- 旁站
2. 漏洞攻防
- SQL 注入
- XSS
- CSRF
- SSRF
- 命令注入
- 目录穿越
- 暴力破解
- 文件读取
../../../etc/passwd
- 文件上传
.php
- 文件包含
include(filename)
- XXE 代码解析 XML 文件是解析外部实体引发漏洞
- 逻辑漏洞 / 业务漏洞:比如短信轰炸,就是抓住接口没有限制短信发送
- 中间件
3. 编程语言
PHP
Python
Java
JavaScript
5. 代码审计
- 代码审计属于白盒测试
6. 应急响应
HTTP 协议
1. 概念
HTTP HyperText Transfer Protocol 即超文本传输协议,规定了浏览器和服务器通信的规则,允许将 HTML 文档从服务器传送到浏览器中。
URL Uniform Resource Locator 即统一定位资源符,可以唯一定位资源。格式如下:
协议://IP[:端口]/路径/[?查询]
比如在 URL 中:https://wukaipeng.com/english
- https → 协议
- 443 → 端口号,HTTPS 默认走 443,HTTP 某人走 80
- wukaipeng → 主机域名,通过域名解析服务解析成 IP 地址“101.36.110.12”
- english → 路径
2. 详解
HTTP 特点:无状态
请求
请求包含三部分:
- 请求行
- 请求头
- 请求正文
POST / login.php HTTP/1.1 //请求行
HOST: www.baidu.com //请求头
User-Agent: Mozilla/5.0 (windows NT 6.1; rv:15.0)
Gecko/20100101 Firefox/15.0
//空白行,代表请求头结束
username=admin&password=admin //请求正文
响应
响应包含三部分:
- 响应行
- 响应头
- 响应正文
HTTP/1.1 200 OK //响应行
Date: Thu, 28 Feb 2013 07:36:47 GMT //响应头
Server: Bws/1.0 //服务器信息
Content-Length: 4199
Content-Type: text/html;charset=utf-8//提问:告诉谁的?
Cache-Control: private
Expires: Thu, 28 Feb 2021 07:36:47 GMT
Content-Encoding: gzip
Set-Cookie: H_PS_PSSID=2022_1438_1944_1788;path=/;domain=.baidu.com
Connection: Keep-Al ive
//空白行,代表响应头结束
<html>
//响应正文或者叫消息主体
<headxtitle> Index.html </title></head>
什么情况下会设置 Cookie?
- 登录的时候才设置 ✅ 安全
- 第一次访问就设置 Cookie,且登录之后不更新 Cookie ❌不安全,存在“固定会话攻击”
- 第一次访问就设置 Cookie,且登录之后更新 Cookie 或者新增校验字段 ✅ 安全
3. 请求方法
- GET
- HEAD:和 GET 请求一样,除了没有响应正文。一般用于测试资源的有效性、可访问性和最近改变。
一般扫描接口用的就是 HEAD 请求,因为没有响应正文,速度比较快。
- POST:可以在请求正文中添加参数,安全性比 POST 高。
- PUT:更 新资源
- DELETE:删除资源
- TRACE:查看远程应用层的请求消息回路。
- OPTIONS:查看服务器支持的 HTTP 方法。
4. 状态码
1xx:继续处理
2xx:成功
3xx:重定向
4xx:客户端错误状态码
5xx:服务端错误
🛠️ HTTP 状态码清单工具: https://t.he3app.com?djv8
5. HTTP 消息
HTTP 消息又叫做 HTTP 头(HTTP Header),有 4 种,分别为:
- 请求头
- 响应头
- 普通头
- 实体头
请求头
只出现在请求中
1. Host
请求的主机和端口号
Host: wukaipeng.com