本文只是做一些总结性的内容,本文中提到的一些操作,均在我得另外两篇文章中有所提及,可以结合进行参考:
上传的后门文件,需要能被脚本语言解析执行。
还有例外情况,非脚本文件也能被成功解析。比如:上传了一个图片🐎,如果对方中间件上存在一些漏洞的话,配合这些漏洞可以实现图片文件按照脚本文件解析。
针对上传的校验,大概有以下几处:
前端js校验:直接修改前端代码
后端检测Content-Type:直接抓包修改为 image/png or image/jpg
后端校验后缀:nginx中间件就结合.user.ini文件 apache就配合.htaccess文件
文件内容校验:
过滤关键字php:payload <?=eval($_POST[x]);?>
过滤关键字 [] : []=={}
过滤关键字 ; payload:<?=system("操作系统命令")?>
过滤关键字 () 使用反引号执行命令 paylaod:<?=`tac ../fl*`?>
如果以上都被过滤了,就要考虑远程文件包含,还有条件竞争
其它别的:
服务器可能会对上传的图片进行二次渲染,我们需要对上传的图片实现进行处理,防止payload被处理掉
首先,尝试上传脚本文件,并且尝试绕过,二分思想测试检测点
如果针对文件的的检测很完善的话,还有两条思路,目的使非脚本文件解析为脚本文件