0%

不出网命令执行写文件

不出网命令执行写文件

在挖掘漏洞的时候我们会遇见这么一种情况,目标网站存在命令执行,但是无法写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编码还原二进制文件。