目录
2)文件类型绕过-->MIME检测:会根据上传的文件检测到content-type值
一、基本概念
1、webshell
1) webshell就是一种以asp、jsp、php或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门;
2)web:就是服务器开放的web服务,shell指对服务器某种程度上的操作权限;
webshell就是通过网站端口对网站服务器的某种程度上操作的权限;
3)由于webshell大多数是以动态脚本的形式出现,也有人称之为网站后门
2、木马:大马、小马、一句话木马、脱库马等等
1)一句话木马 :短小而精悍
php一句话木马:<?php @eval($_POST[‘value’]);?>
变形:<?php $_GET['a']($_GET['b']);?>
php中@符又叫错误抑制符,也就是用来屏蔽错误的
eval() 函数把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码(其实就是去掉引号)
试着写一个先保存(本地写一个会被windows杀掉)
防火墙-->病毒和威胁防护--->添加排除项
试着访问
甚至执行一些cmd命令
2)一句话木马管理软件:功能强大
可以做到文件管理,文件的上传和下载等等;常见的有菜刀、蚁剑等等
3)小马
4)大马
甚至可以做到提权
5)图片马
就是将木马放在正常图片里面,命令如下所示,得结合其他漏洞进行攻击吧
copy hack.jpg/b+hack.php/a normal.jpg
hack.jpg是正常图片,hack.php是一句话木马文件;/b是转换为二进制文件,/a是转换为ascii文件;将木马文件复制到图片中,重命名为normal.jpg文件
二、漏洞概述
1、漏洞原理
未对上传的文件做严格限制或者限制被过滤,导致用户可以上传任意文件就存在漏洞,若是上传脚本文件或者可执行文件就会导致服务器沦陷;
2、攻击成功的条件:
1)上传的文件能被web容器解析执行
2)用户通过web可访问该文件(知道文件上传后的路径和文件名)
3、文件上传思路(如何找到上传点)
常规的有头像上传、扫描获取上传等等上传点
先看是否有web中间件解析漏洞--->CMS通杀漏洞--->编辑器漏洞--->cve--->文件上传点
工具:基于字典的扫描器/爬虫
三、文件上传绕过分类
1、前端绕过:所有的前端检测都是不安全的
1)js检测文件后缀绕过
两种办法:
一种是直接禁用js;
另一种是先将后缀改成允许上传的,然后抓包工具例如burp suite改为可执行文件的后缀
2)文件类型绕过-->MIME检测:会根据上传的文件检测到content-type值
例如php文件的content-type值就是application/octet-stream
而jpg文件的content-type是image/jpeg
这个也好绕过,抓包改一改就行,改成允许的就可以
2、后端绕过(针对黑名单过滤)
1)文件后缀绕过
a)文件后缀绕过
一些web容器可能不仅允许php后缀,php2、php3、phtml等都可以被解析为php执行
前提是配置文件中有写,例如apache的httd.conf中有下列语句
AddType application/x-httpd-php .php .php2 .php3 .phtml
而黑名单只对php后缀进行过滤
b)上传配置文件
许多web容器允许在各个目录创建配置文件,仅对该目录生效
- .htaccess文件绕过(分布式配置文件)
- 前提:必须是apache
- 即使和httd.conf不一样,在该目录中也是.htaccess文件生效
- 利用:AddType application/x-httpd-php .jpg
(使得.jpg文件被当作php文件执行)
- .user.ini文件绕过
- 和.htaccess文件类似,只要是以fastcgi运行的php都可以用这个方法
- 前提:上传的文件的目录下必须有可执行文件
- 利用:.user.ini文件中的auto_append_file和auto_prepend_file两个配置项指定的文件都会被当前目录的可执行的PHP文件所包含(前者在末尾包含,后者在开头包含),类似与在执行当前目录的PHP文件前或后使用require()函数,包含配置项指定的文件。
例如 auto_prepend_file=1.jpg
1.jpg就是里面是包含攻击语句的php代码
c)web容器解析漏洞
- apache解析漏洞
- apache在解析多后缀文件时,会自右向左依次检测,直到检测到可以识别的后缀;
- 例如:1.jpg.php.eee.try会被识别为1.php
- apache2.x的一些版本受影响
- IIS解析漏洞(IIS5.x和IIS6.0)
- 文件解析漏洞:1.asp;.jpg会解析为1.asp(分号后面的不解析)
- 目录解析漏洞:.asp目录下的所有文件都会以asp格式执行,例如1.asp/1.jpg会被当作1.asp执行
- Nginx解析漏洞
- 虚构目录漏洞:例如有一个文件1.jpg,如果我们访问
/1.jpg/1.php
这个虚构目录,服务器会直接将1.jpg作为php文件进行解析
2)文件内容检测绕过
a)文件头检测绕过
一些文件有文件标识,例如图片文件,常见的有
b)文件内容绕过:一些后端检测禁止<?php ?>等字样
绕过方法:可以使用<script language="php">...</script>或者php短标签
四、dvwa靶场
准备两个文件,一个木马,一个正常的png图片
1、security=low
尝试上传木马文件
成功上传
去访问
这里出现了一点小问题,因为phpstudy搭建在win10上,该文件直接被查杀了,我们同样去设置一下策略,“防火墙--->病毒和威胁”-->添加排除项,排除uploads文件夹
重新上传后访问
2、security=medium
上传muma.php失败
修改content-type值
成功上传
3、security=high
各种都尝试过,似乎需要上传图片马,结合命令执行漏洞更改文件后缀进行执行
也可以使用文件包含函数直接包含进去会被当作脚本文件执行!!!