Web Security Overview

#Security #Web攻击技术 #CommonAttacks

Review

  1. 2020/09/22
  2. 2021/02/07 16:29:50
  3. 2024/03/01
  4. 2024-08-11

[!Summary] 主要攻击

  1. XSS
  2. CSRF
  3. SQL Injection
  4. Clickjacking(点击劫持)

[!Summary] CTFs (Capture the Flag)

  1. HackTheBox https://www.hackthebox.com/
  2. TryHackMe https://tryhackme.com/
  3. VulnHub https://www.vulnhub.com/
  4. picoCTF https://picoctf.org/
  5. SANS Holiday Hack Challenge https://www.sans.org/mlp/holiday-hack-challenge-2023/

针对Web的攻击对象:

  1. 服务器
  2. 客户端
  3. Web应用(大多是此)

针对Web应用的攻击模式

  • 主动攻击(active attack):攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。主要攻击服务器上的资源;代表性攻击是SQL注入攻击和OS命令注入攻击。
  • 被动攻击(passive attack):利用圈套策略(诱使触发设置的陷阱)执行攻击代码的攻击模式。主要攻击用户的资源和权限;代表性攻击是跨站脚本攻击和跨站点请求伪造。

根据攻击原因分类 #

1)因输出值转义不完全引发的安全漏洞

[!Seccuss] 安全对策:

  • 客户端验证
  • 服务器验证
  • 输入值验证
  • 输出值转义

保留客户端验证只是为了尽早地辨识输入错误,起到提高UI体验的作用。 输入值验证通常是指检查是否是符合系统业务逻辑的数值或检查字符编码等预防对策。 针对输出做值转义处理是一项至关重要的安全策略。

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

是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。 动态创建的HTML部分(如富文本编辑的展示)有可能隐藏着安全漏洞。 影响

  • 利用虚假输入表单骗取用户个人信息
  • 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
  • 显示伪造的文章或图片

XSS是攻击者利用预先设置的陷阱触发的被动攻击

SQL注入攻击(SQL Injection) #

SQL 注入攻击指的是攻击者在 HTTP 请求中注入恶意的 SQL 代码,服务器使用参数构建数据库 SQL 命令时,恶意 SQL 被一起构造,破坏原有 SQL 结构,并在数据库中执行,达到编写程序时意料之外结果的攻击行为。

是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。

影响

  • 非法查看或篡改数据库内的数据
  • 规避认证
  • 执行和数据库服务器业务关联的程序

OS命令注入攻击(OS Command Injection) #

是指通过Web应用,执行非法的操作系统命令达到攻击的目的。 只要在能调用Shell函数的地方,就存在被攻击的风险。

HTTP首部注入攻击(HTTP Header Injection) #

是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种被动攻击。

向首部主体内添加内容的攻击,称为HTTP响应截断攻击(HTTP Response Splitting Attack)

影响

  • 设置任何Cookie信息
  • 重定向至任意URL
  • 显示任意的主体(HTTP响应截断)

%0D%0A 代表HTTP报文中的换行符; %0D%0A%0D%0A 作为HTTP首部与主体分割所需的空行,就可以接伪造的主体了

缓存污染 #

滥用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作。

邮件首部注入攻击(Mail Header Injection) #

Web应用中的邮件发送功能,攻击者通过向邮件首部To或Subject内任意添加非法内容发起的攻击。

利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。

利用 %0D%0A

目录遍历攻击(Directory Traversal) #

对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。 应该关闭指定对任意文件名的访问权限。

远程文件包含漏洞(Remote File Inclusion) #

是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可以运行任意脚本的一种攻击。

主要是PHP存在的安全漏洞。

2)因设置或设计上的缺陷引发的安全漏洞

强制浏览(Forced Browsing) #

从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。 影响

  • 泄露顾客的个人信息等重要情报
  • 泄露原本需要具有访问权限的用户才可查阅的信息内容
  • 泄露未外连到外界的文件

Web网页文本内容具有访问对象的控制,但不具备对图片访问对象的控制,从而产生了安全漏洞。

不正确的错误消息处理(Error Handing Vulnerability) #

Web应用的错误信息内包含对攻击者有用的信息

Web主要错误信息:

  • Web应用抛出的错误信息
  • 数据库等系统抛出的错误信息:PHP或ASP等脚本错误;数据库或中间件的错误;Web服务器的错误;

Web应用不必在用户的浏览画面上展现详细的错误消息。

开放重定向(Open Redirect) #

是一种对指定的任意URL作重定向跳转的功能。 假如指定的重定向URL到某个具有恶意的Web网站,那么用户就会被诱导至那个Web网站。

3)因会话管理疏忽引发的安全漏洞

会话劫持(Sessiong Hijack) #

攻击者通过某种手段拿到了用户的会话ID,并非使用此会话ID伪装成用户,达到攻击的目的。

获得会话ID的途径:

  • 通过非正规的生成方法推测会话ID
  • 通过窃听或XSS攻击盗取会话ID
  • 通过会话固定攻击(Session Fixation)强行获取会话ID

会话固定攻击(Session Fixation) #

强制用户使用攻击者指定的会话ID,属于被动攻击。

跨站点请求伪造(Cross-Site Request Forgeries, CSRF) #

攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

影响

  • 利用已通过认证的用户权限更新设定信息等
  • 利用已通过认证的用户权限购买商品
  • 利用已通过认证的用户权限在留言板上发表言论

4)其他安全漏洞

密码破解攻击(Password Cracking) #

即算出密码,突破认证。 穷举法(Brute-force Attack,暴力破解法):是指对所有密钥集合构成的密钥空间(Keyspace)进行穷举。

字典攻击:利用事先收集好的候选密码,枚举字典中的密码,尝试通过认证的一种攻击方法。

从加密过的数据中导出明文方法:

  • 通过穷举法·字典攻击进行类推
  • 彩虹表(Rainbow Table)由明文密码及与之对应的散列值构成的一张数据库表
  • 拿到密钥
  • 加密算法的漏洞

点击劫持(Clickjacking) #

利用透明的按钮或链接做成陷阱,覆盖在Web页面之上。诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。

又称为界面伪装(UI Redressing)

DoS攻击 #

Denial of Service attack,服务停止攻击,拒绝服务攻击

是一种让运行中的服务呈停止状态的攻击。DoS攻击不仅限于Web,还包括网络设备及服务器等。

DoS攻击方式:

  • 集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也就呈停止状态。
  • 通过攻击安全漏洞使服务停止

多台计算机发起的DoS攻击称为DDoS攻击(Distributed Denial of Service attack)

后门程序(Backdoor) #

开发设置的隐藏入口,可不按正常步骤使用受限功能。

类型

  • 开发阶段作为Debug调用的后门程序
  • 开发者为了自身利益植入的后门程序
  • 攻击者通过某种方法设置的后门程序

SSRF #

网站检查工具 #

web-check

参考 #

  1. 《图解HTTP》
  2. OWASP Top Ten: https://owasp.org/www-project-top-ten/
  3. 7 Common Front End security attacks https://dev.to/tinymce/7-common-front-end-security-attacks-372p
  4. unicode domains: https://www.vgrsec.com/post20170219.html
  5. How I found a $5,000 Google Maps XSS (by fiddling with Protobuf) – Medium: https://medium.com/@marin_m/how-i-found-a-5-000-google-maps-xss-by-fiddling-with-protobuf-963ee0d9caff
  6. ECMAScript 6 from an Attacker’s Perspective - Breaking Frameworks, Sa…: https://www.slideshare.net/x00mario/es6-en
  7. Phishing with Unicode Domains - Xudong Zheng: https://www.xudongz.com/blog/2017/idn-phishing/
  8. qazbnm456/awesome-web-security: 🐶 A curated list of Web Security materials and resources.: https://github.com/qazbnm456/awesome-web-security#practices-aws
  9. alert(1) to win: https://alf.nu/alert1
  10. prompt(1) to win - 0x0: http://prompt.ml/0
  11. 浅谈Web客户端追踪 - FreeBuf.COM | 关注黑客与极客: http://www.freebuf.com/articles/web/127266.html
  12. “alert(1) to win” writeup - kngxscn - 博客园: http://www.cnblogs.com/renzongxian/p/5617551.html
  13. escape.alf.nu XSS挑战赛writeup | 乘物游心: https://blog.spoock.com/2016/03/10/escape-alf-nu-xss-challenges-writeups/
  14. 一次较为深刻的CSRF认识: https://m.2cto.com/article/201505/400902.html