freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CVE-2022-23337漏洞分析
云科攻防实验室-2 2022-09-01 15:24:16 284596
所属地 内蒙古

0x00 前言

前段时间在github上发现dedeCMS又爆出了CVE-2022-23337漏洞,于是就赶快去复现了一下,该漏洞是由于后台某处功能点验证存在缺失导致的。接下来我们去分析下漏洞产生的原理。
DedeCms(织梦CMS)是一款国内流行的内容管理系统,在DeDeCMS v5.7.87版本article_coonepage_ruel.php存在SQL注入漏洞,该漏洞于2022.1.18日公布于CVE官网,并且官网已发布漏洞补丁。

0x01 漏洞分析

漏洞点在于article_coonepage_ruel.php文件中最开始包含了config.php文件这个文件中主要是对登录状态以及csrf、xss等进行判断过滤,而在该文件的最上面又包含了include/common.inc.php文件。

common.inc.php中108行接收我们通过GET、POST、COOKIE传递的参数,并将参数带入到CheckRequest()_RunMagicQuotes()函数中进行检测。

CheckRequest()函数中检测传入的参数值是否为cfg、GLOBALS、GET等,如果是直接退出。

而在_RunMagicQuotes()函数中70行处,首先使用get_magic_quotes_gpc()检测php.ini中 magic_quotes_gpc是否开启((当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。 ),如不开启则在82行处,使用addslashes()函数对 ‘ (单引号), ” (双引号), (反斜线)进行转义。

返回来查看存在漏洞的article_coonepage_ruel.php文件,$ids参数是通过36行的else if语句这里进入的,想要触发SQL注入,这里的$action == 'del',在38行处,判断传入的参数是多个还是一个,如果是一个则走if,如果是多个则走else。

通过上面分析单双引号将被转义,所以走if的话不能将SQL语句逃逸出来,就不能造成SQL注入,只能走42行的else。

else中由于没有对()进行过滤我们就可以成功闭合)并使用#注释掉后面的),从而执行sleep()。

ExecuteNoneQuery()函数将一些列mysqli()封装起来包括数据库连接、选择数据库以及一些SQL检测,方便直接调用。最后在227行处通过mysqli_query()执行我们传入的SQL语句,造成SQL注入。

0x02 漏洞利用

路由

dede/article_coonepage_rule.php

通过上述分析,我们只有删除多个才能触发else,点击删除burp抓包

paylaod:

15,14)%20and%20sleep(3)%23

0x03 总结

对于开发而言,由于后台的功能点更为繁杂,可能在某些功能点处就忘记其安全性的问题,没有做到很好的过滤或者说压根就没有做过滤。站在攻击者的角度就可以很好利用这一点来对某些系统进行攻击。
# 代码审计
本文为 云科攻防实验室-2 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
云科攻防实验室-2 LV.4
http:www.cloudtds.com.cn
  • 15 文章数
  • 60 关注者
PHP代码审计-百家CMS
2023-07-04
逆向分析篇四:if语句
2022-09-01
CS正向连接多层内网
2022-07-23
文章目录