Web安全系列(三):XSS 攻击进阶(挖掘漏洞)

简介: 本篇文章当中会以`permeate`生态测试系统为例,分析网站功能,引导攻击思路,帮助读者能够快速找出网站可能存在的漏洞。

前言

在前些章节 (web安全系列(一):XSS 攻击基础及原理)以及(Web安全系列(二):XSS 攻击进阶(初探 XSS Payload))中,我详细介绍了 XSS 形成的原理以及 XSS 攻击的分类,并且编写了一个小栗子来展示出 XSS Payload 的危害。

目前来说,XSS 的漏洞类型主要分为三类:反射型、存储型、DOM型,在本篇文章当中会以permeate生态测试系统为例,分析网站功能,引导攻击思路,帮助读者能够快速找出网站可能存在的漏洞。

反射型 XSS 挖掘

现在笔者需要进行手工XSS漏洞挖掘,在手工挖掘之前笔者需要先逛逛网站有哪些功能点,如下图是permeate的界面

image

思路分析

我们知道反射型 XSS ,大多是通过 URL 传播的,那么我就需要思考哪些地方会出现让 URL 地址的参数在页面中显示,我相信大部分读者脑中第一直觉就是搜索栏,尤其是一些大型网站的站内搜索,搜索的关键词会展示在当前的页面中。例如某搜索引擎:

image

而在我们测试的首页也有网站搜索功能,因此我们可以从搜索功能着手测试,尝试是否可以进行 XSS Payload,我们先输入一个简单的 Payload 进行测试,测试代码为<img onerror="alert(1)" src=1 />

当我们点击搜索按钮时,URL 应当自动改变为 http://localhost:8888/home/search.php?keywords=<img onerror="alert(1)" src=1 />

操作过程

我们进行尝试:

先输入搜索内容

image

再进行搜索

image

我们发现,Google Chrome 居然直接阻止了该事件,Payload 也没有进行触发,这里我就需要跟读者说一下了,Chrome 浏览器的内核自带 XSS 筛选器,对于反射型 XSS 会自动进行拦截,所以尽量不要用 Chrome 进行测试,我们改用火狐继续进行测试:

image

果然,直接触发了我们的 Payload 。

结果分析

此 Payload 被触发,说明我们找到了一个反射型 XSS 的漏洞,当然,这种漏洞非常初级,绝大部分网站都进行了过滤操作,再加上随着浏览器功能越来越强大,浏览器自带的 XSS 筛选器变得更加智能,这种漏洞会越来越少见,下面我将会测试更为常见的存储型 XSS 的挖掘与并介绍如何绕过。

存储型 XSS 挖掘

思路分析

存储型 XSS 的攻击代码是存在服务器端,因此,我们需要找到该网站将数据存储到后端的功能,我们对此网站有了一定了解,会发现 permeate 拥有发帖和回帖功能,这正是 Web 端和后台进行沟通的渠道,所有帖子信息都会存在服务端,有了这些信息,我们可以进入板块,进行发帖操作:

image

进入发帖界面:

image

检测漏洞

我们现在标题和内容里填上初级的 Payload :123<script>alert('123')</script>

image

我们进行发表操作:

image

页面直接执行了我们的 Payload,我们点完确定,查看列表:

image

我们进入帖子内部,会发现如下场景:

image

很明显,文章主体部分的 Payload 并没有执行,这到底是怎么一回事呢?

抓包

为什么标题内容可以 Payload,主体内容不能 Payload 呢,我们打开控制台,切到Network 再来发一篇帖子看看:

image

我们可以看到对应的内容已经经过转义,转义分为两种,前端转义和后端转义,如果是后端转义通常我们就不需要测试下去了,因为我们不知道服务端的内部代码,如果是前端转义则可以绕过这个限制。

那么该如何操作呢?

image

我们拷贝出 URL

curl 'http://localhost:8888/home/_fatie.php?bk=5&zt=0' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://localhost:8888' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: http://localhost:8888/home/fatie.php?bk=5' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' -H 'Cookie: PHPSESSID=7690435026da386df8a80e63f3da2089' --data 'csrf_token=9191&bk=5&title=123%3Cscript%3Econsole.log%28232%29%3C%2Fscript%3E&content=%3Cp%3E123%26lt%3Bscript%26gt%3Bconsole.log%28232%29%26lt%3B%2Fscript%26gt%3B%3C%2Fp%3E' --compressed

找到其中的 title 和 content,将 content 的内容替换为 title 的内容:

curl 'http://localhost:8888/home/_fatie.php?bk=5&zt=0' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://localhost:8888' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: http://localhost:8888/home/fatie.php?bk=5' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' -H 'Cookie: PHPSESSID=7690435026da386df8a80e63f3da2089' --data 'csrf_token=9191&bk=5&title=123%3Cscript%3Econsole.log%28232%29%3C%2Fscript%3E&content=123%3Cscript%3Econsole.log%28232%29%3C%2Fscript%3E' --compressed

替换完成之后,将此内容复制到终端进行运行:

image

回到主页面查看相关内容:

image

Payload 执行了两次,内容也被攻击了。

结果分析

看到此处说明我们已经成功绕过前端XSS过滤器,直接对内容进行修改,所以后端的转义有时候也很有必要。

总结

挖掘漏洞是一个复杂的过程,手工挖掘不失为一种可靠的方式,但是手动挖掘效率低下,有时还要看运气,目前已经出现很多自动检测 XSS 漏洞的工具以及平台,大大提高发现漏洞的效率,我将在稍后的章节中介绍一些工具以及如何防御 XSS。

目录
相关文章
|
17天前
|
缓存 安全 JavaScript
前端安全:Vue应用中防范XSS和CSRF攻击
【4月更文挑战第23天】本文探讨了在Vue应用中防范XSS和CSRF攻击的重要性。XSS攻击通过注入恶意脚本威胁用户数据,而CSRF则利用用户身份发起非授权请求。防范措施包括:对输入内容转义、使用CSP、选择安全的库;采用Anti-CSRF令牌、同源策略和POST请求对抗CSRF;并实施代码审查、更新依赖及教育团队成员。通过这些实践,可提升Vue应用的安全性,抵御潜在攻击。
|
18天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
10天前
|
存储 安全 JavaScript
【PHP开发专栏】PHP跨站脚本攻击(XSS)防范
【4月更文挑战第30天】本文探讨了Web开发中的XSS攻击,解释了其原理和分类,包括存储型、反射型和DOM型XSS。XSS攻击可能导致数据泄露、会话劫持、网站破坏、钓鱼攻击和DDoS攻击。防范措施包括输入验证、输出编码、使用HTTP头部、定期更新及使用安全框架。PHP开发者应重视XSS防护,确保应用安全。
|
12天前
|
存储 Serverless 网络安全
Serverless 应用引擎产品使用之阿里云函数计算中的Web云函数可以抵抗网站对DDoS攻击如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
20 0
|
15天前
|
安全 前端开发 JavaScript
在Python Web开发过程中:Web框架相关,如何在Web应用中防止CSRF攻击?
在Python Web开发中防范CSRF攻击的关键措施包括:验证HTTP Referer字段、使用CSRF token、自定义HTTP头验证、利用Web框架的防护机制(如Django的`{% csrf_token %}`)、Ajax请求时添加token、设置安全会话cookie及教育用户提高安全意识。定期进行安全审计和测试以应对新威胁。组合运用这些方法能有效提升应用安全性。
22 0
|
25天前
|
安全 JavaScript Go
跨站脚本攻击(XSS)防护在Django中的应用
【4月更文挑战第15天】本文介绍了Django如何防范XSS攻击。Django模板引擎自动转义HTML以防止恶意脚本,提供`mark_safe`函数和CSRF防护。此外,建议开发者验证清理用户输入、使用内容安全策略、更新库以及遵循安全编码实践来增强防护。通过这些措施,开发者能构建更安全的Web应用。
|
29天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
1月前
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入
|
1月前
|
SQL Web App开发 安全
CTF-Web安全--SQL注入之Union注入详解
CTF-Web安全--SQL注入之Union注入详解
|
8天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}