[php代码审计] 通读审计之shangfancms

前言

大部分的MVC框架,访问的控制器大部分是由外部参数来决定的,那么本篇文章所通读的MVC框架与之前的一系列MVC框架不太一样,它的路由是由程序本身的路由表来决定的。

源码下载 https://www.jb51.net/codes/673736.html

环境安装

访问http://127.0.0.1/install/setup.php

配置好/config.php

image

完成安装

image

MVC的了解

访问流程
image

之前总是说web应用程序,并没有特别理解为什么它叫应用程序?程序的逻辑不是从头运行到尾嘛,但这里这么多文件。后面才发现,其实web应用程序也是这样,只是经过了路由的作用,将程序走向指向了某个文件,然后继续执行,直到返回响应,代表程序结束。

直接到Index.php
image

配置了全局的路径参数,再对应用的主程序进行了包含。

image

查看被包含的文件

image

然后对程序进行慢慢分析

分析路由部分

image

Router驱动中,先指定路由所在的目录,然后通过遍历目录,对所有的分路由进行包含

此处需要自己去尝试分析

服务器接受到的是http协议中的所有信息,所以/path或param解析全靠后端进行处理,这也就解释了为什么tp框架那种别扭的写法index.php/asd/aasd, 这和普通的文件服务器路由处理是不一样的而已

看懂了路由,现在开始进行漏洞分析

cms重装漏洞

image

再次访问安装界面,直接正常执行。。。这个漏洞的危害不用多说,直接让你gg。它是由于cms安装好之后,没有把install相关的文件删除。或者说再次重装的时候,没有过滤,导致程序可以正常执行,从而完成重装操作。现在的cms避免管理人员忘记删除的后果,一般都加了部分的标志,程序再运行前,先要检查对应的标志,判断是否继续执行。

无限sql注入

定位到login处理逻辑

image

跟进login函数

image

看下post处理了啥

image

真的只过滤了xss,对sql没有任何的过滤,这不就随便注入

存储型XSS

image

可以看到,虽然进行了过滤,但前提是字符串是<123123>形式的才会进行过滤,如果注入点本身就在一个属性中,那就根本不会进入过滤范围。

所以找个注入点在属性中的即可

posted @ 2021-12-09 12:44  Aur0ra*  阅读(50)  评论(0编辑  收藏  举报