游客发表

xss漏洞靶场

发帖时间:2026-10-17 04:47:35

打开DVWA,洞靶把安全等级调到Low,洞靶点进XSS模块,洞靶输入框里敲下 <script>alert('xss')</script>,洞靶回车。洞靶弹窗出来了。洞靶就这么简单,洞靶简单到让人怀疑这东西到底有没有技术含量。洞靶但靶场存在的洞靶意义从来不是让你弹个窗就完事——它逼你去看源码,去理解浏览器到底把用户输入当成了什么。洞靶

DVWA的洞靶反射型XSS关卡,后端代码大概长这样:echo '<pre>Hello ' . $_GET['name'] . '</pre>';。洞靶没有转义,洞靶没有过滤,洞靶你输入什么它就原样吐回页面。洞靶浏览器拿到这段HTML,看到<script>标签就执行。问题出在“信任”两个字上——服务器信任了用户的输入,浏览器信任了服务器返回的内容。XSS就是在这条信任链上切了一刀。

有人觉得反射型XSS没什么用,毕竟payload在URL里,得诱导别人点击。但真实场景里,一条精心构造的链接发到客服聊天窗口,或者藏在短链接后面,中招的人不会少。2014年Twitter上那个著名的XSS蠕虫,就是利用推文里的漏洞自动转发、自动点赞,四个小时感染了上万个账号。代码不复杂,传播路径才要命。

存储型XSS是另一个量级。留言板、用户昵称、商品评论,只要数据进了数据库,再被别的页面读出来,恶意脚本就跟着一起出来了。DVWA里有个留言板关卡,输入<script>alert(document.cookie)</script>,提交。刷新页面,每次加载留言都会弹一次。更狠的是,这个payload对所有访问该页面的用户生效。你不需要骗任何人点链接,他们自己会来。

我见过一个真实的存储型XSS案例。某内部工单系统,用户提交工单时“标题”字段没做过滤。一个员工把payload写进标题,结果管理员每次打开工单列表,cookie就被发到外部服务器。三天后攻击者拿着管理员session进了后台,导出全部工单数据。整个链路里最讽刺的是——系统有WAF,但WAF只检查了请求体,没管数据库读出来的内容。

DOM型XSS更隐蔽。服务端返回的HTML是干净的,问题出在前端JavaScript。比如 document.getElementById('output').innerHTML = location.hash.slice(1);,你构造 #<img src=x onerror=alert(1)>,浏览器解析hash,JS把内容塞进innerHTML,img加载失败触发onerror。服务端日志里看不到任何异常,因为payload根本没到后端。

靶场练到最后,其实是在练一种思维习惯:看到输入框就想它会被放到哪里,看到URL参数就想它会不会被JS读取,看到innerHTML、document.write、eval这些API就条件反射地警惕。工具能帮你扫出一部分问题,但逻辑漏洞、上下文相关的绕过,还是得靠人去看代码、去猜开发者的意图。

DVWA的High等级开始加token、加白名单、加htmlspecialchars。你绕不过去的时候,反而能理解防御为什么长这样。XSS不是靠一个函数就能解决的问题,输出点的上下文决定了转义方式——HTML里转义尖括号,属性里转义引号,JS里转义反斜杠和引号,URL里做encodeURIComponent。搞混一个,漏洞就还在。

靶场终究是靶场。真实系统里还有CSP、HttpOnly、SameSite这些浏览器层面的缓解措施,但绕过手法也在进化。把DVWA的每个关卡手敲一遍,比看十篇“XSS原理详解”有用得多。弹窗只是开始,cookie外带、键盘记录、钓鱼表单注入,这些才是XSS真正的杀伤力所在。下次看到输入框,别只想着alert。

    热门排行

    友情链接