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

 

 

 

 

 

posted @ 2022-02-11 15:47  Erichas  阅读(507)  评论(0编辑  收藏  举报