600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 渗透测试基础-文件上传漏洞 (下)

渗透测试基础-文件上传漏洞 (下)

时间:2020-12-03 03:43:03

相关推荐

渗透测试基础-文件上传漏洞  (下)

渗透测试基础-文件上传漏洞 (下)

第十一题 %00截断绕过第十二题 %00截断绕过(二)第十三题 图片马绕过第十四题 getimagesize图片类型绕过第十五题 php_exif模块图片类型绕过第十六题 二次渲染第十七题 条件竞争绕过第十八题 IIS6.0 解析漏洞第十九题 IIS6.0解析漏洞(二)第二十题 IIS6.0解析漏洞(三)第二十一题 CGI解析漏洞漏洞总结

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!

上次所说的10个文件上传的靶场,全是以黑名单机制工作的,这次会讲白名单的文件上传点,我们该如何测试。

第十一题 %00截断绕过

这里对文件后缀做出了限制,凡是不是jpgpnggif的文件后缀,都不允许上传。这里的方法可以是$00截断绕过。先来了解一下它所实现的过程。

先来说一下这个$00是干嘛用的,这个其实和编程语言里面的注释,有着差不多的意思

就像这里,对于#号后面的东西,根本就不输出,因为python认为#号后面的不是代码,所以不执行。这里的%00也是这样的意思

我们还得知道,文件上传是有一个执行过程的:

先会上传到临时的文件目录➡️在转移到需要文件存放的位置➡️最后对其文件重命名

这里就会是这样的一个情况:我们上传一个1.jpg的文件上去,那它最后会被放入/upload_file/目录下,那这里会这样显示

/upload_file/1.jpg然后对文件重命名➡️/upload_file/newfile.jpg

但如果我们在数据包里面对其做一些手脚呢,在文件后面加上%00截断,那会发生什么

/upload_file/在加上一个1.php%00➡️/upload_file/1.php%00➡️/upload_file/1.php%001.jpg➡️/upload_file/1.php%00newfile.jpg

然后由于被截断了,它最后执行出来就是这样的。

/upload_file/1.php%00newfile.jpg➡️/upload_file/1.php

我们来实际靶场看一下

这里选择一个jpg格式的一句话木马,里面的内容就是:<?php eval($_REQUEST['abc']);?>只是将原本txt的格式改为了php而已(后面会介绍一个将图片和一句话木马结合的方式,更为推荐那种方法,毕竟在实际测试中,咱们是不知道人家这里用的是什么方式来实施拦截的)。

点击上传,Burp抓取上传的数据包

这里的木马文件就得到了执行。(这里要注意的是%00截断,这个在php5.4以后的版本就不存在了,所以得小于5.4才可以)

第十二题 %00截断绕过(二)

根据上传的数据包了解到,这里改变为了POST的传参方式,如果我们这里还是和刚刚那样,在/upload/后面加代码的话那是行不通的,因为以GET的方式传参进去是会经过一次编码的,而POST的不会。所以我们这里不能直接写`%00

这里可以这样来操作:在/upload/webshell.phpf,🔚末尾加上一个f,这个的意思,是方便我们在hex编码里面改值,f对应的66,只需要改为00即可

这里的操作是,将数据包发给了Burp的编码器模块,在编码器切换为十六进制,然后对其改变。

数据包改完之后,切换为test模式,复制全部数据包,然后放过去,和上一题那样,删除url后面没有用的参数。这样我们就能通过了这题。

第十三题 图片马绕过

这里就开始检测那些以图片后缀结尾的文件到底是不是图片,我们不能在像刚刚那样,将txt格式的内容,改了jpg就为图片了。我们先来看一下

这个是我们前面一直使用的txt,改变了后缀,就变为”图片“了,用这个测试后,靶场直接拒绝了上传。

所以我们这里先制作一个图片马:先准备两个文件,一个txt的木马内容文件,和一个较小的图片文件(较小就是图片字节数小一点),然后在Windows上的cmd窗口,输入:copy 图片文件/b + 木马文件 结合后的木马图片名

这里的/b,是让其以2进制的方式去结合,不然图片会坏掉。

这里我们图片马就有了,在直接上传到刚刚的靶场中,上传好了之后,改变文件后缀,就能看到一句话木马的代码。

第十四题 getimagesize图片类型绕过

第十五题 php_exif模块图片类型绕过

因为十四十五和十题差不多,都是用图片马可过,略过。

第十六题 二次渲染

这里就厉害了,它不但不信任我们传的是不是图片,现在就算你传上去一个图片,也会对其图片的文件内容做大换血。也就是说,传刚刚的图片马不行了,里面的一句话木马会全部替换掉。这里得用另外一个图片格式来做测试

找到一个gif图片,用编辑器以十六进制的方式打开,然后在gif文件内容的前三行写下一句话木马。二次渲染虽然会对图片文件进行改变,但是由于gif的图片的前三行过于重要,为图片的 ”骨架“ 所以二次渲染并不会触碰那里。

咱们这里虽然是上传上来了,但是并不能连接webshell工具,需要结合另外的漏洞才可以。(比如CGI解析漏洞,这个下次文章详细讲

第十七题 条件竞争绕过

这里还是先将原理。在最上面我们有提到文件上传的顺序,是对文件检测之后,在进行保存的。但是如果换一个方式行不行呢?是可以,但那就会出现逻辑漏洞。

换一个方式就是:

先让文件进来➡️在对其进行检测➡️不合格就删除掉

这个看上去也没有什么毛病,但是毛病就出在文件已经进来了,虽然就短短的那几毫秒,也会发生很大的问题。要知道,快速检测并删除,这是计算机能做到的但是快速上传和访问,计算机也能做到。看到这里可能有人就要奇怪了,就算能上传上去,并能访问到,你能在那短短的几毫秒连接人家服务器,并执行其他操作嘛?说实话,真要遮掩的情况,没人做的到。但是如果我们上传的那个文件,并不是一句话木马文件,而是一访问,就能在创建一个新木马文件的文件呢?

这里就介绍一些这个,能一访问就能创建文件的函数。

file_put_concents(“文件名”,“文件内容”)

那我们就这一这样书写:

<?php file_put_concents(‘webshell.php’,’<?php eval($_REQUEST[666]);?>’)?>

将这个文件保存为file.php,然后一直疯狂重复上传,另外在开一个burp,一直重复去访问这个文件,当访问到时,就在相同的目录创建了一个webshell.php文件!!!

当然这里有一步得先操作,先上传一个普通的图片,得到其图片保存的位置,然后在去重复访问刚刚那个file.php即可

(这个是我复现过的,绝对不是空谈的,不发截图是因为这个靶场的源码文件找不到了,没法复现截图贴出来。。。)

第十八题 IIS6.0 解析漏洞

IIS6.0的这个漏洞,其实在严格意义上不算并不算实际存在的漏洞,因为出现这样的问题,是不了解导致的,如果在一开始就将这个设置配置得当的话,也就不会存在这样的漏洞了。接下来详细了解一下是怎样的情况。在IIS6.0中除了将asp后缀当作asp进行解析的同时,当文件后缀名为.asa .cer .cdx也会被当作asp解析,这是因为IIS6.0在应用程序扩展名映射中默认设置了.asp .cer .cdx都将会调用的asp.dll的配置文件。

这里还是以png格式先传上去,然后抓包修改格式为cer

然后用蚁剑连接,上去找flag

第十九题 IIS6.0解析漏洞(二)

这题也属于IIS6.0的中间件专属漏洞,在其他版本上没有的。这里的情况是,当文件名出现(;)分号或者( / )斜杠时,IIS中间件会将分号和斜杠后面的东西不在识别,就比如这个的文件webshell.asp;.jpg这个文件,对于windows来说,就是个jpg文件,但对于IIS6.0的中间件来说,它就是个webshell.asp的文件,这样就既符合了白名单,又能被正常解析,就这样造就了此漏洞。

这里都不需要抓包,只需要将一个asp的图片马文件改为上面的后缀即可。

第二十题 IIS6.0解析漏洞(三)

这个就比较离谱了,如果文件目录的名字为xx.asp时,那这个目录下的所有文件都会被当作asp来解析,这个可以在当我进入到别人后台时,找不到比较好的上传点,但是可以创建目录名时起到作用。

第二十一题 CGI解析漏洞

这个漏洞涵盖范围挺大的,在nginxIIS7.0IIS7.5Lighttd等都存在。漏洞是这样的:当访问一个地址:/nf.jpg/1.php时,他会做两步操作,会先看其末尾是什么,当看到是末尾是php时,他就会将这个东西交给php去执行,然后执行第二步,它会去找末尾这个文件,如果找不到,就会看前面一个目录是啥,如果有,就将前面一个文件按照php来解析执行,那如果前面一个文件是我们的图片马呢,这时就起到了关键性的作用,这个功能如果nginx里设置了cgi.fix_pathinfo=1那么这个功能就是开启的(默认开启)。

所以这里还是直接上传图片马jpg,然后去访问图片连接。

jpg躲过白名单监测,然后在图片地址后面加上/.php,就满足了刚刚的条件,它找不到.php文件在哪,就往前面的图片马拿来当php解析,这样就完成了一句话木马的工作。

漏洞总结

以上这7题都是白名单的方式,虽然有很多漏洞都是好久以前的了,但是还是有少部分网站或多或少有这样的漏洞。%00截断升级php版本可解决图片马的防御方法可用二次渲染,只要中间件那边不出问题,这个还是挺好用的条件竞争主要还是逻辑上的问题,先检测在上传即可修复这个漏洞;最后的几个中间件漏洞,基本都是在指定版本出现的,所以可以的话进行一下升级,然后关掉一些不使用的配置就好。

《最好的防御,是明白其怎么实施的攻击》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。