• 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

  • 相关阅读:
    <O(n),O(1)>的LCA
    hdu6110
    ACM模板
    prufer编码
    UvaLive6893_The_Big_Painting
    HDU5669
    Codeforces786B
    二分图部分总结
    Git简介和Windows下安装步骤
    笔记本电脑插入耳机后无法使用解决办法
  • 原文地址:https://www.cnblogs.com/b1gstar/p/12316635.html
Copyright © 2020-2023  润新知