先说说环境吧,之前在渗透过程中遇到一个linux+tomcat的站,不通外网,能执行大部分的shell命令 权限非root。手上只有一个jspspy的shell,web目录是挂载的网络磁盘(类似于NAS之类的吧),整个磁盘被限制只能读取不能写入,而且jspspy的上传功能也无法正常使用(上传文件提示是上传成功,但是就是没有文件,大神说可能是jsp上传组件关闭的原因)。现在能写的方式就只有通过shell 新建文本文件的方式写入到/tmp之类的可写目录下。

现在目的是想通过此服务器代理进内网,由于不能写入webshell 通过jsp代理行不通,往外又不能通,MSF什么的压根排不上用场,唯一希望寄托的在dns隧道上,所以只能通过上二进制+dns隧道(最终dnscat是上去了,但dns隧道还是出不来……)。

由于jspspy的上传功能无法正常使用 想上二进制就成了难题。还好有师傅提醒可以使用base64的方式。中途也遇到不少坑,借此简单把这个方式分享下,希望遇到类似的师傅能少走弯路。

首先在本地把需要上传的二进制文件进行base64加密 例如nc

base64 /root/nc > /root/nc_enc.txt

然后把加密后的字符串用shell写入到服务器上,然后再用base64还原成二进制文件执行

base64 -d -i /tmp/nc_enc.txt > /tmp/nc

这里一定要加上-i参数 该参数用于忽略非字母表字符,比如换行符。因为在POST提交过程中貌似要被添加上换行符,为此我就被坑了一天时间。

对类似环境有什么思路或者其他奇技淫巧的师傅不妨都来讨论讨论。

源链接

Hacking more

...