1.什么是XSS(JS代码注入)?
全称 Cross-Site Scripting,中文是跨站脚本。
从本质上xss也属于注入漏洞的一种,它是js代码注入。被注入的恶意的js代码是在前端浏览器执行的,所以属于前端漏洞,产生的危害:用户资料的窃取、cookie的劫持、钓鱼欺骗等等。
1.2 XSS分类
- 反射型XSS
- 持久型XSS
- DOM型XSS
1.3 反射型XSS
接收用户提交的访问者的姓名,并返回给浏览器。
漏洞利用步骤
1.黑客利用服务器上的XSS漏洞,构造恶意的链接,发送给受害者,引诱受害者点击这个链接。
2.受害者点击该链接,向服务器发送包含恶意js代码的请求。
3.服务器接收受害发送的请求,没有对参数做检查和过滤,直接将恶意的js代码响应给受害者。
4.受害者收到服务器响应回来的恶意的js代码,并由浏览器解析执行,受到攻击!
一些信息的搜索框,可能存在反射型的XSS。
在必应中搜索: inurl:asp id 公司,第一条记录:夏溪科技存在反射性XSS漏洞
1.4 存储型XSS
1.4.1 存储xss的利用步骤
1.黑客利用服务器上的XSS漏洞,提交恶意的js代码,服务器将恶意代码存储到数据库
2.受害者(其他用户)访问服务器的某个页面,而这个页码会使用到数据库的数据。服务器从数据库获取恶意的js代码,并返回给受害者。
存储型XSS漏洞利用条件比较简单,危害面也比较广,比反射型XSS更受到关注!
1.4.2漏洞挖掘时,存储型XSS漏洞的产生的场景
1.用户注册,可以尝试在除密码之外的每一个输入框中都增加<script>alert(1)</script>.例如:邮箱可以使用tedu@163.com<script>alert(1)</script>这样的数据,登录后,如果页面有邮箱显示,就会弹框.
2.论坛的文章发表,评论,交流的输入框中,都可以尝试<script>alert(1)</script>
3.电商网站的商品评价\回复,的输入框,也可以尝试<script>alert(1)</script>
4.企业网站的产品的评价、留言。
1.5 DOM型XSS
恶意代码不需要通过服务器的,直接在前端浏览器的页面中被调用的。为什么称为DOM型XSS?
因为是在前端页面中,通过DOM函数,动态增加页面标签时,使用了恶意的代码,所以称为DOM型。
dom型XSS的漏洞利用步骤与反射型的步骤相同。都需要构造恶意链接引诱受害者点击!
1.6 如何验证是否存在XSS漏洞
payload:<script>alert(1)</script>
<img src=1 οnerrοr=alert(1)>
如果直接显示,表示没有漏洞;如果弹窗,说明存在漏洞。