PortSwigger靶场(四)文件上传漏洞

前言

在我学习文件上传漏洞的时候有一个很大的感受,就是你学的时候感觉这种漏洞简单又及其的罕见,好像是没什么用,也没那么多人那么蠢,但是实际学习下来的话感觉其实他的学习难点完全是在于他链接上了代码方面的问题,真正的理解这个漏洞我认为还是需要一点php这种代码基础的,要不然在整个学习中也不过是浅尝则止,本此学习回顾我将会再加入一些对与代码的理解

其次介绍以下文件上传漏洞,文件上传漏洞主要分服务端和客户端

本次实验主要都是在客户端中,这种情况在实战的时候一般很少,因为这种都很简单,由于验证全在前端,我们都可以看到,最简单的方法就是抓包,然后直接改包里的东西就行,客户端的特征就是很多时候你还没有发包,就发现自己的文件不被通过

接下来就是主要的服务端漏洞,这个这边暂时用不到,方法也很多,我们稍后再细谈

一、实验室:通过 Web shell 上传远程执行代码

1.1 什么是web shell

Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

Webshell是黑客经常使用的一种恶意脚本,其目的是获得服务器的执行操作权限,常见的webshell编写语言为asp、jsp和php。比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。黑客通常利用常见的漏洞,如SQL注入、远程文件包含(RFI)、FTP,甚至使用跨站点脚本攻击(XSS)等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。

webshell最大的特点就是可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。

1.2 靶场

先看题目,题目给我们提供了一个账号,并且说明上传图像功能有很大的漏洞,而且明确要求我们上传一个基本的PHP网页shell,这里我们直接写一个一句话木马,看看能不能上传成功,这里出乎意料的是我们php后缀的文件直接就上传成功了,这里我们找到下面选的这个请求,我们要的密码就在响应中以文本的形式表现出来了

二、实验室:通过内容类型限制绕过上传 Web 外壳和

在这里我们还是采用之前的方法上传文件,但是发现有文件类型的过滤,要求文件类型必须是image/jpeg和image/png

这里我们把上传文件的按钮抓包,更改contant——type为允许上传的类型

发现就可以上传成功

这里我们来到http请求历史记录里找到下面这个请求,后面跟的就是爆出来的密码

三、实验室:通过路径遍历上传 Web 外壳

在这个实验里我们发现使用之前的两个方法完全没有作用

在响应当中发现php代码源码显露出来,说明没有以代码的形式运行

在这里我们猜测,是不是在这个文件夹里的话就会过滤php遍历运行语句,甚至是过滤php标识,这里我们最好的方法就是看看能不能让这个文件不上传到这个文件夹里,这里我们尝试在上传文件的时候抓包,然后加../看能不能向上遍历离开这个文件夹

这里还是发现不行,../被过滤了,我们尝试使用url编码绕过

这之后我们刷新靶场,观察这个请求历史

发现回响显示是404,没找到,观察请求发现服务端只将..的url编码解码了,没解码/的,所以我们在这里发送到repeater当中,将没被url编码的部分改成/,再次发送更新界面

此时在回响中就可以看到我们用代码遍历出的密码,输入即可通过这个靶场

四、实验室:通过扩展黑名单绕过上传 Web 外壳

在我们学习这个实验室之前,我们需要首先再多了解一点关于文件上传漏洞的常用方法,这里我们现介绍在这其中用到的一个,更多绕过方法总结来源于

文件上传漏洞 (上传知识点、题型总结大全-upload靶场全解)_file.islocalupload = true;-CSDN博客

4.1 文件系统00截断

在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。**利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00、%00上传截断漏洞。

绕过方法

通过抓包截断将【evil.php.jpg】后面的一个【.】换成【0x00】。在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束,从而将【evil.php.jpg】的内容写入到【evil.php】中,从而达到攻击的目的。

4.2 .htaccess的运用

htaccess 在站点的根目录下面,不是在apache目录下,但是它属于apache的一个配置文件

htaccess文件时Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮助我们实现:网页301重定向、自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问,禁止目录列表,配置默认文档等功能

其中.htaccess文件内容:SetHandler application/x-http-php的意思是设置当前目录所有文件都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则则报错

http.conf文件(前提条件)

在此文件中设置 AllowOverried All ,才能使用.htaccess文件

4.3 靶场运用

先将之前上传失败的请求发送到repeater中

    1、将filename参数的值更改为.htaccess
    2、将Content-Type标头的值更改为text/plain
    3、用以下Apache指令替换文件(PHP有效负载)的内容:AddType application/x-httpd-php .l33t
这会将任意扩展名(.l33t)映射到可执行MIME类型application/x-httpd-php。由于服务器使用mod_php模块,它已经知道如何处理这个问题

这个时候我们已经成功引用了.htaccess

接下来我们在上传文件的时候,就可以使用.htaccess后缀,而这个后缀已经被我设置为以php文件读取了,所以当我们以这个后缀上传,我们的php文件就会被读取成功

接下里将运行成功后读取的代码提交就可以完成靶场

六、实验室:通过多语言 Web 外壳上传远程执行代码

这个需要一个插件exiftool,这里暂时不作描述

七、实验室:通过竞争条件上传 Web 外壳

这个实验一句话就可以概括,就是有些文件上传,可能上传之后才迅速检测然后删除,我们只需要在很短的时间疯狂上传就有机会让我们的文件被读取,简单来说就是你抓到上传文件的包,放在burp的爆破里,无线重复操作就行,过段时间就可以爆破出来了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值