# 一.XSS(存储型)

前言

恶意代码被存储到数据库中,用户点击页面之后会继续执行恶意代码,能持续攻击不同的用户

# 1.案例一

持久型 XSS

攻击步骤(黑客将代码存储到漏洞服务器中,用户浏览相关页面发起攻击)

  • 1.黑客将恶意脚本代码上传或存储到漏洞服务器
  • 2.服务器把恶意脚本保存到服务器
  • 3.当正常客户访问服务器时,服务器会读取恶意数据并且直接使用
  • 4.服务器会返回含有恶意脚本的页面
类型 反射型 存储型
持久性 非持久 持久化(存储在服务器)
触发时机 需要用户点击 不需要用户交互也可以触发
危害 危害较小 危害更大

# 1.1 前端部分

# 1.2 后端部分

const express = require("express")
const fs = require("fs")
const path = require("path")
const app = express()
const bodyParser = require("body-parser")

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.use(express.static(path.resolve(__dirname, "public")))

let defaultComment = {
  time: new Date().toLocaleString(),
  avatar: "http://www.gravatar.com/avatar/836875012qq.com.png",
}
let comments = [
  { username: "张三", content: "今天下雨没带伞", ...defaultComment },
  { username: "李四", content: "今天没带伞", ...defaultComment },
]
app.get("/api/comments", function(req, res) {
  res.json({ code: 0, comments })
})

app.post("/api/comments", function(req, res) {
  let comment = req.body
  comments.push({
    ...defaultComment,
    username: comment.username,
    content: comment.content,
  })
  res.json({ code: 0 })
})
app.listen(3001, () => {
  console.log("The server is starting at port 3001")
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 2.场景

# 2.1 聊天软件

  • 用户在群中发送危险链接

# 2.2 学习社区

  • 作者在文章中留下危险链接

# 3.防范

总结

一般会存入网站数据库,比如留言板,网站后台日志啥的,等受害者或管理员查看点击链接时,发生访问 xss 平台并被记录 cookie 的情形