总览

知识点:

1、中间件安全问题
2、中间件文件上传解析
3、Web应用编辑器上传

详细点:

1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等

本章课程内容:

1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析

前置:

后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess

中间件选用–朝java过渡,IIS即将被弃用

实践

中间件文件解析-IIS&Apache&Nginx

  • IIS 6 7 文件名 目录名

    • 文件名/目录名解析漏洞
      • 文件名:x.asp;.x.jpg x.asp;.x.jpg一整个都是文件名,但文件会被作为asp文件进行执行。
      • 目录名:x.asp/x.jpg x.asp是目录名,x.jpg是文件名。x.jpg会被作为asp来执行
      • IIS7.X与Nginx解析漏洞一致
    • 当上传的文件名固定,以及目录也无法创建时,此解析漏洞作废
    • 命名方式:
      • 基于本地名命名
      • 基于时间命名
      • 基于随机字符命名
  • Apache 换行解析 配置不当

    • apache可以不用安装,因为生成环境的时候它是会自带的

    • 换行解析-CVE-2017-15715

      • 黑名单后缀禁止上传(php,asp,js),白名单仅仅允许某些符合规则的后缀上传(世事无绝对,看情况绕过黑白名单)。
      • 通过上传php%0a的后缀突破php黑名单
      • 其2.4.0~2.4.29版本中存在一个解析漏洞
      • 涉及的靶场解析以及对应的数据包片段如下:
      Content-Disposition: form-data; name="file"; filename="evil.php"

      <?=phpinfo();?>
      -----------------------------15976337054444893102212276887
      Content-Disposition: form-data; name="name"

      evil.php <=此处留个空格,在十六进制当中替换为0a

      -----------------------------15976337054444893102212276887--
    • 配置不当-.htaccess配置不当

      • 配置不当导致带.php的所有文件被当做php文件来执行。
        • AddHandler application/x-httpd-php .php
        • 访问IP地址后,上传文件,文件会带有一个地址展示给你看,访问这个文件地址,就是带着.php.png后缀的php执行结果。
        • 基于本地文件上传
  • Nginx 文件名逻辑 解析漏洞

    • 文件名逻辑-CVE-2013-4547
      • 影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
      • 上传一张图片即可拿下权限:url/image.php.png => 直接将图片作为php执行。
    • 文件名解析漏洞-nginx.conf配置不当
      • 上传一张图片即可拿下权限:url/image.png/.php => 直接将图片作为php执行。
      • fofa对应的搜索语句:title=”phpStudy 探针 2014” && server=”Nginx”
      • 由此可知,该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。

Web应用编辑器-Ueditor文件上传安全

这个原本是百度开发的一个编译器。通过这个插件可以上传自己的后门,远程包含自己服务器的后门图片,用来作为后门入侵对方网站。

前后台如果存在该类编辑器,就有可能利用该编译器漏洞进行攻击。

<form action="http://192.168.46.139/net/controller.ashx?action=catchimage" enctype="multipart/form-data" method="POST">
<p>shell addr: <input type="text" name="source[]" /></p>
<input type="submit" value="Submit" />
</form>

编辑器:Ueditor,fckeditor,ewebeditor,kindeditor等