13 Web 开发安全 - 攻击篇|青训营笔记

106 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

一、本堂课重点内容:

假如你是一个 hacker

  • Cross - Site Scripting (XSS)
  • Cross-site request forgery(CSRF)
  • Injection
  • Denial of Service(DoS)
  • 传输层攻击

二、详细知识点介绍:

Web安全概述

Web安全问题“很常见”,且看谷歌的词条数量

这些安全问题对用户和公司危害很大,可能造成数据泄漏,还可能以此为要挟给公司带来巨大的经济损失。

苦中作乐一下,这种漏洞就会产生一个只有公司受伤的世界。

哦对安全问题还会对程序员产生危害。什么,你问有什么危害?废话,祭天啊。

Web攻击手段

Cross - Site Scripting (XSS) 跨站脚本攻击

可以用来窃取用户信息

产生的原因

  1. 盲目信任用户提交的内容
  2. 把用户提交的字符串直接转换为DOM

特点

  • 通常难以从 UI上感知(暗地执行脚本
  • 窃取用户信息 (cookie/token)
  • 绘制 UI(例如弹窗),诱骗用户点击/填写表单

demo

这个demo中提交和存储都没有进行过滤

所以可以直接搞事情

XSS攻击分类

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

如果在视屏网站上传的视频中使用XSS攻击,那么所有点开观看的用户的信息都会被窃取

Reflected XSS

不涉及数据库,直接从URL上攻击

DOM-based XSS

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

Reflected vs DOM-based

这两种攻击方式的区别在于恶意脚本注入的位置不一样,Reflected是在服务器注入,DOM-based是在浏览器注入

Mutation-based XSS
  • 利用了浏览器染 DOM的特性 (独特优化)
  • 不同浏览器,会有区别(按浏览器进行攻击)

Cross-site request forgery(CSRF) 跨站伪造请求

  • 在用户不知情的前提下
  • 利用用户权限(cookie)
  • 构造指定HTTP请求,窃取或修改用户敏感信息

demo

利用你的cookie向银行转账的接口发送请求,然后直接把你的钱给卷走

最常见的就是利用链接或者是表单

SQL Injection

读取请求字段,然后直接以字符串的形式拼接SQL 语句。

注入攻击不止SQL

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

注入攻击如果是可以修改你的文件,那么可以实现把流量转到第三方,然后利用流浪把对方服务器给冲爆

Denial of Service(DoS)

通过某种方式(构造特定请求),导致服务器资源被显著消耗来不及响应更多请求,导致请求挤压,进而雪崩效应。简而言之,大力出奇迹。

DoS攻击可以基于正则表达式的贪婪模式。下面是贪婪模式的意思。

意思就是如果服务器有一个贪婪的正则表达式,那么攻击者可以发过去一个很容易产生回溯的字符串来消耗服务器资源,降低吞吐量

Distributed DoS(DDoS)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。简而言之,大大大力出奇迹。

还有逻辑DoS攻击,比如说:

  • 耗时的同步操作
  • 数据库写入
  • SQL join
  • 文备份
  • 循环执行逻辑

DDoS Demo

利用TCP三次握手的特性,攻击者不停向服务器发起TCP连接,但是不给它第三次握手的响应,那么服务器的连接数就会不断消耗直到不能接收新的请求。

中间人攻击

产生的原因有:明文传输、信息篡改不可知、对方身份未验证

三、课后个人总结:

  1. 软工人体会了一把网安同学的快乐。
  2. 平时反诈教育叫我们不要点陌生链接真的是有道理的,我一开始以为是因为那些陌生链接点进去都会让你输入个人信息啥的,所以不要点开,没想到可以直接获取cookie直接发请求,细思极恐,

四、引用参考:

  1. juejin.cn/post/717259…