Web安全基础 - 笔记

2023-03-17 11:27:01 浏览数 (2)

从攻击角度和防御角度看 Web 安全:XSS、CSRF、Injection、Dos、DDos、中间人攻击

# Web 开发安全 - 笔记

# 攻击篇

# XSS

  • XSS( Cross-Site Scripting
  • 在安全内容中插入用户自己的恶意代码
  • 利用了网站开发者盲目信任用户的提交内容 HTML 文档特性(string -> DOM)
# 特点
  • 通常难以从 UI 上感知(暗地里执行脚本)
  • 窃取用户信息(cookie/token)
  • 绘制 UI(例如弹窗),诱骗用户点击 / 填写表单
# 分类

Stored XSS

  • 恶意脚本被存在数据库中
  • 访问页面 -> 读数据 -> 被攻击
  • 危害最大,对全部用户可见

Reflected XSS

  • 不涉及数据库
  • 从 URL 上攻击
  • 例如: host/path/?param=<script>alert('123')</script>

DOM-based XSS

  • 不需要服务器的参与
  • 恶意攻击的发起 执行,全在浏览器完成

Mutation-based XSS

利用了浏览器渲染 DOM 的特性(独特优化)

不同浏览器,会有区别(按浏览器进行攻击)

例如:

代码语言:javascript复制
<noscript><p title="</noscript><img src=x onerror=alert(1)>">

# CSRF

CSRF( Cross-site request forgery

在用户不知情的前提下

利用用户权限(cookie)

构造指定 HTTP 请求,窃取或修改用户敏感信息

例如:

代码语言:javascript复制
<img style="display:none;" src="https://bank.com/transfer?to=hacker&amount=100"/>

# Injection

# SQL Injection

攻击流程:

  1. 请求
    • SQL 参数(恶意注入)
  2. Server
    • 拼接参数 -> 运行 SQL code
  3. 数据库
    • 获取其他数据
    • 修改数据
    • 删除数据等

例如: SELECT XXX FROM ${'any; DROP TABLE table;'}

# 其他 Injection
  • CLI
  • OS command
  • SSRF(Server-Side Request Forgery),服务端伪造请求
    • 严格而言,SSRF 不是 injection,但是原理类似

例如:

  1. const command = covert-cli video -o '${"' && rm -rf /"}'
  2. 请求用户自定义的 callback URL web server 通常有内网访问权限

# DoS

  • DoS( Denial of Service
  • 通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及相应更多请求,导致请求挤压,进而雪崩

例如:

  • 基于正则表达式的 DoS(利用正则表达式贪婪模式)
    • /^((ab)*) $/
    • 构造 "abababababababa"
    • 造成算法多次回溯,导致响应时间

      1 人点赞