点击蓝字 / 关注我们
编者荐语:
以下文章来自夜组的岳墨师傅,主要内容为xss漏洞简述,希望大家能够从中有所收获。NightCrawler安全团队诚邀各位共同学习,共同进步。
0x00 前言
今天 我来讲解一下 xss漏洞
想必大家 都听说过(如果有大佬,请直接跳过这篇文章。我害怕,耽误了 大佬你宝贵的时间)
0x01 什么是xss?
xss我个人的理解就是 前端代码注入
说到注入,可能就有大佬联想到sql注入 对吧
但是 今天是xss。所以 我就不说sql注入了
首先 我们把它拆分开来说
什么是注入?
我举一个生活当中的例子吧
前段时间,由于我的被子比较薄。然后寝室室友他们开空调 设置的温度比较低。
导致我感冒了 流鼻涕,咳嗽
通常生病 我们干嘛?肯定是会去医院咯
所以 我就骑着小黄车去医院(因为我刚来这边,对这个地方不太熟悉。我就在高德地图上面找到了一家医院,距离大概2.7公里。来回也就5.4公里)
到了医院后 就打针嘛
护士小姐姐 拿着他的挚爱(注射器)
把液体注入到了我的身体里
以上是 在生活中 对注入的理解
那么在渗透测试当中
什么是注入?
简单理解 就是 用户输入的数据,被插入到了前端页面当中(虽然有点抽象,但理解就行)
总结也就是 用户输入的数据,被当作了前端代码进行执行
前端代码有哪些?(HTML,CSS,JS(javascript))
Html:构成网页的基础和骨架
Css:化妆师(美化页面)
Js:可以操纵浏览器/做动画(比如以下)
那么xss的核心是被当作了哪个前端代码呢?
从以上分析 html和css是关系不大的
主要核心是执行javascript 对吧
因为js可以操作浏览器
那么 我们说了这么多
0x02:xss到底能干嘛呢?
1. 盗取cookie(用的最频繁的)
2.获取内网ip
3.获取浏览器保存的明文密码
4.截取网页屏幕
5.网页上键盘记录
这个时候 有大佬就要说了?
什么是cookie?
简单理解就是 cookie是一张身份证(身份凭证)
当用户通过浏览器访问Web服务器时,服务器会给客户发送一些信息,这些信息都保存在cookie中。比如说我们登录某个网站成功后,把网站关掉之后再次访问时我们不用重新登录就直接进去 ,我们的信息便存在了cookie中。当该浏览器再次访问服务器时,会将cookie发送给服务器,服务器对浏览器做出正确的响应
下面 我就做一个演示
这一个真实的网站
因为一些法律因素在里面 所以我必须打码
我利用弱口令 成功登录到网站后台(正常情况下,谁也进不去,只有网站管理员才可以)
然后 我们换一个浏览器 去访问已经成功登录的这个网站路径
我们可以发现 就算访问已经登录成功的网站后台路径 也没办法进去
为什么?就是因为我们没有cookie
现在我打算利用刚刚已经登录成功的那个浏览器(火狐)
去拿他的cookie
我利用burp吧 这样容易看的清晰
这就是登录成功后 才有的cookie
我们把它复制下来
6N9z_saltkey=P32rhnRH; PHPSESSID=9tqm1icskg1os9qgkiu2o03u00; 6N9z_sid=6RNpCP; lastautologin=0; 6N9z_lastactivity=1631532882; 6N9z_ulastactivity=d966tfVe3g9aMRwsM0xZtBG3V36HEU4OV4Fe63Ky%2F%2F0ACsOTqJNi; 6N9z_dropnotify=%7B%22user%22%3A%221%22%2C%22unread_notify%22%3A1%2C%22unread_atme%22%3A0%2C%22unread_comment%22%3A0%2C%22unread_message%22%3A0%2C%22new_folower_count%22%3A0%2C%22unread_total%22%3A1%7D
然后利用cookie 我们就不需要账号和密码 直接进行登录
我们直接利用cookie 直接成功进入后台(无需账号和密码)
假如说 我们能够窃取到管理员的cookie的话
是不是 就不需要账号和密码 就直接登录网站的后台了呢
所以 我们才要学习xss
xss分为3类:
反射型XSS (你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击)
存储型XSS (你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)
DOM型XSS (比较复杂,我后面专门会说)
这里 还涉及到一个很重要的知识点
那就是 同源性法则或同源策略
我举一个例子
A网站的cookie能给C网站用吗?
这肯定不行对吧 这不就乱套了嘛
就好比 你的表弟 成了你的表哥
这关系就乱了呗
所以说 只能是同源的网站 才可以使用cookie
同源是指:同协议 同域名/ip 同端口
这样xss才能被触发
触发js的三种方法
1. 标签法 <script>
2. 伪协议法(不懂得,可以百度一下)
Javascript:<a href=javascript::alert(1)>
3. 事件法:就是当某件事情被触发了 他就会执行
(1)onmouseenter:当鼠标进入选区执行代码
<div style="123456</div>
(2)onmouseleave:当鼠标离开选区执行代码
<DIV onmouseleave="alert('bem')" style="123456</DIV>
(3)onmousewheel:当鼠标在选区滚轮时执行代码
<DIV onmousewheel="alert('bem')" style="123456</DIV>
(4)onscroll:拖动滚动条执行代码
<div style="width:100px;height:100px;overflow:scroll" onscroll="alert('bem')">123456
一般是想办法让浏览器弹窗(alert) 最经典的弹窗语句:
<script>alert(1)</script>
一般证明XSS是否存在,就是在正常页面传参然后构建参数让他弹窗就是存在XSS了
下面 我就去找一个真实存在xss的网站
大家 可以看到下面 这个网站
这个网站 就存在一个反射性xss
我尝试在这个搜索框里面打一个xss语句
<script>alert(1)</script>
发现页面弹框了
这个时候有人肯定要问了 你为啥不打码
因为 这个网站 是一个反射性xss 危害性并不大
像一些 漏洞平台都不会收得 哈哈哈哈
你们可以亲自去尝试一下
打一个xss
至于存储型xss和dom型xss
我后面 会更新。。。。。。。。
如有任何疑问可扫描下方二维码联系Hv+运营组
最终解释权由NightCrawler安全团队所有。
扫描下方二维码,联系Hv+运营组加入NightCrawler安全团队交流群!
原文始发于微信公众号(夜组安全):xss漏洞简述
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论