第 6 天
· 阅读需 3 分钟
提示
客户端安全漏洞包括 XSS 跨站脚本攻击的三大类型与实战利用,以及文件上传漏洞的多种绕过技术。通过 BlueLotus 靶场练习掌握 XSS 攻击流程,实战 Upload_Labs 靶场学习前端验证、黑名单、白名单、条件竞争等绕过技巧,结合 BurpSuite 插件 Upload_Auto_Fuzz 提升漏洞挖掘效率。
XSS
cross site scripting, 用户端执行了在 Web 插入的恶意 JavaScript 代码
类型
反射型
用户端点击链接请求到恶意 JavaScript 代码, 用户端解析恶意 JavaScript 代码将客户数据发往恶意服务器
存储型
通过输入框把恶意代码存入目标网站的数据库, 当有客户端访问某个页面时读取到数据库的JavaScript 代码, 会在客户端执行 JavaScript 代码
DOM 型
特殊的反射型 xss, 不需要向服务器请求恶意代码
练习
BlueLotus
- 安装部署
通过 install.php 自动安装, 要求为 php5 环境

-
输入
<img src=# onerror=alert(1) />测试是否有 xss 漏洞 -
创建恶意JavaScript代码, 构建恶意链接, 恶意链接包含恶意
JavaScript的URL路径

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

- 获取到用户端的敏感信息

文件上传
绕过前端验证
- 抓取前端发送的包, 修改文件后缀和内容
- F12 中禁用 Javascript
靶场搭建
- 安装
upload-labs
docker pull c0ny1/upload-labs
docker run --name upload-labs -d -p 80:80 c0ny1/upload-labs
- 禁用 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
- 访问上传的文件

绕过服务器验证
黑名单绕过
利用操作系统特性, 如 linux 上创建文件会自动删去末尾 /
- 修改 POST 请求头的
Content-Type为下面类型之一绕过

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

- 通过不常用的可解析后缀绕过, 如
.phtml
白名单绕过
- 通过添加URL编码
%00, 将其解码后是为\0, 实现截断后缀效果

-
通过检查文件内容自动判断文件类型的, 可使用
文件包含绕过 -
条件竞争, 删除文件的代码执行需要时间; 配置多线程, 不断上传文件, 同时手动不断访问链接, 访问会生成新文件, 新文件不会被删除

Upload_Auto_Fuzz
安装配置
- 下载 java 开发的 python 解释器
jython.jar, 指定位置

- 插件中添加
upload_auto_fuzz.py脚本

使用指南
