[php代码审计] 通读审计之shangfancms
前言
大部分的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>形式的才会进行过滤,如果注入点本身就在一个属性中,那就根本不会进入过滤范围。
所以找个注入点在属性中的即可
[php代码审计] 通读审计之shangfancms的更多相关文章
- php代码审计10审计会话认证漏洞
挖掘经验:遇到的比较多的就是出现在cookie验证上面,通常是没有使用session来认证,直接将用户信息保存在cookie中 Session固定攻击:黑客固定住目标用户的session i ...
- php代码审计9审计反序列化漏洞
序列化与反序列化:序列化:把对象转换为字节序列的过程称为对象的序列化反序列化:把字节序列恢复为对象的过程称为对象的反序列化 漏洞成因:反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根 ...
- php代码审计8审计文件上传漏洞
文件上传漏洞是指用户上传了一个可执行的脚步文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最直接和有效的,文件上传本身是没问题的,有问题的是文件上传后,服务器怎么处理,解释文件,通过 ...
- php代码审计7审计csrf漏洞
跨站请求伪造,也有人写出xsrf,黑客伪造用户的http请求,然后将http请求发送给存在csrf的网站,网站执行了伪造的http请求,就引发了跨站请求伪造 漏洞危害:攻击者盗用了你的身份信息,以你的 ...
- php代码审计6审计xss漏洞
跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的html代码,从而盗取用户资料,利用用户身份进行某种动作或者对 ...
- php代码审计5审计命令执行漏洞
命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤 挖掘思路:用户能够控制函数输入,存在可执行代码的危险函数 命令执行和代码执行 ...
- php代码审计4审计代码执行漏洞
代码执行漏洞代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行,当应用在调用一些能将字符串转化成代码的函数(如php中的eval)时,没有考虑到用户是否能控制这个字符串,造成 ...
- php代码审计3审计sql注入漏洞
SQL注入攻击(sql injection)被广泛用于非法获取网站控制权,在设计程序时,忽略或过度任性用户的输入,从而使数据库受到攻击,可能导致数据被窃取,更改,删除以及导致服务器被嵌入后门程序等 s ...
- PHP代码审计中你不知道的牛叉技术点
一.前言 php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞.如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程. 入门php代码审计实 ...
随机推荐
- 恶意代码分析实战四:IDA Pro神器的使用
目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...
- SpringCloud 2020.0.4 系列之 Stream 消息广播 与 消息分组 的实现
1. 概述 老话说的好:事情太多,做不过来,就先把事情记在本子上,然后理清思路.排好优先级,一件一件的去完成. 言归正传,今天我们来聊一下 SpringCloud 的 Stream 组件,Spring ...
- redis如何解决key冲突?
1.业务隔离 不同的业务使用不同的redis集群,或者协议使用redis的不同db. 2.良好的Redis Key的设计 格式:业务标识:系统名称:模块名称:关键词简写 比如:保险:用户管理:用户申请 ...
- More Effective C++笔记(一)(精心整理)
一.基础议题 条款1:仔细区别pointers和references 指针使用*和->,引用使用"." 引用必须指向一个已初始化的对象,不能为null,而指针可以指向某个对象 ...
- typing使用
官方文档: typing 注: typing是python3.5(PEP484)开始的 可用于: 类型检查器.集成开发环境.静态检查器等, 但是不强制使用 使用方式 两种使用方式 别名: 先定义=, ...
- 【Python】300行代码搞定HTML模板渲染
一.前言 模板语言由HTML代码和逻辑控制代码组成,此处@PHP.通过模板语言可以快速的生成预想的HTML页面.应该算是后端渲染不可缺少的组成部分. 二.功能介绍 通过使用学习tornado.bott ...
- [hdu6578]Blank
状态f[i][j][k][l]表示前i个数,四种数的最后一次出现的位置分别是i.j.k和l(i>j>k>l),判断所有第右端点为i的区间是否满足此要求(不满足重置为0),考虑第i+1 ...
- java 桥接模式实现代码
写在前面 桥接模式:将抽象与实现分离,使它们可以独立变化.它是用组合/聚合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度. 使用场景1:要绘制矩形.圆形.椭圆.正方形,绘制的图形需 ...
- [省选联考 2021 A/B 卷] 宝石
大概是一眼看出来是这个给定序列在树上序列上按顺序跑最大匹配. 然后考虑维护向上和向下的链的值. 大概的做法是用倍增维护,考虑\(f_{u,i}\)是\(c_u\)在序列里的位置向后匹配\(2^i\)位 ...
- Codeforces 1499G - Graph Coloring(带权并查集+欧拉回路)
Codeforces 题面传送门 & 洛谷题面传送门 一道非常神仙的题 %%%%%%%%%%%% 首先看到这样的设问,做题数量多一点的同学不难想到这个题.事实上对于此题而言,题面中那个&quo ...