SSL集训 2021.08.20 提高B组 T4 Tree【最小标准差生成树】

使用 C# 下载文件的十八般武艺

  返回  

2021年7月23日08点36分 XSS跨站

2021/8/20 20:06:29 浏览:

XSS跨站基础

跨站脚本(Cross-Site Scripting,XSS)漏洞是一种经常出现在web应用程序中的计算机安全漏洞,是由于web应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意的脚本代码入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害者用户可能采取Cookie窃取、会话劫持、钓鱼欺骗等各种攻击。
这也是大多数的web应用程序都存在的一个通病,简单的说,就是会把用户输入的信息完完整整的输出在页面中,这样很容易便会产生一个XSS。
漏洞危害:

  • 网络钓鱼,包括盗取各类用户账号;
  • 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
  • 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;
  • 强制弹出广告页面、刷流量等;
  • 进行恶意操作,例如任意篡改页面信息、删除文件等;
  • 进行大量的客户端攻击,例如DDOS攻击;
  • 网站挂马;
  • 获取客户端信息,例如用户的浏览记录、真实IP、开放端口等;
  • 结合其它漏洞,如CSRF漏洞,实施进一步作恶;
  • 传播跨站脚本蠕虫等。

XSS漏洞分类

反射型XSS

也称作非持久型、参数型跨站脚本。这种类型的跨站脚本是最常见,也是使用最广的一种,主要用于将恶意脚本附加到URL地址的参数中。一般出现在输入框、URL参数的位置。

持久型XSS

持久性跨站脚本也可以说是存储型跨站脚本,比反射性XSS更具威胁性,并且可能影响到web服务器自身的安全。一般出现在网站的留言、评论、博客日志等与用户交互处。

DOM型XSS

DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。一般不与服务端产生交互,只存在于本地客户端。

XSS漏洞挖掘方法

  • 确定输出点
    输入的参数被输出到了页面中,可能输出位置有一处,也可能有多处。
  • Fuzz测试(使用fuzz字典)
    测试程序过滤的危险字符内容,知己知彼。
  • 构造弹框代码
    根据输出位置的代码上下文环境,构造可以成功执行的攻击代码。若输出位置有多处,可以选择更容易构造的位置插入代码。

XSS漏洞攻击代码示例

  • 直接插入
<script>alert(/xss/)</script>
  • 利用HTML标签的事件执行
<img src=1 onerror=alert('xss')> <img/src=x onerror=alert(1)> <li/onclick=alert(xss)>a</li>
<svg/onload=alert(1)> <input type="button" value="click me" onclick="alert('xss')" />
  • 利用javascript伪协议执行
<a href=javascript:alert('XSS')>XSS</a> <img src="javascript:alert('xss');">
<table background="javascript:alert(/xss/)"></table>
  • 利用CSS样式执行
<div style="background-image:url(javascript:alert('xss'))">
<div style="width:expression(alert('xss'));">
<style>body {background-image:url("javascript:alert(/xss/)");}</style>
<style>body {background-image: expression(alert("xss"));}</style>
  • 利用DOM
<script>document.location.href="http://www.hacktest.com"</script>

Beef

XSS Platform

  • 创建项目
  • 配置项目代码
  • 选择模块及使用方法
  • 插入代码到存在漏洞的网站
  • 等待结果
  • cookie利用

XSS漏洞防御

  • 输入验证
    就是对用户提交的信息进行有效验证,仅接受指定长度范围内的,采用适当的内容提交,
    阻止或者忽略除此外的其他任何数据。
    输入验证要根据实际情况设计,下面是一些常见的检测和过滤:
    • 输入是否仅仅包含合法的字符;
    • 输入字符串是否超过最大长度限制;
    • 输入如果为数字,数字是否在指定的范围;
    • 输入是否符合特殊的格式要求,如E-mail地址、IP地址等。
<script type="text/javascript">
function checkTel(){
var re = /^025-\d{8}$/
if(re.test(document.getElementById("Tel").value))}
alert("电话号码格式正确")}
else{alert("错误的电话号码");}}
</script>
  • 输出编码
    HTML编码在防止XSS攻击上起到很大的作用,它主要是用对应的HTML实体编号替代字面
    量字符,这样做可以确保浏览器安全处理可能存在恶意字符,将其当做HTMl文档的 内容
    而非 结构 加以处理。
if ( OutStr != null && OutStr !="") {
OutStr = OutStr.replaceAll("&","&amp;");
OutStr = OutStr.replaceAll("<","&lt;");
OutStr = OutStr.replaceAll(">","&gt;");
OutStr = OutStr.replaceAll("\"","&quot;");
OutStr = OutStr.replaceAll("\'","&#39;");
OutStr = OutStr.replaceAll("\\(","&#40;");
OutStr = OutStr.replaceAll("\\)","&#41;");
OutStr = OutStr.replaceAll("%","&#37;");
OutStr = OutStr.replaceAll("\\+","&#43;");
OutStr = OutStr.replaceAll("-","&#45;");
}

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号