几天前,某公众号发布了一篇文章,介绍了面试北京某厂红队岗位的三个靶机题目。这让我想起两年前我面试该厂同样也是这三个靶机,笔者通过5个小时的时间,成功获取了所有的Shell权限。接下来就对这三个靶机的攻击思路逐一讲解。
三个靶机分别为:tomexam考试系统、银行系统、jspxcms,都是java开发的系统,均存在大量SQL注入、越权未授权、XSS、弱口令等问题,此处只关注能够GetShell的问题。
在文件管理处可通过上传zip文件配合解压GetShell
根据代码得知,通过自定义的JspFileUpload对象来处理上传的逻辑,然后将JSP内置对象request和上传文件路径upath传递给JspFileUpload对象,并调用对象的process方法来处理上传逻辑。
在获取了上传后的文件信息后,进入if判断,如果上传的文件后缀是jpg、png则输出上传文件路径并提示上传成功
否则提示"只允许上传图片文件",诱导攻击者文件并未上传,其实后端已经将文件上传。
已知上传文件名为时间戳,只需要通过重发、并发等方法,在一秒内 上传一个jpg和jsp的文件 看效果:
通过burp爆破 设置”jpg”为变量,”jsp”为字典
效果(拿到shell后截的图,方便理解查看):
可以看到 3091.jpg 与 3184.jsp 这是百分比可以通过fuzz来确定我们上传的jsp文件的。
fuzz:
将时间戳后三位设置为爆破的变量
成功将通过爆破上传的jsp文件fuzz出来