zoukankan      html  css  js  c++  java
  • PHP-CMS代码审计 (3)

    经过前两次审计,有点入门的感觉。 这次误打误撞选了emlog来审计。源码就不上传,baidu直接找到官网。

    后来才发现,emlog已是发布N年深得认可的blog,所以就不指望找漏洞了。

    通过读emlog的代码,算是初步领略到专业架构。前端的路由分发算是抵挡了大部分漏洞,很强大,通篇对上传的参数进行整型校验,或者转义,只是在后台找到注入,然后没有啥意义。

    同时也领略了里面的cookie验证,登陆密码验证功能,比一般简单使用md5强太多。

    整体给我一种很精简的感觉,很耐看,这种架构很值得学习。

    搜了下emlog历史漏洞,有p神发布的em相册漏洞,比较入门的上传漏洞。

    https://www.leavesongs.com/PENETRATION/emlog-important-plugin-getshell.html

    看了下最新版的相册插件,上传漏洞已经修复,insert注入依然存在,但是需要登陆才行,鸡肋。

    1、emlog后台可以很轻松getshell

    比如在插件处,把shell.php放在xx文件夹,然后压缩成xx.zip ,上传安装,即可得到/content/plugins/xx/shell.php

     2、主题编辑插件 getshell

    <?php
    require_once '../../../init.php';
    $result = array();
    if (ISLOGIN === false) {
        $result["status"] = false;
        $result["msg"] = "没有登陆!";
    }else{
        require_once 'themeseditor_function.php';
        
        $action = isset($_POST['action']) ? addslashes($_POST['action']) : '';
    
        if(empty($action)){
            $result["status"] = false;
            $result["msg"] = "操作类型错误!";
        }else{
            if($action == 'save'){
                $themeName = $_POST['themeName'];
                $fileName = $_POST['fileName'];
                $content = $_POST['content'];
                $status = saveThemFileContent($themeName,$fileName,$content);

    看看saveThemFileContent函数

    function saveThemFileContent($themeName,$fileName,$content){
        if (!empty($content)) {
            $fso = fopen(THEMESEDITOR_THEME_PATH.$themeName.'/'.$fileName, 'w');
            fwrite($fso, htmlspecialchars_decode($content));
            fclose($fso);
            return true;
        }
        return false;
    }

    htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符

    所以可以直接getshell,要是能配合ssrf或者xss就比较完美

    总结:找上传漏洞,全局搜索move_uploaded_file

  • 相关阅读:
    201215-03-19---cocos2dx内存管理--具体解释
    sqlHelper的增删改查
    Java Web的数据库操作(一)
    Myeclipse 中添加mysql的jdbc驱动
    MySQL索引的创建、删除和查看
    搭建Windows下Java Web开发环境
    Qt 格式化字符串
    实现C++模板类头文件和实现文件分离的方法
    Qt Creator实现状态栏显示
    Win7 64位下配置Qt5.3和Wincap
  • 原文地址:https://www.cnblogs.com/b1gstar/p/12316635.html
Copyright © 2011-2022 走看看