Java代码审计 | 任意文件下载

  • A+
所属分类:代码审计


 


前言

本次分享的是web安全漏洞中的任意文件下载,前段时间比较忙,今天抽空写了个简单的下载功能,代码运行的时候有点问题,但是不影响下载程序运行,我也就懒得改了,多多包含哈。

任意文件下载漏洞描述

一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等,就会造成任意文件下载漏洞。

任意文件下载漏洞的表现形式

任意文件下载总结来说,有以下三种表现形式:

1、存在文件下载功能

网站文件下载功能形式多种多样,页面功能大致如下:

 

Java代码审计 | 任意文件下载


Url表现形式如下:

http://localhost:8080/javatest/downloadFile.action?jpgPath=/download/&jpgName=test.jpg

如果单从参数看,表现形式多种多样,当渗透时遇到以下类型可以稍加注意:

&filepath=

&relpath=

&path=

&url=

&name=

&filename=

&src=

&dir=

&data=

......

2、文件名参数可控,并且系统未对参数作过滤或者过滤不全

文件名参数就是要下载的文件名,可以用brupsuite抓包看见,表现形式多种多样,大概如下:

 

Java代码审计 | 任意文件下载

在代码中的表现形式如下,此处文件路径和文件名都是从前端获取,然后执行下载操作:

 

Java代码审计 | 任意文件下载

3.文件内容输出或者保存在本地

当文件内容可被下载任意看见,就会造成任意文件读取漏洞,不在此处讨论,当文件保存后,能被攻击者看见内容,就会造成任意文件下载漏洞,表现形式如下:

 

Java代码审计 | 任意文件下载

Java代码审计 | 任意文件下载

 

下载功能代码如下:

Java代码审计 | 任意文件下载

 任意文件下载漏洞验证

此处代码存在任意文件下载漏洞,表现形式如下:

当文件正常下载时,brupsuite截图如下:

 

Java代码审计 | 任意文件下载

此处替换文件名为WEB-INF/web.xml”,下载系统配置文件:

Java代码审计 | 任意文件下载

可以看到此时下载文件失败,返回不一样的结果。

但是可以添加../”跳转目录:

Java代码审计 | 任意文件下载

可以看出上面返回web.xml内容,表示下载成功(若返回下载失败,可以继续添加../”,直到下载成功,若依旧不成功,可能文件不存在或者无漏洞,自己多试试)

也可以输入很多../”,直接回溯到根目录,下载可能存在的系统文件:

Java代码审计 | 任意文件下载

部分敏感文件如下:

Linux

    /root/.ssh/authorized_keys

    /root/.ssh/id_rsa

    /root/.ssh/id_ras.keystore

    /root/.ssh/known_hosts

    /etc/httpd/conf/httpd.conf

    /root/.bash_history

    /root/.mysql_history

    /proc/self/fd/fd[0-9]*(文件标识符)

    /proc/mounts

    /porc/config.gz

    /etc/passwd

    /etc/shadow

    /etc/my.cnf

Windows

    C:Program Filesmysqlmy.ini  //Mysql配置

    C:Program Filesmysqldatamysqluser.MYD  //Mysql root

    C:Windowsphp.ini  //php配置信息

    C:Windowsmy.ini  //Mysql配置信息

    C:boot.ini  //查看系统版本

    C:WindowsSystem32inetsrvMetaBase.xml  //IIS配置文件

    C:Windowsrepairsam  //存储系统初次安装的密码

    ...

任意文件下载漏洞的修复

漏洞修复可以根据自身业务需要修改,大致修复方法如下:

1、对文件下载进行过滤,过滤掉./”、“../”、“%”等,代码如下:

 

Java代码审计 | 任意文件下载

当输入../”时:

Java代码审计 | 任意文件下载

Java代码审计 | 任意文件下载

但是可以构造完整路径,下载任意文件:

Java代码审计 | 任意文件下载

2、对下载的文件路径进行严格控制,只允许下载某部分目录下的文件:

Java代码审计 | 任意文件下载

Java代码审计 | 任意文件下载

Java代码审计 | 任意文件下载

2、对下载文件后缀名做严格控制

Java代码审计 | 任意文件下载

Java代码审计 | 任意文件下载

*参考来源:网络



关于我们:

北京路劲科技有限公司(Beijing Lujin Technology Co. , Ltd.)成立于2019年1月4日,是一家提供全面系统集成与信息安全解决方案的专业IT技术服务公司。公司秉承“为网络安全保驾护航”的企业愿景及“提升国家整体安全”的使命,依据风险评估模型和等级保护标准,采用大数据等技术手段,开展网络安全相关业务。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。公司立足北京,走向全国,始终坚持“换位、细节、感恩”的核心价值观,以“共赢、共享、共成长”的经营理念为出发点,集合了一批敢于创新、充满活力、热衷于为IT行业服务的优秀人才,致力于成为您身边的网络安全专家。

 

关注路劲科技,关注网络安全!

公司:北京路劲科技有限公司

地址:北京市昌平区南邵镇双营西路78号院2号楼5层504

PS:如果觉得本篇文章对您有所帮助,欢迎关注!帮忙点个赞,转发一下 分享出去吧,有问题可以公众号回复私聊小编,看到就会及时回复,也可加小编微信入群交流哦~~!


Java代码审计 | 任意文件下载


一起加油哦~

Java代码审计 | 任意文件下载

◆工具 | Maltego 强大的信息收集工具

◆Android App | Androguard渗透测试工具

◆Wireshark | 网络抓包嗅探工具 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: