一个比较好玩的WebShell上传检测绕过案例

背景介绍

一次普通的 WEB 测试过程,遇到了一个上传点,可以上传固定图片格式但是可以任意名字+任意后缀名的文件。

环境

IIS 7.5/ ASP.NET - Windos SERVER 2008 R2

过程

0x1 测试

看起来怼这个好像没有任何技术含量,直接扔图片马就是了。

但是呢,一般的图片马是不行的,回顾一下我们经常用也是流传最广的做图片马的方式。

1: 直接在 shell 头加 gif89a 2: 使用 Copy 大法 3: 没了

相信大多数人都是用的都是以上的几种方式,平常来说图片马不能用都是直接放弃的这个点的。

那么这里介绍另外一种,拓展信息插一句话。

先说说上传点的检测机制:程序采用 GDI+ 插件将用户上传的图片处理后保存。

作者的脑子很简单,当然这个思路也没什么错,毕竟只要是正常的图片文件没必要拦截。

而作者写的这个程序也的确很牛逼,copy 大法是完全失效的。

经过 copy 的图片马在程序过滤后都被剔除干净了。

可以看到用 Copy 打发做出来的被过滤的啥也不剩了,尝试了各种混合模式都不行。

所以看起来理论上这玩意能拦截除了图片本身的信息之外的任何额外附加信息。

0x2 绕过

但是呢, 程序作者好像漏了什么,图片本身的信息也是大有作为的。

前面提到的拓展信息插一句话,右键属性然后添加就行。

而这种手段,基本上四肢健全不需要像我一样定期去看兽医的一看就会,不需要写代码也不需要额外的工具。

用 BurpSuite 怼上去。

总结:

不要相信用户输入的任何信息,也不要对自己的编码水平有太高的期望。

在本次案例中,首先是未对上传文件的名称做任何校验就写入硬盘这明显是不可取的。

其次就是对 GDI+ 插件的过分信任,并没有对扩展信息内容做校验便立即放行了。

更加厉害的是,通过查询服务器进程发现,服务器是裸奔状态。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-12-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的博客

nginx配置文件详解

nginx配置参考文档(附带中文说明),能解决大部分配置问题了! #定义Nginx运行的用户和用户组 user nginx nginx; #指定工作衍生进程数...

55060
来自专栏安恒网络空间安全讲武堂

上传绕过总结

1.前端代码 2.逻辑绕过 3.文件内容检测 4.文件包含、文件备份 5.容器及语言特性 6.畸形报文 4.文件包含、文件备份 8.SQLI方面 上传文件时WA...

30780
来自专栏LhWorld哥陪你聊算法

HBase篇--初始Hbase

1.HBase,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。 2.利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapRe...

27220
来自专栏乐百川的学习频道

安装和使用MongoDB

MongoDB是一个著名的NoSQL数据库,顾名思义就是不使用SQL的数据库,目前在很多场景都有使用。如果你不喜欢使用笨拙的各种SQL数据库,可以尝试使用一下M...

1.1K60
来自专栏木制robot技术杂谈

用Python模拟登陆微博

前言 最近在研究模拟登陆,看了很多教程,发现基本上都是只教怎么处理后就能登陆成功,没有讲解怎样得到处理的方法。经过的一天的研究,把微博模拟登陆基本上弄清楚了,下...

44990
来自专栏Albert陈凯

2018-09-11 Svn升级Git不需要那么痛URL that points to a project root(may be the same as Subversion repository

一. 介绍 SubGit是用java语言编写的。SubGit是一种subversion与git代码库之间双向同步工具。如何在本地subversion版本库上安...

17810
来自专栏开源项目

码云推荐 | 基于 php 的定时计划任务框架 taskPHP

taskPHP 基于原生态 php 开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用原生态php内存共享实现进程间通信,支持 Linux 和 Win...

532100
来自专栏磨磨谈

Ceph用户邮件列表Vol45-Issue4

It is expected that the cluster log will be flooded with messages like: 2016-07-...

12430
来自专栏智能计算时代

Envoy架构概览(7):断路,全局限速和TLS

断路 断路是分布式系统的关键组成部分。快速失败并尽快收回下游施加压力几乎总是好的。 Envoy网格的主要优点之一是,Envoy在网络级别强制实现断路限制,而不必...

41460
来自专栏一名叫大蕉的程序员

BFS究竟实现到啥程度了?No.67

BFS,全称 BigBanana File System ,大蕉文件系统。是大蕉同学希望通过自己实现一个分布式文件系统练练手,看看是不是能写出一个真正能跑起来的...

22370

扫码关注云+社区

领取腾讯云代金券