教你如何突破上传文件获取 WebShell 方法!

实际的环境中,很少有直接可以任意上传文件的漏洞 常见于前端限制,小东根据个人经验整理出主要的三大类突破文件上传拦截的方法。

方法教程

操作 说明 前端禁用JS 前端限制,禁用JS,去除input标签的accept属性 修改文件后缀 抓包工具,修改文件后缀为黑名单之外的后缀 修改文件后缀 修改文件后缀为index.jpg.php 修改文件后缀 %00截断,比如index.php%00.jpg 修改文件后缀 文件名末尾添加::$DATAwindows会把::$DATA之后的数据当成文件流,不会检测后缀名.且保持::$DATA之前的文件名 修改文件后缀 在linux主机上的文件名大小写敏感,文件后缀大小混写 修改文件后缀 在文件末尾添加空格,黑名单的方式没法儿检测 修改文件类型 抓包工具,修改Content-Type:image/png 修改文件后缀 修改文件名shell.php:.jpg,上传后会得到一个空的文件shell.php,然后修改文件名为shell.>>>或者shell.<shell.<<<shell.>><再上传,重写shell.php 换行解析 Apache2.4.0~2.4.29换行解析漏洞%0d%0a(CR,LF(回车,换行)) 未知后缀名 Apache配置AddHandler application/x-httpd-php .php不当导致未知后缀脚本执行 后缀名正则替换 这种需要构造,使得替换之后的可以重组成为新的可执行后缀,双后缀名绕过 修改上传路径 name="upload_file/1.php%00"; filename="shell.jpg" 条件竞争 条件竞争删除/重命名文件时间差绕过 图片马 copy code.jpg/b + shell.php/b hourse.jpg 图片重绘包含马 做一个就好了 上传压缩包 配合PHP伪协议、文件协议等读取执行本地文件 数据库写文件 UDFselect查询输入

实战事例

来自Upload-labs漏洞演示靶场的文件上传的第九关示例,一看到下面这种情况,是不是感觉完全没思路?

面对这样的情况,该怎么上传绕过呐?各位不妨先思考一下!

看到这样的情况是这样思考的:

1、什么操作系统?

2、如何绕过函数?

环境是自己的windows笔记本,那么通过windows系统特征可以尝试正则绕过,文件流::$DATA,大小写绕过,换行截断等方式。

如果是linux,就有文件大小写,换行截断,解析文件上传等等方式。

分析上面的文件:黑名单限制文件后缀,限制文件后缀大小写,去除::$DATA,限制上传.htaccess,难道这个题是假的?

这里可以尝试二次上传的方式,借助windows平台的正则匹配规则:

如下符号在windows平台下等效果

" => .

> => ?
< => *
  • 首先随便上传一个shell.php,使用抓包工具(比如:burpsuite),将文件后缀修改为:shell.php:.jpg
  • 此时,会在upload目录下生成一个名为shell.php的空文件:
  • 然后,修改数据包文件名为:shell.<<<,这里在move_uploaded_file($temp_file, '../../upload/shell.<<<')类似与正则匹配,匹配到.../../upload/shell.php文件,然后会将此次上传的文件数据写入到shell.php文件中,这样就成功写入我们的小马了。

在这里,对于文件上传的练习靶场,非常推荐Uplaod-labs这个项目:https://github.com/c0ny1/upload-labs

文章部分转自:https://www.freebuf.com/articles/web/201421.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
5 条回复 A 作者 M 管理员
  1. 主题不错,可以分享下吗?[可怜]

    • 主题名字叫:DMENG,可以在百度搜索一下就有了。

  2. 学到了~

  3. 你是在https://www.freebuf.com/articles/web/201421.html这里复制的吧

    • 文章下方有标注

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
网站首页 欢迎访问
联系站长
  • 站长QQ : 908487887一键联系
  • 扫一扫加站长微信
    官方QQ群