不出网命令执行写文件
在挖掘漏洞的时候我们会遇见这么一种情况,目标网站存在命令执行,但是无法写webshell,也不出网,这种情况我们如何扩大成果。
环境说明
- jenkins:1.609.3
我这里搭建了一个jenkins未授权访问的demo。
1 | docker pull jenkins:1.609.3 |
搭建好之后,我们发现他是可以命令执行的。
并且可以看到服务是war包起的,我们不能写webshell(应该是可以写的内存马的,他这个终端可以执行java代码,我只是使用这个例子),不出网的情况下,如果我们想扩大成果,比如传扫描器,或者写内存马,都需要用到文件上传,我们使用这个例子,来解决不出网如何写文件。
原理
总的来说是比较简单的,命令上传文件需要五个步骤。
- 需要上传的文件,编码成base64
- 将base64文本使用命令写到txt里面
- shell脚本按照顺序合并所有base编码的文件
- base64 -d转码成二进制文件
- chmod赋予权限。
获取文件base64编码
我们知道文件是可以转base64,并且base64也是可以转文件的。
一个二进制文件是很大的,他获取的base64编码是很长的,所以需要进行分割。
这样我们就获得了需要上传文件的base64列表。
命令执行器
之后定义一个命令执行的请求函数,将payload动态的插入进去。
执行命令分发器
编写一个命令执行的分发器,按照下方步骤:
- 创建自定义目录
- 上传base文件
- 合并base64文件
- base64解码还原
- 赋予执行权限
就可以上传成功了。
本地测试截图:
我这里传的fscan,确实可以通过命令使用base64编码还原二进制文件。