• 代码审计-4 代码执行漏洞


    代码执行漏洞

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    代码执行漏洞利用

    在这里插入图片描述

    ZZZPHP1.6 远程代码执行漏洞分析

    在这里插入图片描述

    漏洞点函数

    此处如果能控制$ifstr就可以进行闭合,执行恶意代码
    parserIfLabel函数将传入的参数进行正则匹配,当匹配通过时继续往下走
    下面并没有对恶意代码内容进行过滤

    在这里插入图片描述
    跟踪parserIfLabel函数查看它的参数是在哪里传入的
    此处将parserCommom函数传入的参数作为参数,来调用parserIfLabel函数

    在这里插入图片描述
    继续跟踪parserCommom函数查看它的参数是在哪里传入的
    此处parserCommom函数的参数值是通过load_file函数的结果进行赋值的

    在这里插入图片描述
    继续跟踪load_file函数
    此函数的功能就是载入对应路径的文件,并返回文件内容

    在这里插入图片描述
    也就是载入此处传入的$tplfile变量中的路径的文件,并返回文件内容

    在这里插入图片描述
    继续找变量$tplfile的值是从哪里赋来的
    $tplfile的值是通过一个switch语句根据变量$location的值进行判断匹配然后赋值的,TPL_DIR为绝对路径

    在这里插入图片描述
    $location变量的值又是通过getlocation函数返回的

    在这里插入图片描述
    跟踪getlocation函数,此函数的作用就是返回get请求方式url中的最后一个文件名
    例如:http://127.0.0.1/zzzphp/search.html返回的就是search

    在这里插入图片描述

    复现

    找到serach的页面

    在这里插入图片描述
    此页面就是一个模板

    在这里插入图片描述
    点击编辑可以对此页面的模板内容进行编辑
    将我们的恶意代码{if:phpinfo()};{end if}随便插入

    在这里插入图片描述分析:
    1.当我们插入恶意语句后,getlocation函数获取url最后的文件名称为search赋值给变量$location
    2.switch语句判断变量$location中的值为search,将当前绝对路径TPL_DIRsearch.html拼接起来赋值给$tplfile变量
    3.load_file函数去读取$tplfile变量中存放路径对应的文件的内容,并返回给$zcontent变量
    4.$zcontent变量当做参数传入parserCommom函数执行
    5.parserCommom函数中定义将参数,也就是$zcontent变量,传入parserIfLabel函数来执行
    6.parserIfLabel函数通过正则表达式将恶意代码{if:phpinfo()};{end if}进行匹配筛选,将筛选出来的字符串phpinfo()赋值给变量$ifstr
    7.parserIfLabel函数通过eval$ifstr中的恶意代码phpinfo()进行执行

  • 相关阅读:
    【Java】泛型通配符
    详解HashMap源码解析(下)
    云服务器部署 Web 项目
    HTB-Validation
    dubbo:从零理解及搭建dubbo微服务框架(一)【附带源码】
    BIOS < UEFI
    SPA项目之动态树&数据表格&分页
    【Luogu P1450】[HAOI2008] 硬币购物(dp,容斥)
    Starknet架构之Starknet state、State commitment
    HCIA-Access V2.5华为认证接入网络工程师学习笔记第四章
  • 原文地址:https://blog.csdn.net/xhscxj/article/details/128205049