Web安全学习(一)

Web安全学习

一、 注入漏洞

核心原理: 当用户输入被当作代码而非数据执行时,就会产生注入漏洞。其根本原因是程序没有对用户输入进行充分的过滤、验证和转义。

1. SQL注入

  • 数字型注入: 注入点类型为数字,通常无需闭合引号。
    • 示例id=1 -> id=1 AND 1=2
    • 学习记录: 重点掌握UNION SELECT联合查询注入,用于获取数据。
  • 字符型注入: 注入点类型为字符串,需要闭合单引号'或双引号",并处理后续代码。
    • 示例name='admin' -> name='admin' AND '1'='1'
    • 学习记录: 掌握各种注释符(-- , #, /* */)的使用来闭合语句。
  • 盲注: 页面没有回显数据,只能通过页面返回的真假或时间差异来判断。
    • 布尔盲注: 通过页面返回TrueFalse(不同内容)逐位推断数据。
      • 示例and (select substr(database(),1,1))='a'
    • 时间盲注: 通过执行延时函数判断条件真假。
      • 示例and if(1=1, sleep(5), 0)
    • 学习记录: 自动化工具(如Sqlmap)利用盲注效率极高,但手动理解原理至关重要。
  • 报错注入: 利用数据库报错信息回显执行结果。
    • 示例and updatexml(1, concat(0x7e, (select database())), 1)
    • 学习记录: 学习updatexml(), extractvalue(), floor()等报错函数原理。
  • 堆叠查询: 可以执行多条SQL语句,危害极大。
    • 示例id=1; DROP TABLE users;
    • 学习记录: 并非所有数据库或连接驱动都支持,PHP+MySQL通常不支持。

2. POST注入 & Cookie注入

  • 本质: 与GET注入原理完全相同,只是注入参数的位置不同(POST请求体、HTTP请求头中的Cookie字段)。
  • 学习记录: 使用Burp Suite/OWASP ZAP等代理工具拦截和修改POST/Cookie请求是测试的关键。

3. 其他注入类型

  • 命令注入: 用户输入被当作系统命令执行。
    • 示例ping 127.0.0.1; cat /etc/passwd
    • 防御: 严格过滤|, &, ;, $()等shell元字符。
  • XXE注入: XML外部实体注入,用于读取文件、探测内网等。
    • 原理: 解析恶意构造的XML外部实体。
  • LDAP注入: 针对LDAP查询语句的注入,原理类似SQL注入。

二、 文件上传漏洞

核心原理: 未能对用户上传的文件进行有效的检查和限制,导致恶意文件(Webshell)被上传并执行。

1. 绕过技巧

  • 前端校验: 绕过JavaScript的文件类型检查(禁用JS或抓包修改)。
  • MIME类型绕过: 修改HTTP请求中的Content-Type为合法类型(如image/jpeg)。
  • 后缀名绕过
    • 黑名单绕过: 上传php3, phtml, phps, .htaccess(Apache)等。
    • 大小写绕过: PhP, aSpX
    • 特殊后缀: php., php (空格),php%20,利用系统特性截断。
  • 文件内容绕过
    • 文件头欺骗: 在PHP文件开头添加GIF89a等图片魔数。
    • 图片马: 将Webshell代码写入图片的元数据中,配合文件包含漏洞执行。

2. 高级利用

  • 竞争条件攻击: 在上传文件被删除前(例如不合规的文件)快速访问和执行它。
  • 解析漏洞: 利用服务器特性(非代码漏洞)。
    • IIS 6.0/asp.jpg/asp 会被当作asp文件执行。
    • Nginx畸形解析test.jpg/.php 被解析为php。
    • Apache多后缀test.php.jpg 可能被解析为php。

3. 防御之道

  • 白名单验证文件扩展名和MIME类型。
  • 对文件进行重命名(如MD5值),避免解析漏洞。
  • 将文件上传到独立域名或无法直接访问的目录,通过脚本分发。
  • 对图片进行二次渲染,彻底破坏图片中的恶意代码。

三、 XSS跨站脚本漏洞

核心原理: 恶意脚本被注入到网页中,并在用户浏览器中执行。

1. 反射型XSS

  • 非持久化,恶意代码在URL中,需要用户点击才能触发。
  • 常见位置: 搜索框、错误信息页。

2. 存储型XSS

  • 持久化,恶意代码被保存到服务器(数据库),所有访问该页面的用户都会受影响。
  • 常见位置: 留言板、论坛帖子、用户昵称。

3. DOM型XSS

  • 纯前端漏洞,不经过服务器。JavaScript代码不当地处理了document.location, document.referrer等来源的数据,并将其写入了DOM树。
  • 示例eval(), innerHTML, document.write() 等函数使用不当。

4. 绕过技巧

  • 绕过HTML标签过滤: 使用不常见的标签 <svg>, <img>, <details>
  • 绕过事件处理器过滤: 使用onmouseover, onerror, onload等事件。
  • 绕过关键词过滤:
    • 大小写: <sCript>
    • 双写: <scrscriptipt>
    • 编码: <script> (HTML编码), \u003cscript\u003e (Unicode编码)

5. 危害与利用

  • 盗取用户Cookie。
  • 发起钓鱼攻击。
  • 键盘记录。
  • 蠕虫传播(如微博XSS蠕虫)。
posted @ 2025-08-22 17:17  蹊世  阅读(40)  评论(0)    收藏  举报