用户
搜索
  • TA的每日心情
    郁闷
    2017-4-25 14:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    6

    主题

    43

    帖子

    134

    魔法币
    收听
    0
    粉丝
    3
    注册时间
    2017-4-25

    签约作者

    发表于 2017-6-4 23:21:48 135072
    本帖最后由 黑客小平哥 于 2017-6-13 14:54 编辑

    Java代码审计连载之—任意文件下载

    本文原创作者:黑客小平哥,本文属i春秋原创奖励计划,未经许可禁止转载
    前言
    本次分享的是web安全漏洞中的任意文件下载,前段时间比较忙,今天抽空写了个简单的下载功能,代码运行的时候有点问题,但是不影响下载程序运行,我也就懒得改了,多多包含哈。
    任意文件下载漏洞描述
    一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等,就会造成任意文件下载漏洞。
    任意文件下载漏洞的表现形式
    任意文件下载总结来说,有以下三种表现形式:
    1、存在文件下载功能
    网站文件下载功能形式多种多样,页面功能大致如下:
    QQ截图20170604212310.png
    Url表现形式如下:

    如果单从参数命看,表现形式多种多样,当渗透时遇到以下类型可以稍加注意:
    &filepath=
    &relpath=
    &path=
    &url=
    &name=
    &filename=
    &src=
    &dir=
    &data=
    ......
    2、文件名参数可控,并且系统未对参数作过滤或者过滤不全
    文件名参数就是要下载的文件名,可以用brupsuite抓包看见,表现形式多种多样,大概如下:
    QQ截图20170604213325.png

    在代码中的表现形式如下,此处文件路径和文件名都是从前端获取,然后执行下载操作:
    QQ截图20170604213527.png
    3.文件内容输出或者保存在本地
    当文件内容可被下载任意看见,就会造成任意文件读取漏洞,不在此处讨论,当文件保存后,能被攻击者看见内容,就会造成任意文件下载漏洞,表现形式如下:
    QQ截图20170604214109.png
    QQ截图20170613145354.png

    下载功能代码如下:
    QQ截图20170604214328.png

    任意文件下载漏洞验证
    此处代码存在任意文件下载漏洞,表现形式如下:
    当文件正常下载时,brupsuite截图如下:
    QQ截图20170604215023.png


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

    可以看到此时下载文件失败,返回不一样的结果。
    但是可以添加../”跳转目录:
    QQ截图20170604222112.png
    可以看出上面返回web.xml问内容,表示下载成功(若返回下载失败,可以继续添加“../”,直到下载成功,若依旧不成功,可能文件不存在或者无漏洞,自己多试试)

    也可以输入很多../”,直接回溯到根目录,下载可能存在的系统文件:
    QQ截图20170604222729.png
    部分敏感文件如下:
    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 Files\mysql\my.ini  //Mysql配置
        C:\Program Files\mysql\data\mysql\user.MYD  //Mysql root
        C:\Windows\php.ini  //php配置信息
        C:\Windows\my.ini  //Mysql配置信息
        C:\boot.ini  //查看系统版本
        C:\Windows\System32\inetsrv\MetaBase.xml  //IIS配置文件
        C:\Windows\repair\sam  //存储系统初次安装的密码
        ...
    任意文件下载漏洞的修复
    漏洞修复可以根据自身业务需要修改,大致修复方法如下:
    1、对文件下载进行过滤,过滤掉“./”、“../”、“%”等,代码如下:
    QQ截图20170604231921.png

    当输入../”时:
    QQ截图20170604224019.png
    QQ截图20170604224038.png
    但是可以构造完整路径,下载任意文件:
    QQ截图20170604225728.png

    2、对下载的文件路径进行严格控制,只允许下载某部分目录下的文件:
    QQ截图20170604230229.png
    QQ截图20170604230150.png
    QQ截图20170604230204.png
    2、对下载文件后缀名做严格控制
    QQ截图20170604230817.png
    QQ截图20170604230755.png
    QQ截图20170604230807.png
    结语:
    今天就写这么多吧,希望对大家有帮助,有什么错误欢迎指出!有什么问题欢迎加本人微博,共同讨论,共同学习!
    QQ图片20170604231143.jpg



    QQ截图20170604214212.png

    本帖被以下淘专辑推荐:

    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    来自 8#
    发表于 2017-6-6 11:46:43

    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    100
    不错,给出了实例代码,一步步的教学过程,下次加油。

    使用道具 举报 回复
    发表于 2017-6-5 09:13:22
    光速沙发
    使用道具 举报 回复
    发表于 2017-6-5 10:31:55

    光速地板      
    使用道具 举报 回复
    光速地板
    没看到的世界,不代表不存在。
    使用道具 举报 回复
    发表于 2017-6-5 11:47:59

    明明是板凳 抢我的地板干嘛
    没看到的世界,不代表不存在。
    使用道具 举报 回复
    发表于 2017-6-5 11:57:19
    飘凝雪 发表于 2017-6-5 03:47
    明明是板凳 抢我的地板干嘛

    尴尬                           
    使用道具 举报 回复
    感谢楼主分享
    使用道具 举报 回复
    发表于 2017-6-6 19:06:48
    此贴必火 吃瓜
    认为不存在,那是眼界不够,认为做不到,那是实力不够
    使用道具 举报 回复
    发表于 2017-6-11 05:29:17
    辛苦了 写的很完整
    使用道具 举报 回复
    发表于 2017-6-12 08:36:41
    不错
    使用道具 举报 回复
    发表于 2017-6-13 15:46:31
    这个测试的原码能否提供呀?
    使用道具 举报 回复
    linneng 发表于 2017-6-13 15:46
    这个测试的原码能否提供呀?

    这个源码的精华都在上面啊
    使用道具 举报 回复
    好东西,感谢分享!
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册