用户
搜索
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-脚本小子

    Rank: 2

    6

    主题

    6

    帖子

    111

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2021-6-6
    发表于 2021-8-18 14:31:43 01763

    代码审计----xss+文件上传篇

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

    前言

    以下内容仅供技术研究学习使用!严禁用于非法操作!

    由于本人比较菜,只能审计一些小cms,如果有什么错误或者见识浅薄的地方师傅们帮忙指出下。

    正文

    漏洞一:

    本地搭建

    看到这里有个公司名称,看看有没有xss,放入审计工具看一下

    很明显是第二个(因为我是在安装路径里面)

    可以看到这里面他申请了一个数组,应为是下标为公司名称的在看看前面的$lang->install,按经验来看这应是是一个实例化的类,按照正常思路我们往前面翻一番看看有什么

    他这里果然是一个实例化的类,去找一找这个类,找了半天没找到,感觉很奇怪,我就直接找这个

    变量了

    看看哪里输出了这个变量

    可以看到这里他直接输出了,及有可能存在xss,试试看

    保存

    成功弹窗,而且这是个存储型的xss,写入数据库了。

    漏洞二:

    常规思路寻找上传点

    找到上传点,接下来就是找他所对应的源码位置在哪里,还是老方法,通过报错找


    太多了快一百个了,这一个个找要很久,换个思路,上传一个正常的看他提示了啥,后来发现没提示,这就麻烦了找不到,后来想一想可以从前端源代码里面看他调用了什么函数

    有了,去找找看

    找到了


    可以看到他调用了两个函数先看第一个


    这个有点迷糊,网上找了很多资料,我猜可能是调用loadModel方法时传递了一个非空的appName,会导致错误。
    所以调用父类的loadModel方法来避免这个错误。

    好了我们再看第二个函数


    可以看到他有调用了getupload函数,追踪看看


    取关键函数来看,可以看到他声明了一个空的数组给$file然后再用is_array()来判断是否上传文件名是否存在,再用extract和foreach函数来赋值键值和循环赋和值给$di与$filename,最后我们就直接看这个赋值后缀名的函数getExtension

    他这里进行了两次过滤,一次黑名单一次白名单我们搜一下两个的黑白名单分别为什么



    可以看到这几乎不太可能绕过的,我就试着先常规绕过看看


    这里再后缀名改成php后再加一个点或者直接加一个点,都能绕过,我就纳闷了,复制路径看了一下

    后缀名为空,但是却能执行,这。。。。。。。把我给整傻了,后来我再去分析了一下,发现了两个原因

    原因一:


    他这里是逻辑有问题,只要我们在第一个if的时候判断后缀名为空(因为是与逻辑一个为假就都为假)就可以绕过后面的三个if判断了这样就绕过黑白名单和强制后缀名判断php了。

    原因二:

    对于没有后缀名但是能强制解析成php很可能是有开始 .htacess(应该是安装建站系统的时候就会默认存在的)

    .htacess:网上对这个的解释是taccess文件(或者"分布式配置文件"), 全称是Hypertext Access(超文本入口),负责相关目录下的网页配置, 了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 作用于此目录及其所有子目录, 通过.htaccess文件可以实现网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能,嗯,大概意思就是会把没有后缀名的或者其他后缀名的都解析成php格式,

    结语

    这次审计花了挺长时间的,在很多代码理解方面还是欠缺,所以有错误希望师傅们指出,最后写这篇文章的目的是和师傅们一起学习,共同进步。


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