Web开发安全学习笔记 | 青训营

89 阅读5分钟

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


安全问题是常见的问题,Web安全问题会危害用户数据,公司的名誉或者经济利益,程序员的"加班时间"或者失去工作。

在google浏览器搜索data leak能搜索到上亿的相关资料。尤其是进来数据安全问题频发,更是引起了人们的重视。

课程中用2个角度看web安全。

从攻击者的角度

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

在开发维护界面中,攻击者通过某种方式将攻击脚本插入进来。
比如说当用户进行界面访问的时候,攻击脚本就会执行,从而完成攻击。从而使得用户的隐私泄露或者用户的机器被用来挖矿。

image.png XSS主要利用开发者盲目信任用户提交的内容进行脚本攻击。开发者直接将用户的提交内容转化为dom结构。从而使得用户在进行界面访问或者操作的过程中脚本运行,从而达成攻击效果。

image.png

XSS特点

  • 通常难以从UI上面感知(使JS脚本执行不表达在UI层面)
  • 窃取用户隐私信息(cookie/token)
  • 绘制UI骗取用户信任,诱骗用户填写表单或者点击。(PXX式中奖)

一个简单的demo image.png

上面的图片中并没有对用户的提交内容进行过滤,当用户的提交内容中藏有JS脚本时,将会直接在页面中执行。

XSS分类

Stored XSS

1.脚本会被存储到服务器中
2.访问页面的时候,数据库传输数据到页面,脚本在页面中被执行,从而达到攻击效果。
3.危害最大,对全部用户可见

所有用户都从数据库中读取数据,脚本能够在所有用户访问网页的时候进行攻击。所以危害最大。

Reflected XSS

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

服务器读取用户请求的query的字段,并将字段拼接成HTML片段,如果攻击者将这个片段做成script标签,用户访问就会命中这个攻击。

image.png

Dom-based XSS

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

image.png 通过JS创建一个div标签,并将内容注入到标签的内容中。完成攻击。

Reflected 和 Dom-based 的不同在于,R是在服务器端进行注入,D是在浏览器端进行注入。

Mutation-based XSS

利用浏览器渲染DOM的特性(独特优化)
不同浏览器,会有不同的渲染区别(按浏览器进行攻击)

image.png 通过使用某种神奇的标签让浏览器在渲染的时候将 某标签转化为内容,而内容转化为标签。从而达到攻击的目的。这种攻击是防不胜防的,十分难顶。

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

在用户不之情的前提下,利用用户权限(cookie),构造指定的HTTP请求,窃取或者修改用户信息 比如说经典的QQ盗号或者中奖信息。
通过某种电子信件(信息或者邮件),诱骗你“中奖了”,点开连接领取,实际上你并未访问QQ或者银行卡网站。当你点开连接。银行卡或者QQ的某种特定接口被请求执行成功。你的QQ被盗或者银行卡中金额--。

image.png

injection

SQL Injection

服务器接收到了一组SQL恶意参数并进行解析。运行了含有恶意参数的SQL代码,数据库的数据被获取或者修改。从而达到攻击目的。

通过改变参数的字眼,若服务器无法识别,就能达到某种意想不到的惊喜。

Cli Injection

在下面的视频转化中,将options命令进行修改
在命令加入rm -rf xxx,服务器运行命令,直接升天。

image.png

读取和修改

若攻击者能够访问文件,也将对应用带来损害。比如:修改nginx文件转发流量到第三方平台。耗尽公司购买的流量。从而导致工资的钱在烧,程序员直接被开除。

image.png

Denial of Service(Dos)

通过某种方式(构造特定请求),导致服务器资源被消耗,请求来不及相应,堆积在一起,从而发生雪崩。

基于正则表达式的Dos

正则表达式的贪婪进行攻击。 服务器写了一个贪婪表达式,几个简单的语句都能匹配,最后追加了一个长的语句,服务器要匹配表达式就开始回溯,在不断回溯的过程中耗尽资源。从而实现Dos攻击。 image.png

Distributed Dos(DDos)

短时间内,发出大量来自僵尸设备的流量请求,服务器不能及时响应,使得请求堆积,发生雪崩,完成攻击。(像是洪水)

结尾

本节课学习了Web开发安全的相关内容,早就听说过XSS攻击,上一次接触还是valine改成waline的时候。老师的内容生动有趣。看完这节课还是让我获益匪浅。学习到了很多。后续有机会再研究一下。

引用参考:

Web 开发安全 - 攻击篇 - 掘金 (juejin.cn)