• ThinkPHP 5日志文件包含trick


    0x00 前言
    本文源于实战场景,以下所有测试均基于Fastadmin前台模版getshell漏洞环境
    环境:
    Win10 
    Phpstudy 2018  
    PHP-7.0.12 NTS+Apache
    Fastadmin V1.2.0.20210125_full 
    ThinkPHP 5.0.24
    Fastadmin默认配置 (不开启app_debug和app_trace)
     
    0x01 正文
    我们知道在Thinkphp 5没有开启app_debug的时候,能够写入日志文件的信息很少

    而且只有触发报错的时候才会写入部分日志信息,如下:

    而直接用url传入php代码,空格会被urlencode

    观察日志信息,与及分析代码,可控有蓝色框的请求IP地址,红色圆圈的请求方法,与及后面的host和请求uri 

    对应代码:

    一个个分析一下:
    ip可以用X-Forwarded-For等,但最后都过滤了

     

    method:

    host:

    uri:

    可以发现可用的选择还挺多的:

    method可以用X-HTTP-METHOD-OVERRIDE头,host可以用:X-REAL-HOST,uri 可以用:X-REWRITE-URL

    X-REAL-HOST: <?php phpinfo();?>
    X-REWRITE-URL: <?php phpinfo();?>
    X-HTTP-METHOD-OVERRIDE: <?php phpinfo();?>

    一一对应:

     

     有一点需要注意(看上图),用method头会换成大写,PHP马写进去之后解析可能会出问题,所以建议还是用host和url的两个头

     实战场景:Fastadmin 普通用户可以登陆,有模版渲染漏洞,没有开app_debug,无法修改头像,用模版渲染日志文件getshell

     

    0x02 总结
    遇到类似的场景时,基于tp5 的文件包含、模板渲染写入PHP代码时可尝试用上述的请求头
  • 相关阅读:
    glog下载、安装、使用
    VS所需插件
    Qt 实现动态调整流程指令顺序(通过鼠标事件实现)
    QComboBox实现复选框功能
    QString string char* int互相转化
    Qt 滚动区域显示下拉框
    模式对话框,非模式对话框,reject和accept()槽函数确定对话框的返回值
    QT递归搜索文件(entryList)
    QT中foreach的使用
    Qstring格式化字符串
  • 原文地址:https://www.cnblogs.com/r00tuser/p/14344922.html
Copyright © 2020-2023  润新知