一篇文章带你入门文件上传漏洞

引子

今天给大家带来文件上传的简介以及如何利用和防范。希望能带给大家一些不一样的理解。

文件上传漏洞简介

原理

攻击者可以上传一个与网站脚本语言相对应的恶意代码动态脚本到服务器上,然后访问这些恶意脚本中包含的恶意代码,从而获得了执行服务器端命令的能力,进一步影响服务器安全。

危害

文件上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本、可执行程序等。
如果Web 服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。
如果攻击者通过其他漏洞进行提权操纵,拿到系统管理权限,那么直接导致服务器沦陷。
同服务器下的其他网站无一幸免,均会被攻击者控制。

利用

对于利用,我们只需要有个文件上传的点,以及我们知道我们所传的文件所在目录并且上传的恶意文件能够被web容器解析执行,便可能存在文件上传漏洞。

实战

说是实战但是因为不能随便入侵别人的机器(有概率获取银手镯一套),这里给大家推荐一个专门用来练习文件上传漏洞的不同利用方法的靶场。

github.com/c0ny1/uploa…

客户端检测绕过

有的客户端会存在客户端校验,校验上传文件的后缀名,当我们传入php木马时可能会因为类型不同被禁止,此时我们要怎么进行上传一句话木马呢,这里给大家提供两个思路,第一个我们可以禁用浏览器的JS脚本,第二种方法便是使用渗透中常用工具burpsuit进行抓包,然后修改文件后缀为php即可绕过,因为他只是做了一个前端的简单验证。

修改MIME 类型

有的服务器端将会对上传文件content-type类型进行检查以此来防范恶意文件的上传,这时我们打开burp suite将php文件上传,因为content-type的类型不是服务器认可的类型,那么我们就可以使用burpsuite进行修改该文件类型,并将该文件进行上传。

常见的content-type对应类型如下:

00截断绕过

运用此漏洞需要满足两个条件:

1.php版本小于5.3.4
2.php的magic_quotes_gpc为OFF状态

0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制,具体运用方法如下,假如我们上传一个一句话木马:

攻击者修改了path以后的拼接结果为:uploads/XINO.php%00/20190818.php,移动文件的时候会将文件保存为:uploads/XINO.php,以此我们便可以绕过检测来上传一句话木马。

.htaccess文件攻击

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。

简单来说该文件的作用就是根据里面的内容解析为我们想要的类型,这么说可能很难理解,比如我上传一个图片马(JPG文件里插入了一句话木马),因为网站对我们的上传类型做了限制,我们上传不了PHP文件,我们先上传一个JPG的图片马,然后上传 .htaccess文件, 将图片解析为php语言,来达到getshell的目的。具体的文件内的内容为:


<FilesMatch "evil.gif">
SetHandler application/x-httpd-php#在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
AddHandler php5-script .gif #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
</FilesMatch> 

当然不止这一种,还能如下写法:


AddHandler php5-script .jpg


AddType application/x-httpd-php .jpg


Sethandler application/x-httpd-php 

文件头检测

当我们上传一些文件时,有些拦截会检测我们文件里的具体内容,如果匹配了正确的文件头则会通过检测,反之则会拦截我们的文件,针对如此我们可以利用在文件前写入适当文件类型的文件头来绕过。常用的文件头如下:

JPG:FF D8 FF E0 00 10 4A 46 49 46
GIF :47 49 46 38 39 61 (GIF89a)
PNG:89 50 4E 47

图片马绕过

图片马在上面提到过,当然该方法需要配合其他的利用方式来达到目的(文件包含)具体的制作方法如下:


 copy 1.jpg/b+2.php 3.jpg 

这是最平常的插入图片马的方法,我们还可以利用一些软件例如010editor来直接插入到图片数据中。

黑白名单绕过

一些拦截会限制我们上传的类型,具体可以分为以下两种:

黑名单:明确不让上传的格式后缀(asp,php,jsp,aspx,cgi,war),在黑名单中可能存在没有增加限制的漏网之鱼,此时可以通过这些没有禁止的后缀名来上传一句话木马,例如:php5,phtml

白名单:明确可以上传的格式后缀,该方法还是比较安全的,但也有许多绕过方法,例:MIME类型、%00截断、0x00截断、0x0a截断。

结语

通过本文带大家简单入门文件上传漏洞的原理以及攻击方法,有兴趣的师傅们可以自己去搭个靶机去实战一下,内容仅是我的个人理解,有不对的地方还请大家多多指教。

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

上面介绍了技术分类和学习路线,这里来谈一下学习方法:

## 视频学习

无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值