网络安全学习-5

190 阅读8分钟

一、简述xss漏洞原理和分类及依据

1、概述

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web⻚⾯⾥插⼊恶意脚本(JavaScript代码),当⽤户浏览该⻚⾯时,嵌⼊Web⾥⾯的JS代码会被执⾏,从⽽达到恶意攻击⽤户的⽬的。XSS攻 击针对的是⽤户层⾯的攻击。

2、产生的原因

Web应用程序未对用户输入(如表单、URL参数、评论内容)进行严格验证或转义,也未对输出到页面的内容进行安全编码,导致恶意代码被浏览器解析为正常脚本执行。

3、攻击流程

  1. 攻击者通过输入点(如留言板、搜索框)提交恶意脚本。
  2. 恶意脚本随页面返回用户浏览器(反射型/存储型)或由前端DOM解析触发(DOM型)。
  3. 被攻击者浏览器解析脚本,攻击者窃取Cookie等信息重定向至钓鱼页面。

4、分类

1、反射型

特点:⾮持久型,常⻅的就是在URL中构造,将恶意链接发送给⽬标⽤户。当⽤户访问该链接时候,会向服务器发起⼀个GET请求来访问带有恶意代码的链接。服务器将恶意脚本反射给用户浏览器并执行,这种攻击通常通过邮件、链接等方式传播,具有一次性特点。造成反射型XSS主要是GET类型。

2、存储型

特点: 也称为持久型XSS。常⻅的就是在博客留⾔板、反馈投诉、论坛评论等位置,将恶意代码和正⽂都被永久的存⼊服务端(数据库、内存、⽂件系统等),每次访问都会触发恶意代码。当其他用户访问包含该脚本的页面时,脚本会在其浏览器中执行,影响范围更广,隐蔽性更强。

3、DOM型

特点:攻击者通过修改页面的DOM(文档对象模型)结构,使恶意脚本在用户浏览页面时执行。这种攻击不依赖服务器端代码,而是利用客户端脚本动态修改页面内容。

5、分类依据

XSS的分类依据主要是攻击脚本的存储位置以及触发的机制:

存储位置:存储型XSS的脚本是存在于服务器,反射型和DOM型脚本不存储在服务器。

触发机制:反射型需要用户点击恶意链接;存储型用户访问正常页面几个触发;DOM型依赖客户端脚本解析。

二、BlueLotus和beef-xss平台对xss漏洞进行利用

1、BlueLoutus安装使用

1. 安装

1.1. 官网下载压缩包
1.2. 搭建本地环境

开启phpstudy的Apache

创建网站(域名自定义)

将BuleLoutus安装目录设置为网站的根目录

测试是否安装成功

搭建完成

2. 使用

2.1. 创建JS

2.2. 将生成的payload的粘贴到靶场
2.3. 当用户登录后台,BuleLoutus平台就会收到用户的信息。

2.4. 漏洞利用(Burp)

验证输入用户登录地址,就可以绕过登录界面,使用Burp抓包后可以看到Cookie已经被替换成功

2、BeFF安装使用

1. 安装

在kali上使用,执行下面命令安装软件:

apt-get install beef-xss

使用下面命令启动Beef:

beef-xss

访问平台:IP地址:3000/ui/panel,默认账号beef,密码为启动软件时配置的密码。

2. 使用

将payload复制到靶场

回到beef平台

漏洞利用和BuleLoutus一样。

三、文件上传漏洞之前端校验绕过服务器后端绕过技巧

1、概述

文件上传漏洞利用的核心思路是绕过前端与后端的校验机制,将恶意文件(如WebShell)上传到服务器并可被访问执行。攻击者通常结合多种技巧,针对校验的薄弱环节进行绕过。

2、常见绕过技巧

前端校验绕过

前端校验通常通过JavaScript检查文件后缀、类型或大小,但这类校验在客户端完成,容易被禁用或篡改。

  • 禁用JavaScript:在浏览器中禁用JavaScript,直接绕过前端校验。
  • BurpSuite抓包修改:使用抓包工具(如BurpSuite)拦截上传请求,修改文件名或文件内容,绕过前端校验。

后端(服务器)绕过

后端校验通常包括文件扩展名、内容检测、MIME类型验证等,攻击者通过多种方式绕过这些校验。

  • 文件扩展名绕过
    • 大小写混合:将.php改为.Php、pHp等,利用后端未统一转换大小写进行绕过。
    • 添加特殊字符:在文件名后添加特殊字符(如.php%00、.php.),利用后端解析差异绕过。
    • 双写后缀:使用双重后缀(如.pphphp),利用后端过滤逻辑缺陷绕过。
  • 服务器白名单绕过
    • MIME类型检测绕过:在上传请求中伪造合法的MIME类型(如image/jpeg),绕过后端的MIME类型验证。
  • 文件内容绕过
    • 图片码:将恶意代码嵌入图片文件中(如.jpg、.png),利用后端仅检查文件头或扩展名的漏洞绕过。
  • 中间层解析漏洞利用
    • IIS短文件名:利用IIS的短文件名(如xxxx~1.php)绕过后缀限制。
    • Apache解析漏洞:利用Apache的解析特性(如从右到左解析),上传多后缀文件(如shell.php.xxx)绕过。
    • Nginx解析漏洞:Nginx⽂件解析漏洞主要发⽣在PHP环境与Nginx的配合使⽤中,核⼼问题是Nginx和PHP-FPM对请求URI的处 。
    • 关键点:
  1. Nginx处理流程:Nginx根据location匹配规则将请求交给PHP-FPM处理

  2. PHP-FPM⾏为:PHP-FPM根据SCRIPT_FILENAME 参数决定执⾏哪个⽂件 。

  3. 路径解析差异:Nginx和PHP-FPM对路径中的特殊字符(如 / 、 %00 )处理⽅式不同理不⼀致导致的。

  • 服务器黑名单绕过:
    • 特殊可解析后缀绕过:许多Web服务器只做了简单的后缀名⿊名单,识别上传⽂件的类型是否为 '.asp','.aspx','.php','.jsp' 中的⼀个,若是其中的⼀个,则不允许上传。 但是除了常⻅的 .php 扩展名外,Web 服务器配置也会将其他扩展名识别为 PHP 脚本并执⾏其中的代码(比如,phtml、phps、php5、pht等)。
    • .htaccess绕过: .htaccess⽂件也被称为分布式配置⽂件,全称是 Hypertext Access。.htaccess ⽂件提供了针对⽬录改变配置的⽅法(只针对当前目录和子目录生效), 即在特定的⽂档⽬录中放置⼀个包含⼀条或者多条规则指令的该⽂件,以作⽤于此⽬录及其所有⼦⽬录。
    • .user.ini绕过:.user.ini就是⽤户⾃定义的php.ini,可以利⽤这个⽂件来构造后⻔和隐藏后⻔。不仅限于 Apache 服务器,同样适⽤于 Nginx服务器,只要服务器启⽤了fastcgi 模式 (通常⾮线程安全模式使⽤的就是 fastcgi 模式)。

四、文件上传漏洞之服务端内容检查绕过和条件竞争漏洞

1、服务端内容绕过

  1. 文件头绕过

图片马:将文件正常的图片和恶意代码(.php)拼接,使服务器误判为图片,实际内容仍为恶意代码。

  1. 突破getimagesize:攻击者构造一个文件,其开始部分是合法的图像文件头,后面附加非图像内容(如恶意代码)。 getimagesize()  仅检查文件头部,确认其为图像,而忽略后续内容。
  2. 突破exif_imagetype:创建一个文件,其开始部分为合法图像文件头,后面附加恶意代码。exif_imagetype() 只检查文件头部,确认其为图像,而不会检测到后续的非图像内容。
  3. ⼆次渲染绕过:通过图片码,将恶意代码嵌入图片文件中(如.jpg、.png),利用后端仅检查文件头或扩展名的漏洞绕过。创建一个GIF文件,其中包含经过特殊构造的像素数据(在没有被二次渲染的GIF中构造恶意代码)。服务端对GIF文件进行二次渲染后,GIF文件中的恶意代码仍保留在文件中,从而绕过检测。

2、条件竞争

原理:利用时间差上传,利用服务器先保存文件再检测的时序缺陷,在检测前访问临时文件路径执行恶意代码。

攻击流程

  1. 上传恶意文件:如PHP脚本 race_attack.php,内容为创建持久化WebShell:
<?php fputs(fopen('shell.php','w'),'<?php @eval($_REQUEST["cmd"]);?>'); ?>

2. 高并发请求

    • 使用 Burp Intruder 循环发送上传请求(Payload类型:NullPayload)。
  1. 触发恶意代码:在文件被删除前访问成功,生成持久化WebShell(如shell.php)。

五、Upload_Auto_Fuzz插件

1、安装

官网下载软件

该软件是py开发,Burp是java开发的。所以需要现在Burp上安装jython。

jython下载地址:www.jython.org

设置jython

添加upload_Auto_Fuzz插件

2、使用

将抓取到的数据包发送Intruder模块

设置payload,先清除下payload