S0cke3t
文章43
标签29
分类12
Pentest case sharing - One

Pentest case sharing - One

前言

最近在做项目时遇到了一些比较有意思的案例,此处特意写下来与大家分享一下。由于此目标在第一波测试时已经获取到服务器的权限,后来由于种种原因要进行二次测试。想再次使用之前的权限作为入口点时却发现权限已经丢失相关的子站点也都已经关闭,只好再次寻找突破点。描述不当之处还请大佬们指正。

环境初探

由于之前已经获得了这台服务器的权限,且相关的账号密码也都已经到手(具体之前怎么弄到的我也忘了~),所以直接登录后台看看。登录之后我可以看到功能并不是很多

经过一段时间的观察,发现此管理系统是上海一家名为”上海梦之路数字科技有限公司”所开发的,根据左上角的图标可以看出此系统名为MENGOO版本为4.0。使用各大搜索引擎均未搜索到相关的漏洞信息,看来只能自己动手了,大致看了看可供我们利用的点除了上传头像和资源发布之外其他的并不多。在尝试过上传头像发现虽然是前端验证但在后面图片渲染时无法正常渲染图片上传失败,更换图片马也无济于事此路看来不通。那我们就看看能不能在资源发布上做些文章,相比之前此资源共享允许上传的文件要宽泛的多,基本所有类型都可以。这就给我们提供了很大的便利值得注意的是这套系统上传和下载等对文件进行操作时并不像其他应用程序一样直接使用代码实现,而是需要安装一个特定的客户端,进行操作时系统拉起相应的客户端完成文件的上传及下载

安装好客户端后点击文件管理我们可以看到此文件夹下的相应文件并且可以进行下载,重命名和新文件上传

我们尝试上传一个jsp木马,系统拉起folder_select和uploadclient完成对文件上传。完成后我们可以看到jsp文件被正常的上传到文件夹下

正当我以为就这么完事的时候,才发现并不是想的那么简单。

上面我们通过资源共享顺利的将jsp上传到了服务器上,但是。。。。。在我使用客户端连接时发现连接失败,使用浏览器访问才发现居然404

出现这种情况据我所知有两种情况第一我们上传的文件被删除或者损坏第二程序做了目录解析限制。我们先来看第一种确定我们的文件没有被删除,而大多数程序文件管理功能基本都是读取前端传入的参数调用语言封装好的系统函数读取指定目录下的文件,结果也相对准确,所以依现在前端读取的情况来看上传的文件并没有被删除也没有损坏。在排除这种情况后那么导致此问题的只有一种可能就是程序限制了解析目录。Upload文件夹下的资源文件一律不解析。所以要想让我们的木马正常解析我们就得把文件上传到upload目录以外的位置。那我们就来看看上传过程中有没有我们能插手的地方

按照正常流程选择文件上传,在其中一个数据包中显示了我们想要信息(为方便阅读,已将数据包解码)

其中path为文件上传后服务器存放的路径,间接的暴露了物理路径。Local_file为我们本地上传的文件路径。思路很明显我们是否可以修改path的参数值达到逃逸限定目录的目的。首先我们添加一个替换规则

由1433目录跳到2019-07-05目录下。关于此处为什么不用repeater直接重放。因为笔者之前尝试过重放单个无法直接拉起客户端程序,要想正常拉起需要一起重放上下文所关联的数据包,所以此处干脆直接替换,省时省力。(主要是懒~)

接下来就是正常流程,可以看到数据包正确的进行了替换

然而失望的此方法并不奏效,文件照常传到了1433目录下

意外收获

正当我在寻找其他利用点时,在其上下文中发现了另一个比较有意思的数据包

有没有觉得返回的filelist似曾相识,没错!返回的就是1433目录下的文件及文件夹信息。尝试修改dir参数看看是否可以读到其他目录

很显然我们可以通过修改dir参数来访问任意文件夹,随后经过一番查找,确定了程序目录为E:/xxxxx./VirLab/Webapps/learning/

也算是为后面getshell确定了要写入的目录

另寻出路

在经历了前几次失败后,静下心来想了想一定还有没注意到的地方。冷静了一会再次打开之前页面仔细寻找有没有遗漏的地方,就在这时我发现了在文件管理中”重命名”一栏被我遗漏了,随即打开看了一下

只是一个再正常不过的改名功能,但谁也没想到此功能却是成功getshell的关键点。按照流程改名抓包分析(为方便阅读,已将数据包解码)

其中url为原始文件路径使用了两个环境变量进行拼接,new_name顾名思义是我们新的文件名。此时我冒出一个大胆的想法,可不可以通过修改文件名把文件改到其他目录去,同样添加一个替换规则

使用../构造新文件名改到之前获取的程序根目录下。此处不同的是数据包进行了两次url编码,为了不出岔子我也将payload进行了相应的编码,完成后再次进行改名。改完后返回页面查看发现文件已经不见了,说明我们刚才的想法是可行的

为了验证文件是否真正的被改到了根目录下我们使用之前的任意目录读取查看下木马是否存在

可以看到文件被正确的改了过来再次使用客户端进行连接

Bingo!

总结

总的来说技术没什么亮点,主要还是要细心。不能放过任何一个功能细节,往往细节决定成败。

本文作者:S0cke3t
本文链接:https://www.saferoad.cc/Case-share/Pentest-case-sharing-One.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×