渗透测试基础-DOM型XSS原理及实操

渗透测试基础-DOM型XSS原理及实操

    • DOM是什么,DOM型XSS又是什么
    • Dom型XSS靶场演练
    • 漏洞总结

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力!

DOM是什么,DOM型XSS又是什么

Dom是一个与平台,编程语言无关的【端口】,它允许程序或者脚本动态的访问和更新文档的内容,结果和样式,处理后的结果能够成为显示的一部分不依赖于提交数据到服务器端,从而客户端获得Dom中的数据在本地执行,如果Dom中的数据没有经过严格的确定,就会产生Dom型XSS漏洞。

在简单点描述:(Dom型Xss是一种基于文档对象模型的一种漏洞

一个东西的出来,必定是有原因的。当我们在访问一个网站时,我们的某些操作是会使用到提供网页数据的服务器做运算的,服务器在相应的运算之后,再将结果返回给我们。这个看起来没有毛病,但是一个人的访问,对他的所有需求都给予处理的话这样服务器运算还跟的上,但如果访问的人非常的多呢?这个所需的运算量就会上升非常多,所以那些开发前辈就弄出来像DOM这样的平台,它将我们的某些操作所需的运算,在我们本地执行,不对网站服务器发起请求,这样就减少了不必要的运算消耗

来了解一下Dom的具体使用方法和一些它能做到的功能。

点击F12打开控制台,然后找到console,然后在下面输入document.cookie,它就会返回我们当前的Cookie值

输入document.url,就会返回当前的url值
渗透测试基础-DOM型XSS原理及实操_第1张图片
比如还有
Document.body 可获取网页body里面的全部代码
Document.domain 可获取网站域名

这些就不一一演示了,在了解高级一点的

1.getElementbyid()返回对拥有指定id的第一个对象的引用
2.getElementbyname()返回指定名称的对象集合
3.getElementbytagname()返回指定标签的对象集合
4.document.write()页面输出
5.innerHTML() 改变内容
6.eval()执行代码
可以拿一些做演示,比如urlwrite配合,就可以在网页上显示网站的域名

渗透测试基础-DOM型XSS原理及实操_第2张图片
Dom平台的功能还有许许多多,就先介绍到这,来直接看一下靶场是这样的。

Dom型XSS靶场演练



在图片上能看到,在URL上显示的/dom_xss/其实是因为documen.write显示出来的
在上面url进行传参尝试一下。

简单的尝试了一下可以看到,在上面传参后,页面发生了一样的改变,这里就可以理解是,在url传参,后端接收到了信息,将数据交给document.write来输出到页面上。
既然url传参可行,那试试弹窗语句

渗透测试基础-DOM型XSS原理及实操_第3张图片
url后面传参后,网页受到了安全狗的阻拦,那我们这就可以用一下DNS注入里面学来的技巧,用txt类型放在后面,前面跟上index.php,来绕过安全狗的阻拦。【1.apache的特性,当遇到不认识的,默认往前解析一位。2.安全狗或其他安全设备,在考虑用户体验性上,有一些妥协,比如会放入一些白名单,如url里面带有txtpng这样的文件类型,不做拦截。两个搭配,就有了绕过】

测试语句:
index.php/1.txt?

输入之后不在拦截了,那我们右键看一下发生了什么情况,为什么没有弹窗

渗透测试基础-DOM型XSS原理及实操_第4张图片
发现问题出在我们输入的与其本身的让其先闭合就好

测试语句:
index.php/1.txt?
渗透测试基础-DOM型XSS原理及实操_第5张图片
这样就成功弹窗了。但是因为在现实情况中,会遇到各种个样的问题,所以我们在多学一种绕过的方式,那就是编码,要知道的js是支持识别NITIVE格式的,只要将弹窗语句做一下编码即可
渗透测试基础-DOM型XSS原理及实操_第6张图片
渗透测试基础-DOM型XSS原理及实操_第7张图片
这里能够注意到一点,并没有像刚刚那样,在前面加上一个做闭合,其实这里是不用加的,我们来看一下F12
渗透测试基础-DOM型XSS原理及实操_第8张图片
document.write()是输出,这里它输出了两个东西,一个是/dom_xss/?

一个就是咱们的弹窗语句,它是正大光明触发的弹窗,经过的编码既逃过了waf的检测,实实在在的让我们的语句能够触发弹窗。

既然证明了XSS的存在,那就需要获得flag了,将弹窗语句替换为XSS平台的恶意语句,当管理员用户点击链接,xss平台就能获取管理员的cookie【我们的flag】
渗透测试基础-DOM型XSS原理及实操_第9张图片
渗透测试基础-DOM型XSS原理及实操_第10张图片
渗透测试基础-DOM型XSS原理及实操_第11张图片

漏洞总结

XSS的防护方法可采用设置实体编码函数来处理,但记得要将单引号和尖括号设置进去,因为实体编码的函数,默认只会对双引号进行实体编码。可以跟员工普及安全知识,因为像反射型XSS需要别人的点击才会触发,所以在点击链接时因考虑一下这个链接会不会存在问题。

《最好的防御,是明白其怎么实施的攻击》

你可能感兴趣的:(XSS,js,安全,web)