记一次任意文件上传

很久没发文章了,一个是因为忙,另一个就是不知道发什么,这次遇到一个上传觉得挺有意思的,就分享一下思路。
在客户现场驻场遇到的站点,我们乙方在挖洞的同时,甲方也有十多个人在同步挖洞。我们少挖到洞还要找我们麻烦,欲哭无泪,太难了。
当时通过另外一个漏洞getshell,还在暗自高兴的时候,翻目录的时候,看到一个TempFile的目录下有个名为shell.aspx的文件,文件上传时间在目标给我们的前几个小时(客户在给我们目标前,就让甲方的渗透人员先测试了),此时的我笑容逐渐消失,意识到问题的严重性。

看到TempFile的目录,猜测是通过上传功能上传上来的。然后在后台找了许久,还好功能不多,找到了上传的功能点(之前这个功能点因为浏览器不兼容的原因,无法使用,后来使用ie才能够正常使用)。

上传点在一个上传附件的地方,上传图片,拦截到此数据包发送到repeater模块。
20191127记一次任意文件上传
修改数据包,可以发现上传成功,但是并不知道真实路径,文件的访问路径为:http://xxx.com:port/File/DownLoadFile/22c84d83-d9cf-dd7b-0dd1-ea72ddddd18b
20191127记一次任意文件上传
经过长时间的测试,uploadUserNo参数中加上//会导致报错,可以看到文件真实路径(getshell后发现uploadUserNo参数的值会和文件名进行拼接,例如:uploadUserNo参数值为dd//时,文件名为:dd//年月日时分秒四位随机数上传文件名,因为文件名不允许有//等特殊字符,所以会报错)。
此时知道文件目录为TempFile,文件名随机重命名,能够看到其命名规则为【年月日时分秒四位随机数上传文件名】
20191127记一次任意文件上传
与电脑时间同步上传,可能秒数会有偏差,假设为偏差间隔为3秒,加上四位随机数字。
重新上传一次文件,记录上传时间为:“2019年11月27日16时19分11秒”。然后构造数据包进行爆破。
20191127记一次任意文件上传
设置第一个标志位
20191127记一次任意文件上传
设置第二个标志位加载生成的0000-9999的4位数字典
20191127记一次任意文件上传
经过一段时间后爆破成功。
20191127记一次任意文件上传
访问会报错,但问题不大,拿shell客户端直接连接
20191127记一次任意文件上传
Getshell成功
20191127记一次任意文件上传

-------------本文结束感谢您的阅读-------------