一.XSS 漏洞简介
XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
二,分类。
1.存储型:
存储型 XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种 XSS 比较危险,容易造成蠕虫,盗窃 cookie。
2.反射型。
非持久化,需要欺骗用户自己去点击链接才能触发 XSS 代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型 XSS 大多数是用来盗取用户的 Cookie 信息。
3.DOM-XSS
DOM-XSS 漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS 是通过 url 传入参数去控制触发的,其实也属于反射型 XSS。 DOM 的详解:DOM 文档对象模型可能触发 DOM 型 XSS 的属性,DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。一般是浏览器前端代码进行处理。
4.通用型XSS
通用型XSS,也叫做UXSS或者Universal XSS,全称Universal Cross-Site Scripting。
上面三种XSS攻击的是因为客户端或服务端的代码开发不严谨等问题而存在漏洞的目标网站或者应用程序。这些攻击的先决条件是访问页面存在漏洞,但是UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型。
三,危害
1.挂马
2.盗取用户Cookie。
3.DOS(拒绝服务)客户端浏览器。
4.钓鱼攻击,高级的钓鱼技巧。
5.删除目标文章、恶意篡改数据、嫁祸。
6.劫持用户Web行为,甚至进一步渗透内网。
7.爆发Web2.0蠕虫。
8.蠕虫式的DDoS攻击。
9.蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
10.其它安全问题
四,攻击点。
1.一切用户可控并且能够输出在页面代码中的地方:url参数,url本身,表单,搜索框,提交框等
2.重灾区:评论区、留言区、个人信息、订单信息等。针对型:站内信、网页即时通讯、私信、意见反馈。存在风险:搜索框、当前目录、图片属性等。白盒测试(代码审计)
五,常见基本过滤方法。
空格过滤:用/代替
引号过滤:不用引号(html)用反引号代替单双引号(js)
括号过滤:当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。eg:
<img src=x οnerrοr="javascript:window.οnerrοr=alert;throw 1">
<a οnmοuseοver="javascript:window.οnerrοr=alert;throw 1>
关键字过滤:使用大小写绕过和双写绕过。
字符串拼接绕过:利用eval()函数,同php一样可以计算字符串,并将其作为代码执行。
...........还有很多,有待补充
六,示例——xss-labs
level1:
1.打开环境,上面有一个url框,这应该就是我们要注入的地方
2.看到第5行代码,意思是显示一条指定消息和一个确认按钮的警告框——也就是通关的关键信息。
3.在name之后写上我们要注入的内容
level2:
1.打开环境,有一个搜索框,是我们要注入的地方,试试刚刚的payload,没成功。
2.看源码,在第15行我们输入的特殊符号内容被转义,而第17行的却没有,第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可,构造payload
3."> <script>alert()</script> <"
level3:
1.再次输入一开始的payload,发现这次的网页源码,在两个地方的特殊字符都被转义了,实际源代码的第18和20行都说明了用了一个——htmlspecialchars函数:只针对<>大于小于号进行html实体化,没做设置,默认过滤双引号。
方法1:既然这样,就要使用焦点事件了onfocus事件绕过:构造payload如下,输入输入框点击搜索后,再次点击输入框就成功了。原理:当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码。
' onfocus=javascript:alert() '
方法2:onclick事件,它可以在用户单击按钮时执行js代码。,构造payload,将这个代码插入后
点击搜索框,触发onlick事件。
'οnclick='alert("xss")
方法3:onmouseover:把鼠标放上去就行了。
'οnmοuseοver='alert(“xss”)
七:xss渗透流程
XSS渗透的基本流程如下:
收集信息:通过抓包工具、搜索引擎、目录扫描等方式,收集目标网站的信息,包括参数、网站结构、表单等。
查找漏洞:针对收集到的信息,尝试向不同的参数注入脚本,观察网站的响应结果,检测是否存在XSS漏洞。
利用漏洞:一旦发现存在XSS漏洞,可以通过不同的方式利用漏洞,包括窃取用户信息、绕过身份验证、执行任意代码等。
维持访问:为了保持对目标网站的持续控制,攻击者需要设置后门或者其他恶意代码,以便在目标网站上长期存在。