原理:
XSS的中文名称叫跨站脚本,是WEB漏洞中比较常见的一种。
特点:就是可以将恶意HTML/JavaScript代码注入到受害用户浏览的网页上,从而达到劫持用户会话的目的。
XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,而DOM型不用将恶意脚本传输到服务器在返回客户端。
原理:
DOM型XSS就是基于DOM文档对象模型的。对于浏览器来说,DOM文档就是一份XML文档,当有了这个标准的技术之后,通过JavaScript就可以轻松的访问它们了。
低级
步骤:
- 代码查看;
页面测试:
没有对default参数进行任何过滤。 - 直接对default参数进行修改,页面出现弹窗,攻击成功。
浏览器:
http://192.168.36.129/DVWA-master/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%27hack%27)%3C/script%3E - 对页面进行元素查看,
中级
步骤
- 代码分析:
medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。使用了stripos 用于检测default值中是否有 <scrip,如果有的话,则将 default=English。则过滤了 <script (不区分大小写)。
测试:使用 执行就会变成 English。
- 进行攻击
1) 使用img、body等标签,使用<img src=1 οnerrοr=(‘hack’)>
测试:
火狐查看页面元素
谷歌查看页面元素:
img标签并没有发起任何作用。
2) 根据源代码构造:
构造的代码:
测试:
没有成功。
3) 继续构造语句,闭合select 标签:
页面显示成功。
查看源代码
English 也可攻击成功。
http://192.168.36.129/DVWA-master/vulnerabilities/xss_d/?default=English%3C/option%3E%3C/select%3E%3Cimg%20src=1%20οnerrοr=alert(/xss/)%3E
页面显示结果:
高级
步骤:
-
代码分析:
使用了switch()函数,在这里相当于白名单,只允许传 default值为English、French、German、Spanish 其中一个。 -
使用:English #
http://192.168.36.129/DVWA-master/vulnerabilities/xss_d/?default=English#%3Cscript%3Ealert(/xss/)%3C/script%3E
3,页面结果,攻击成功。