Java--sec-code 目录遍历&文件上传
任意文件读取
漏洞url在:
http://localhost:7869/path_traversal/vul?filepath=e:/flag.txt
可以直接访问到flag文件
来看看vul此处的代码
这里是调用getImgBase64方法
跟进这个方法
可以看到仅仅判断了改路径是否存在和不是目录就直接返回了,没有做任何过滤,所以能任意的去遍历文件
再来看看sec的代码
这里是用了pathFilter()方法去过滤
跟进看一下
while是用于url解码用的,关键在于if的判断
这个contains()是String类的方法,用来判断 .. 是否存在与该字符串
charAT(index)也是在String里面的方法,用来取出对应索引字符。
这种过滤对于linux来说还好,过滤了.. 和开头的第一个”/“,但是对于windows就以盘符开头的就不奏效了
仍然可以读取
文件上传漏洞
这里有个文件上传功能点,可以任意上传文件
抓包任意上传
再看看这个安全的上传,只能上传图片
这里第一步是对于后缀的白名单限制
然后第二个是对于MIME类型的是否在黑名单的校验,不能是js html这些
第三步是判断文件是否是图片
这个方法就是用BufferedImage来读取 若读取的不是图片则为空
他这个检查图片的方法过于简陋,所以这里简单的图片马还是能传上去的
copy ASCII.png/b+ma.jsp tuma.png