用户
搜索
  • TA的每日心情
    开心
    2021-9-15 15:49
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-脚本小子

    Rank: 2

    6

    主题

    7

    帖子

    97

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2021-6-6
    发表于 2021-8-10 14:55:12 03251

    代码审计---文件上传篇
    本篇文章作者yggcwhat,本篇文章参与i春秋作家连载计划所属从0到1团队,未经许可禁止转载。连载方向:web安全,内网安全。
    目录
    反序列化漏洞分析篇
    1-----------反序列化漏洞分析
    2-----------session反序列漏洞分析
    PHP代码审计篇
    1-----------文件上传
    2-----------SQL注入
    3-----------xss+文件上传
    漏洞发现
    直蹦主题,源码本地搭建。

    我们就常规思路,先注册一个再说。

    登录看看

    这里发现他对我的ip进行了记录,

    我就想这个ip是不是可控的,然后在源码里面找获取我们登陆ip的源码(一般是通过X-Forwarded-For获取的,后端代码一般有关键的函数如:$_SERVER['HTTP_X_FORWARDED_FOR'],我们放到源码里面搜一下。

    发现第一个·有点可疑,点击去看看

    发现他获取了客户端ip,而且还没有过滤,可能有漏洞,我们搜一搜有没有数据库查询语句用到这个ip。

    发现这里他对这个ip带入了数据库进行查询(进行登录ip的更新),而且又是没有过滤,我们试一试构造payload

    数据包里面是没有这个X-Forwarded-For参数,系统是默认的有这个的只是没写出来,这里我们就要构造X-Forwarded-For参数且构造payload

    放包看看

    这。。。怎么还变成了0.0.0.0了,我们把这个0.0.0.0放入审计工具里面找找看。

    哎,他这里对ip进行了合法性验证,不合法的一律改成0.0.0.0了,没办法放我们再看看其他的地方,

    发现上传点,先上传一个php文件看看(由于是php建站)

    有检测,我们用这个提示框里面的内容去源码搜下。

    发现文件,点进去看看。

    他这里用in_array函数进行的判断,往上翻看看,

    好东西,黑名单过滤,不急先看看代码怎么运行的,这里他实例化的一个类($upload = new UploadFile();)看看这个类。



    定义了一些函数,和变量,然后往回看,禁了那些后缀名

    'asa','asp', 'aspx', 'cdx','ascx', 'vbs', 'ascx', 'jsp', 'ashx', 'js',  'reg',  'cgi','html', 'htm','shtml', 'cfm', 'cfc', 'pl', 'bat', 'exe',  'com',  'dll',  'htaccess', 'cer', 'php5', 'php4', 'php3', 'php2', 'php', 'pht', 'phtm'

    可以看到的这是黑名单,但是有黑名单,还不一定有漏洞,一般黑名单过滤是有好几层筛选的,我们接着往下看

    他设置了附件上传目录和仅上传单文件,这些都不是,关键是代码调用了UploadFile()类的upload函数,我们跳过去看看。


    他这里就简单的检测了一下,但是他调用了一个check函数来自动检查附件

    我们搜索看下

    他这里对大小,mime类型,文件类型,和是否合法进行的检测,其他几个都好绕过,我们就直接看这个文件类型的,发现他又调用了一个checkExt函数,去看看。

    这个函数检查了上传的文件类型是否合法,就是检测了后缀名了。可以看到这个可以绕过的,他并没有转变成小写,可以大写绕过,到此这边结束了,我们再跳回前面去看看,

    可以看到他对来自$info的后缀再次检测,我们看到$info从getUploadFileInfo()来的,去看看。

    return了uploadFileInfo(上传成功的文件信息)。

    后面就用in_array再一次过滤了。

    到这里就过滤完了。我们到前端上传看看。
    漏洞利用
    从上面可以知道,这个文件上传漏洞他是黑名单过滤,他过滤了asa','asp', 'aspx', 'cdx','ascx', 'vbs', 'ascx', 'jsp', 'ashx', 'js',  'reg',  'cgi','html', 'htm','shtml', 'cfm', 'cfc', 'pl', 'bat', 'exe',  'com',  'dll',  'htaccess', 'cer', 'php5', 'php4', 'php3', 'php2', 'php', 'pht', 'phtm'。我们只要上传PHP格式的文件就可以绕过。
    复现:
    点击上传,木马的jpg文件

    burp抓包改包

    上传成功

    结束语
    在这个审计过程中我都是通过黑+白的组合进行的代码审计,对于新手师傅来说,找到漏洞的时候会找不到前端所对应的页面,这里我们就可以,通过前段报错或者提示信息在后端源代码里面找,然后在审计,最后如果分析的有误希望师傅们指出。

    发新帖
    您需要登录后才可以回帖 登录 | 立即注册