百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「渗透实战系列」对某php后台管理系统的审计

ccwgpt 2024-10-12 02:36 35 浏览 0 评论

目录

0x01 框架结构
0x02 Admin.php
  任意修改管理员用户名及密码
  SQL注入
0x03 Index.php 用户留言处存储型XSS
0x04 Controller.php
  任意增删改查数据表内容
  任意文件上传
0x05 一些XSS
 结语


0x01 框架结构

采用thinkphp5作为框架,版本为5.0.2,默认开启debug模式,数据库默认使用PDO连接

打了补丁,修复了RCE通用漏洞


如图,增加了白名单,不能任意调用其他方法进行利用

0x02 Admin.php

任意修改管理员用户名及密码

漏洞点:
admin/controller/Admin.php


_initialize()方法:在任何方法执行之前,都要执行此方法,包括_construct构造函数。

跟进一下父类的_initialize()方法

方法为空,无语住了

所以该方法相当于只获取了Session而没有进行判断,可以未授权调用管理员方法

接下来跟进一下doUpdate方法

可以看到$user_id$data['username']都是通过用户输入获取而没有使用Session,字段都可控,并且存在sql注入

POC:


SQL注入

还是doUpdate方法


重点看这一条:

$is_have = Db::name('admin')->where("id != $user_id AND username = '".$data['username']."'")->value('id');

该sql语句直接将字符串进行拼接而没有使用PDO绑定,并且$user_id也没有用引号包裹

看下input方法


作用是从某个指定的来源中获取数据,但默认过滤器为空

回到之前,$user_id$data['username']获取数据时都没有使用过滤器,所以两个字段都是注入点

POC:
懒得手注了,直接sqlmap一把梭


0x03 Index.php 用户留言处存储型XSS

漏洞点:
api/Index.php


可以看到$data没有进行过滤,也没有限制列名,但下面会将一些特定字段进行覆盖


可控的有idusernametelephoneacreage字段,但真正可利用的只有usernameacreage

POC:

0x04 Controller.php

任意增删改查数据表内容

漏洞点:
admin/controller/Admin.php
admin/traits/controller/Controller.php


根据上文已经了解到Admin.php未进行鉴权,并且引入了一个公共控制器Controller.php,我们来跟进一下

先看下index方法


首先用$controller = $this->request->controller()获取当前请求的控制器名称,然后通过$m = model($controller)返回模型对象。后续的数据库操作是以模型对象来进行的,而数据库的表名默认是模型名,所以这两行代码可以理解为由哪个控制器调用就操作与哪个控制器同名的表。

跟进下search方法


作用相当于将$param里的数组添加到where['map'];所以get请求不要添加参数,让$param置空,返回全部数据


接下来看edit方法


同样的没有任何限制,跟进下isAjax方法


可以看到只要var_ajax的伪装变量在参数中存在,就返回true

var_ajax的默认伪装名为_ajax

所以只要在POST请求中添加参数_ajax=1就能进入判断

继续


allowField用于检验请求的列名是否存在


如果不是Ajax请求,则将id作为筛选条件,返回查询数据

配合上文的index方法获取的id,即可进行修改和查询

POC:
查询:

修改:

增加和删除的代码和上面的几乎一样,所以就不分析了

增加:

删除:


任意文件上传

可以看到什么过滤都没,还贴心的返回路径给你

POC:


0x05 一些XSS

上文已知只要控制器没做好鉴权,就可以调用Controller.php里的方法;我们可以利用这点,添加带有XSS的文本到数据库里

首先看下Base控制器


代码很简单,但也能做到基本的鉴权

接下来看Page.php控制器


把父类继承的鉴权方法重写置空,不知道作者为什么要这样写,跟故意留个后门一样

其他控制器如Product.phpService.phpXcxaccount.php都像Page.php一样无效鉴权,这里只挑两个进行演示

POC:

结语

这个cms审起来比较轻松,漏洞都比较简单且典型,属于有手就行系列。

相关推荐

如何高效实现API接口的自动化测试?

实现API接口的自动化测试是一个多步骤的过程,涉及需求分析、测试用例设计、环境搭建、脚本编写、执行测试、结果分析和持续集成等多个环节。选择合适的工具和框架也是成功的关键。嘿,咱来聊聊实现API接口自动...

总结100+前端优质库,让你成为前端百事通

1年多时间,陆陆续续整理了一些常用且实用的开源项目,方便大家更高效地学习和工作.js相关库js常用工具类「lodash」一个一致性、模块化、高性能的JavaScript实用工具库。「xij...

混合开发到底怎么个混法?(混合开发rn)

引言最近几年混合开发越来越火,从PhoneGap到Cordova到Ionic,再到ReactNative,到Flutter。同时在搜索引擎中诸如IonicVSReactNativeRN和Weex+...

无所不能,将 Vue 渲染到嵌入式液晶屏

该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言之前看了雪碧大佬的将React渲染到嵌入式液晶屏觉得很有意思,R...

【直接收藏】前端 VUE 高阶面试题(一)

说说vue动态权限绑定渲染列表(权限列表渲染)首先请求服务器,获取当前用户的权限数据,比如请求this.$http.get("rights/list");获取到权限数据之后,在列表中...

Vue采用虚拟DOM的目的是什么?(vue2 虚拟dom)

虚拟DOM更新其实效率并不像大家想象中的那么高,而且React官方也从来没说过虚拟DOM效率有多高,相反React虚拟DOM的实现也不是所有虚拟DOM产品中最好的。但是通过虚拟D...

什么是 JavaScript?(什么是党的旗帜)

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师然冬JavaScript(JS)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。(MDN...

Weex在内涵发现页中的工程实践(weex唯客交易所官网)

React-Native和Weex是目前最为火热的两个客户端跨平台解决方案。从去年2016年9月份开始,IES在抖音产品中应用了ReactNative,中途遇到了很多的问题,尤其是长列表的性能问题一...

新恒汇:公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务

证券日报网讯新恒汇7月3日在互动平台回答投资者提问时表示,公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务。具体请关注公司公告和公开披露信息。(编辑王雪儿)...

“移”科普——什么是物联网?(移动设备物联网物联网应用实例)

物联网(InternetofThings,简称IoT)是指通过互联网将物理世界与数字世界相连接,实现物与物之间的智能互联的网络。它是一种新型的信息通信技术,通过传感器、嵌入式系统、网络技术等手段,...

如何自己搭建一个物联网平台?(自建物联网云平台)

自己搭建一个物联网(IoT)平台需要涉及多个关键步骤,包括硬件设备的选择、软件开发、网络通信、安全性设计以及数据管理。以下是搭建物联网平台的基本流程:1.确定物联网平台架构一个完整的物联网平台通常包...

物联网数据接入篇-应用层 Modbus(5)

前四篇文章讲述的是TCP/IP模型中的网络接口层、网络层、传输层、应用层一,这里到了第四层应用层二。由于协议比较多,就分开篇来介绍。这篇讲Modbus协议,后面再讲MQTT协议、CoAP协议、...

乐鑫ESP32-C5全面量产:行业首款双频Wi-Fi 6的RISC-V SoC

IT之家5月2日消息,乐鑫信息科技4月30日宣布,ESP32-C5现已全面进入量产。ESP32-C5宣称是行业首款2.4&5GHz双频Wi-Fi6的RISC-...

Vue Shop Admin:强大而易用的后台管理系统模板

VueShopAdmin是一个基于Vue.js框架的后台管理系统模板。它具有简洁、易用和美观的特点,非常适合开发人员用于快速构建各种类型的管理系统。这个模板使用了最新的技术,如Vue3、V...

基于Prometheus的自动化巡检(prometheus自动发现详解)

!!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事道路千万条,安全第一条。操作不规范,运维两行泪。前言目前,大部分公司都采用Promet...

取消回复欢迎 发表评论: