首页 » Web攻防 » 浏览内容
修改本地元素自定义上传文件名拿webshell
目前常见的几种上传漏洞的利用方法中,有一种是客户端可自定义filepath,也就是可自定义上传后保存路径的。
但当我们自定义的filepath在服务器上不存在时,就会出现2种情况:
1、程序有自动创建不存在目录的功能,并且有创建目录的权限
2、程序不会自动创建目录,或没有创建目录的权限
第一种情况不需多说,只要能自动创建,那么上传是肯定可以成功的。
但第二种情况就有点麻烦了,如果目录不存在且不会自动创建或无权创建,那么是肯定会上传失败的,毕竟目录都不存在,是保存不了的。
针对第二种情况,我曾经遇到过一些案例,成功突破了限制,这里算是个案例演示。
先来看上传点,白名单限制了脚本文件的上传,只能上传图片文件:
随便上传个图片文件,得到地址http://www.exehack.net/20125262195331685.gif
看看上传模块的前端源代码:
需要关注的是定义filepath的这一句:
1 | <input type="hidden" name="filepath" value="/"> //保存目录路径 |
先将filepath的value设置为“/f4ck.asp/”试试:
1 | <input type="hidden" name="filepath" value="/f4ck.asp/"> |
可以看到,虽然提示上传成功,但其实文件是404,也就是原本不存在的f4ck.asp的目录并没有被自动创建。
那么方法来了,直接将这句定义filepath的代码改成这样的:
上传成功,得到地址是http://www.exehack.net/f4ck.asp;201252621193918566.gif
那么问题来了,为什么这样可以上传成功呢?
这是因为如果将filepath的value设置为“/f4ck.asp/”,这时是表示告诉程序我要将文件保存到名为f4ck.asp的目录下,但原本f4ck.asp这个目录是不存在的,而当前这个程序又没有自动创建的功能,也可能是没有权限新建目录,所以就导致上传失败。
但如果将filepath的value设置为“/f4ck.asp;”,这时“f4ck.asp;”将作为文件名的一部分提交给程序的上传模块,所以上传成功后会得到类似“f4ck.asp;201252621193918566.gif”这样的文件名。
二者的区别就是,一个是自定义了上传路径,一个是把自定义上传路径变成了自定义上传文件名。
评论 共 2 条 (RSS 2.0) 发表 评论
好复杂 呀
学习了,希望多多交流