[php代码审计] 通读审计之shangfancms
2024-10-19 17:07:47
前言
大部分的MVC框架,访问的控制器大部分是由外部参数来决定的,那么本篇文章所通读的MVC框架与之前的一系列MVC框架不太一样,它的路由是由程序本身的路由表来决定的。
源码下载 https://www.jb51.net/codes/673736.html
环境安装
访问http://127.0.0.1/install/setup.php
配置好/config.php
完成安装
MVC的了解
访问流程
之前总是说web应用程序,并没有特别理解为什么它叫应用程序?程序的逻辑不是从头运行到尾嘛,但这里这么多文件。后面才发现,其实web应用程序也是这样,只是经过了路由的作用,将程序走向指向了某个文件,然后继续执行,直到返回响应,代表程序结束。
直接到Index.php
配置了全局的路径参数,再对应用的主程序进行了包含。
查看被包含的文件
然后对程序进行慢慢分析
分析路由部分
Router驱动中,先指定路由所在的目录,然后通过遍历目录,对所有的分路由进行包含
此处需要自己去尝试分析
服务器接受到的是http协议中的所有信息,所以/path或param解析全靠后端进行处理,这也就解释了为什么tp框架那种别扭的写法index.php/asd/aasd, 这和普通的文件服务器路由处理是不一样的而已
看懂了路由,现在开始进行漏洞分析
cms重装漏洞
再次访问安装界面,直接正常执行。。。这个漏洞的危害不用多说,直接让你gg。它是由于cms安装好之后,没有把install相关的文件删除。或者说再次重装的时候,没有过滤,导致程序可以正常执行,从而完成重装操作。现在的cms避免管理人员忘记删除的后果,一般都加了部分的标志,程序再运行前,先要检查对应的标志,判断是否继续执行。
无限sql注入
定位到login处理逻辑
跟进login函数
看下post处理了啥
真的只过滤了xss,对sql没有任何的过滤,这不就随便注入
存储型XSS
可以看到,虽然进行了过滤,但前提是字符串是<123123>形式的才会进行过滤,如果注入点本身就在一个属性中,那就根本不会进入过滤范围。
所以找个注入点在属性中的即可
最新文章
- 个人理解的javascript作用域链与闭包
- 运动曲线提升CSS动画效果
- [推荐] WordPress主题使用Google Fonts字体访问不了的解决办法
- HDU1151Air Raid(二分图的最大匹配)
- 研究validation插件到现在的感受
- android架构介绍
- 嵌入式开发笔记 - U-Boot相关
- 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式
- error LNK2001
- ASP.NET获取客户端信息,获取客户端IP等等
- Filter 解决web网页跳转乱码
- canvas粒子时钟
- shell编程企业级实战(2)
- 剖析HBase负载均衡和性能指标
- svn 删除svn项目命令
- 【软件工程1916|W(福州大学)_助教博客】团队第四次作业(第7次)成绩公示
- 191. Number of 1 Bits (Int; Bit)
- Python的全局和局部变量
- 【翻唱】【你的名字MAD】爱你等于爱自己
- css (具体代码看笔记本)
热门文章
- hdu 1027 Ignatius and the Princess II(正、逆康托)
- Red Hat Enterprise Linux (RHEL) 9 更新了什么,即 Rocky Linux 9 和 AlmaLinux 9 展望
- MySQL到底能否解决幻读问题
- 体验webhooks
- [第二章]c++学习笔记1(类和对象的基础2)
- [atARC128F]Game against Robot
- [atAGC043B]123 Triangle
- [luogu5162]WD与积木
- [loj3364]植物比较
- 浅讲.Net 6之ConfigurationManager