代码审计-靠网速的上传
本文章仅用于渗透交流学习,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任
前几天xe给了一套系统的源码,搭到本地审计了一下,大多数都是后台的漏洞,注入什么的,但是我在全局索引上传的时候,索引到了一个TEST上传的接口,不知道是不是开发在写代码的时候测试用的忘记删除了,前台确实没有找到调用这个的地方,如果不看源码,这个上传黑盒是测试不出来的,由于功能点比较简单,也没什么写的,简单记录一下,就不排版了
看到源码目录下有个名叫TESTuploadspeed的文件,打开看了一下,找到继承的dll文件进行反编译
查看源码发现这个上传没有进行任何限制,而且也没有进行cookie校验,按理说直接构造好上传的post包是可以直接获取webshell的
接下来根据源码的值构造上传包
提示SUCCESS,说明已经上传成功了
然后我去我虚拟机看了一下上传的那个目录发现并没有东西。(再说了,如果能直接上传,我怎么会写这个文章呢,这么水的文章我怎么会发呢)
什么原因呢,然后我又看了一下源码,终于知道原因了,
上传成功之后有个File.Delete(),这不纯纯大傻瓜吗,传上去再删掉,这耍猴呢?
然后我为了测试是不是文件落地了,我用burp的repeater模块疯狂点击send,别问我为什么不用intruder模块,问就是练手速,实践证明了我的手速是可以的,在我疯狂的点击下看到了我上传的马子在目录下面一闪而过
这有点类似于CTF那种文件上传的条件竞争,接下来可以上传一个写文件的马,访问一下自动在当前目录写入一个webshell,本地测试确实是可以的
我这里直接写入了一个aspx的cmd马,然后利用burp,一个发包上传,一个执行命令
成功访问到了上传的文件,并且执行命令也成功了,中间有一些状态码是500的,这个应该是我们在访问文件的时候,因为发包太快,还没有执行命令下一个包就写入了,导致文件被占用
这里再加一下小知识点,就是有些系统在访问这种动态脚本文件的时候,如果不在根目录下,不登陆的情况下可能会跳转登录页,一般的绕过方法就是利用../跳到根目录,但是如果没法跳目录,可以试一下把文件名改为index.***,login.***,如果配置文件写了这两个文件名,一般都可以直接访问,我这套系统就是上传的名为login.aspx,之前碰到一个java的站,也是改了个login.jsp不登陆就可以访问到了
最后回归中心思想,就是我们的标题“靠网速的上传”,我在测试真实环境中,可以说是burp爆着爆着就不动了,网速不行,这个洞就白搭了