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

相关