《白帽子讲Web安全》笔记_Day1

前言和自言自语:
Q:为什么要看这本书?写这篇笔记?A:入门网络安全,备考Security+;发布笔记是为了激励自己坚持下去。
Q:读这本书需要什么知识? A:1.熟悉一门或多门编程语言;2.做过Web项目;3.熟悉网络协议。
Q:我现在懂Web安全吗?A:了解一点点,本科专业网络工程,硕士专业网络安全,现在正在提前预习硕士课程。
Q:我还在干什么?A:观看Mike Chapple的Security+备考教学,打游戏,顺便刷刷雅思。
Q:用的啥软件写笔记? A:MarkText,然后再复制到CSDN。
Q:会坚持吗?A:Try my best.

第一章 安全观

Web安全中的里程碑攻击手段

SQL注入,XSS(跨站脚本攻击)

白帽子与黑帽子的区别

白帽子需要更加宏观的考虑问题,黑帽子考虑的较为微观。“破坏永远比建设容易”。

安全的本质:信任

数据从高等级的信任域流向低等级的信任域,是不需要经过安全检查的;数据从低等级的
信任域流向高等级的信任域,则需要经过信任边界的安全检查。

安全三要素

  • 机密性(Confidentiality)

    要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。

  • 完整性(Integrity)

    要求保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字
    签名。

  • 可用性(Availability)

    保护资源是“随需而得”。以防DoS(Denial of Service)拒绝服务攻击。

安全评估的步骤

  1. 资产等级划分
  • 目的:确认目标是什么,要保护什么。

  • 方式:

    • 对于公司拥有的资产进行等级划分,例如客户数据,员工信息。需要对公司进行访谈,了解业务,了解数据。

    • 完成资产划分,划分信任域与信任边界(一般通过网络逻辑来划分)

      如下

      数据库 --> Web应用 --> Internet

      >>>-----------数据------------------>>

  1. 威胁分析
  • 目的:确定危险来源。

    • 威胁(Threat):可能造成危害的来源

    • 风险(Risk):可能出现的损失

      风险一定与威胁联系的

  • 方式:怎么去把所有的威胁都找出来?

    威胁建模 (STRIDE 模型)分析威胁时,从以下6个方面考虑。

    威胁定义对应安全属性
    Spoofing(伪装)冒充他人身份认证
    Tampering(篡改)修改数据或代码完整性
    Repudiation(抵赖)否认做过的事情不可抵赖性
    InformationDisclosure(信息泄露)机密信息泄露机密性
    Denial of Service(拒绝服务)拒绝服务可用性
    Elevation of Privilege(提升权限)未经授权许可授权
  1. 风险分析
  • 风险的组成:Risk = Probability * Damage Potential

  • 方式:科学的衡量风险。

    风险建模(DREAD 模型)

    等级高(3)中(2)低(1)
    Damage Potential获取完全验证权限;执行管理员操作;非法上传文件泄露敏感信息泄露其他信息
    Reproducibility攻击者可以随意再次攻击攻击者可以重复攻击,但有时间限制攻击者很难重复攻击
    Exploitability初学者在短期内能掌握攻击方法熟练的攻击者才能完成这次攻击漏洞利用条件非常苛刻
    Affected users所有用户,默认配置,关键用户部分用户,非默认配置极少数用户,匿名用户
    Discoverability漏洞很显眼,攻击条件很容易获得在私有区域,部分人能看到,需要深入挖掘漏洞发现该漏洞极其困难

    评估时,如例:

    Risk = D(3) + R (3) + E(3) + A(3) + D(3) = 15

    高危:12~15分 中危:8~11分 低危:0~7分

  1. 确认解决方案
  • 目的:通过简单而有效的方案,解决遇到的安全问题。安全方案必须能够有效抵抗威胁,但同时不能过多干涉正常的业务流程,在性能上也不能拖后腿。

  • 好的安全方案具备的特点:

    • 能够有效解决问题

    • 用户体验好

    • 高性能

    • 低耦合

    • 易于拓展和升级

白帽子兵法

  • Secure By Default原则 由以下两个原则组成。

    • 黑名单、白名单原则

      • 定义:如果更多地使用白名单,那么系统就会变得更安全。

      • 黑名单:不允许 SSH端口对 Internet 开放,那么就要审计 SSH 的默认端口:22 端口是否开放了 Internet。但在实际工作过程中,经常会发现有的工程师为了偷懒或图方便,私自改变了 SSH 的监听端口,比如把 SSH 的端口从 22 改到了 2222,从而绕过了安全策略。

      • 白名单:如果网站只提供 Web 服务,那么正确的做法是只允许网站服务器的80 和 443 端口对外提供服务,屏蔽除此之外的其他端口。这是一种“白名单”的做法。

        需要注意的是,使用白名单时,一定要避免使用*等通配符,防止允许所有请求通过,造成安全隐患。

    • 最小权限原则

      • 定义:只授予主体必要的权限,不要过度授权。

        例: Linux中,使用普通账户登录,执行需要root权限的操作时,用sudo命令完成。

  • 纵深防御原则

    • 含义:

      • 首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体。

        • 木桶效应

          入侵实例:利用 Web 应用的漏洞,攻击者先获得一个低权限的 webshell,
          然后通过低权限的 webshell 上传更多的文件,并尝试执行更高权限的系统命令,尝试在服务器上提升权限为 root;接下来攻击者再进一步尝试渗透内网,比如数据库服务器所在的网段。

      • 要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案

        • 案例 XSS Defence技术的发展

          一开始的方案中,过滤了一些特殊字符,例如《》 <> 等,比如用户输入《笑傲江湖》会变为 笑傲江湖。

          但是这导致了改变用户想表达的意思,例如1<2 变为了1 2。

  • 数据与代码分离原则

    • 适用场景:由于各种“注入”产生问题的场景(缓冲区溢出也是其中一种:程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生)。

      例如 XSS

      • 产生原因:是 HTML Injection 或 JavaScript Injection

        <html>
        <head>test</head>
        <body>
        $var    
        </body>
        </html>
        

        其中$var 是用户可以操作的变量。若将此变量作为代码来解析,而此变量为<script src=http://evil></script>时,就会使得用户脚本注入到代码片段中。

      • 解决方案:如果是想要执行一个<script>标签,要弹出一段用户自定义文字,比如:“你好!”,那怎么办呢?

        重写代码

        <html> 
        <head>test</head> 
        <body> 
        <script> 
        alert("$var1"); 
        </script> 
        </body> 
        </html>
        

        在这种情况下,<script>标签也变成了代码片段的一部分,用户数据只$var1 能够控制,从而杜绝了安全问题的发生。

  • 不可预测性原则

    • 原理:从克服攻击方法的角度看问题。

      实例:Windows 系统缓冲区溢出问题。

      解决办法:使用 DEP 来保证堆栈不可执行,使用 ASLR让进程的栈基址随机变化,从而使攻击程序无法准确地猜测到内存地址,大大提高了攻击的门槛。

    • 作用:有效地对抗基于篡改、伪造的攻击。

    • 实现:加密算法、随机数算法、哈希算法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值