代码审计之CVE-2021-40881
2021-09-26 17:20:00 Author: mp.weixin.qq.com(查看原文) 阅读量:27 收藏

cms采用ssh搭建,没有引入太多的外部插件,所以感觉还比较适合练手(主要是还有github千星)。稍微总结一下审计的过程吧。注入类的漏洞因为采用的hibernate,所以没怎么关注,看了一下处理流程就过了。xss开始挖掘了一点,对于实体编码处理的还挺好有模有样,用户又好。文件上传白名单,包括删除新建等都没法路径穿越,最后终于在默认脚本文件里rce了。不想看前边的可以直接跳到rce,前面都是一些我挖掘过程中对代码流程的分析。

(1)系统安装数据库

这里的话想看看有无漏洞,同时也对流程分析下,便于以后理解。步骤解读(1)获取版本号(2)获取step,是用来判断进行到了哪一步的。(第一步判断了是否已安装,安装了会生成一个文件,所以正常来说重装漏洞可能不存在除非可以配合文件删除删除重装文件。。)(3)根据不同的步骤进行不同的操作。(这里在配置数据库看的)(4)根据传入的host,port等参数进行了数据库连接。(5)初始化数据库,完成安装。暂时没发现啥问题,粗略的看了。

按照经验,淦后台,怼。流程还是解读一下。这里登录的流程看到了顺便记录下(1)判断传入的用户名等是否为空(密码是做了加密处理的)(2)判断传入的用户是否存在(3)判断密码用户是否正确(4)判断跳转的url是否危险中间还有一些杂七杂八加authtoken的暂时没用上就没跟,看看对url的处理
不能为空,不能包含回车换行,如果包含了://则做进一步的判断。,其中算是设置了白名单只能系统相关的几个地址可以访问。


emm,这种后面要加目录的话,基本是没戏了。要想利用这个做@跳转也不行。

看一下文件上传这里判断了文件名有无正反斜杠/\,有的话截取最后一个斜杠后面的内容,否则直接返回文件名。然后进一步判断了文件名中是否存在.,截取后缀名,白名单取后缀名,有zipexcle我们关注下可能会有用。excle可以做csv注入用作钓鱼,但是实战中感觉用处不大。学习为主,整个流程还是分析一下,重新传一个zip

有点麻烦,时间+随机数生成的文件名,前面路径并且写死了,路径也不可控。然后新生成了一个file,进行上传。中间想直接利用感觉没有太多的突破口了。


rce(CVE-2021-40881)

准确来说,只能在默认配置rce,但是比较惊喜的是,一般来说这种仓库的bat脚本安装了应该是不会更改命令相关的。所以如果是默认安装,利用自带的bat脚本就能直接rce。总体来说还是对传入的参数没有做限制。看看细节,关键代码粘贴下来了。


大概解读一下,流程是这样子。系统默认有一个和仓库有关的脚本文件sync.bat然后这里判断传入的commend也就是脚本的执行文件写死了必须要sync.bat这几个字忽略大小写匹配。所以这里做目录穿越不行,直接写死了。最近目录穿越挖的多才开始没反应过来。想找一处能过上传做目录穿越的想的传到这下面看看能不能覆盖。可惜很多地方都是重命名名字不可控。后来又想着能不能利用bat脚本直接执行系统命令。这条路还是走活了。repo能直接带入并且是可以回显的。看下payload+执行效果吧。

模板

看一下模板的功能,都过一下。1)判断传入的file是否为空2)获取文件名,文件路径,然后生成一个新的文件(这里可能存在竞争,但是有前车之鉴,可能不会解析。就先不下定论)(3)如果是zip,就解压(等下试试自解压)4)如果不是,就走else下面的,重新new一个模板。

看一下,对文件路径做了处理,不能包含..

直接上传的当成文本处理了不能解析。又没有跨目录传文件。没啥用了啊。文件删除也是一个样子,没法跳目录。和我们上次挖的文件读取和删除不同,这里定义了根目录,只能向下,而tmp目录下都能删除,并且没啥敏感的。这个无用。后续计划任务的一些上传也是参考了这里过滤,想要配合我们前面的rce实现全能rce目前还是不行。

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652881266&idx=2&sn=416e21e2f0d858c27de934f15e8bda96&chksm=bd59bdbf8a2e34a9f45d6baf014634cd540135bf23a159a14accfdc245a2b956393b37e2619c#rd
如有侵权请联系:admin#unsafe.sh