跳到主要内容

第 6 天

· 阅读需 3 分钟
Hsieh
Hsieh
提示

客户端安全漏洞包括 XSS 跨站脚本攻击的三大类型与实战利用,以及文件上传漏洞的多种绕过技术。通过 BlueLotus 靶场练习掌握 XSS 攻击流程,实战 Upload_Labs 靶场学习前端验证、黑名单、白名单、条件竞争等绕过技巧,结合 BurpSuite 插件 Upload_Auto_Fuzz 提升漏洞挖掘效率。

XSS

cross site scripting, 用户端执行了在 Web 插入的恶意 JavaScript 代码

类型

反射型

用户端点击链接请求到恶意 JavaScript 代码, 用户端解析恶意 JavaScript 代码将客户数据发往恶意服务器

存储型

通过输入框把恶意代码存入目标网站的数据库, 当有客户端访问某个页面时读取到数据库的JavaScript 代码, 会在客户端执行 JavaScript 代码

DOM 型

特殊的反射型 xss, 不需要向服务器请求恶意代码

练习

BlueLotus

  1. 安装部署

通过 install.php 自动安装, 要求为 php5 环境

  1. 输入 <img src=# onerror=alert(1) /> 测试是否有 xss 漏洞

  2. 创建恶意JavaScript代码, 构建恶意链接, 恶意链接包含恶意 JavaScript 的URL路径

  1. 开发者模式修改请求框长度限制, 输入恶意链接让用户端请求恶意 JavaScript 代码并解析执行

  1. 获取到用户端的敏感信息

文件上传

绕过前端验证

  1. 抓取前端发送的包, 修改文件后缀和内容
  2. F12 中禁用 Javascript

靶场搭建

  1. 安装 upload-labs
docker pull c0ny1/upload-labs

docker run --name upload-labs -d -p 80:80 c0ny1/upload-labs
  1. 禁用 JavaScript, 上传文件 1.php, 文件内容如下
<?php phpinfo();?>

确保 web 目录下有 upload 目录,并且文件属主属组为 www-data

docker exec -it upload-labs
mkdir /var/www/html/upload
chown www-data:www-data /var/www/html/upload
  1. 访问上传的文件

绕过服务器验证

黑名单绕过

利用操作系统特性, 如 linux 上创建文件会自动删去末尾 /

  1. 修改 POST 请求头的 Content-Type 为下面类型之一绕过

  1. 前端代码可以找到随机生成的文件名

  1. 通过不常用的可解析后缀绕过, 如 .phtml

白名单绕过

  1. 通过添加URL编码 %00, 将其解码后是为 \0, 实现截断后缀效果

  1. 通过检查文件内容自动判断文件类型的, 可使用 文件包含 绕过

  2. 条件竞争, 删除文件的代码执行需要时间; 配置多线程, 不断上传文件, 同时手动不断访问链接, 访问会生成新文件, 新文件不会被删除

Upload_Auto_Fuzz

安装配置

  1. 下载 java 开发的 python 解释器 jython.jar, 指定位置

  1. 插件中添加 upload_auto_fuzz.py 脚本

使用指南