长亭百川云 - 文章详情

文件包含冷知识

认知独省

71

2024-07-13

文件包含漏洞是个基础且典型的漏洞了,本篇介绍几个相对偏门的知识点

  1. 常见的文件包含的函数有哪些?

  2. JSP 能否文件包含致代码执行?需要什么条件

  3. ASPx能否文件包含致代码执行?需要什么条件

  4. PHP RFI 需要什么条件?

  5. PHP LFI 包含日志文件,直接使用浏览器请求恶意代码是否可以打到日志文件?

  6. PHP LFI 常见的getshell的方法?

  7. PHP伪协议有哪些?PHP版本有哪些限制?

  8. %00截断,需要什么条件?与操作系统关系?为什么00能截断?

  9. 点号截断和./路径截断需要什么条件?与操作系统有什么关系?Linux是否可成功

  10. 文件包含有哪些实战场景?

0x01 常见的文件包含的函数有哪些?

PHP:include() 、include_once()、require()、require_once()、fopen()、readfile()

JSP/Servlet:java.io.file()、java.io.filereader()、静动态include

ASP:include file、include virtual

0x02 JSP 能否文件包含致代码执行?需要什么条件

静态包含:<%@ include file="1.jsp"%>

动态包含:<jsp:include page="1.jsp" flush="true">

动态包含demo

<% String name = request.getParameter("name");%>

<jsp:include page="<%=name%>" />

  1. 动态包含,仅支持包含web路径下的jsp文件(如果都web路径的jsp了,直接访问就好,包含来RCE的意义不大…)(像绝对路径、非web路径、非jsp,文件包含通通失败)

  2. 静态包含不支持变量赋值,包含文本文件即可。

  3. 总体来讲,JSP的文件包含略显xx,但可以留后门使用

0x03 ASPx能否文件包含致代码执行?需要什么条件

  1. 任意目录任意文件可被包含,可以把内容当做aspx代码执行

  2. 但aspx 的包含不支持动态变量赋值,所以类似jsp静态包含,作用小很多

  3. 当然也可以留后门使用(dll)    

0x04 PHP RFI 需要什么条件?

allow_url_fopen = On(是否允许打开远程文件)

allow_url_include = On(是否允许include/require远程文件)

  1. 两项均为On 才可以远程文件包含

  2. 默认的allow_url_include 是Off状态

0x05 PHP LFI 包含日志文件,直接使用浏览器请求恶意代码是否可以打到日志文件?

  1. 直接浏览器请求的代码到日志,会URL编码,导致PHP不会正常执行;

  2. 可以通过burpsuite 辅助

0x06 PHP LFI 常见的getshell的方法?

  1. 结合上传点,包含上传的可信文件(图片、附件类)

  2. 结合日志,包含已知路径的日志文件

  3. Session内容可控,session.save_path 的路径结合PHPSESSID去包含

  4. 伪协议绕过

0x07 PHP伪协议有哪些?PHP版本有哪些限制?

  1. 伪协议做绕过:phar://、data:text/plain、php://input、php://filter、zip:// & zlib:// & bzip2://

0x08 %00截断,需要什么条件?与操作系统关系?为什么00能截断?

  1.  PHP内核是由C语言实现的,因此使用了c语言中的一些字符串处理函数。在连续字符串时,0字节()将作为字符串的结束符。所以在这个地方,攻击者这要在最后加入一个0字节,就能截断file变量之后的字符串

  2.  需要条件:PHP版本小于5.3.4 ;GPC = Off

  3.  Windows&linux php5.2 均测试成功,之前在t00ls发了一个帖子以为linux 不能截断成功。此次看来00截断与操作系统关系不大

0x09 点号截断和./路径截断需要什么条件?与操作系统有什么关系?Linux是否可成功

  1. 点号截断,经过测试windows平台下PHPstudy PHP 5.2 216个点即可截断成功(整个URI 长度为268),(并不是网上说的256){需要PHP版本限制}

  2. 点号截断,测试linux(kali PHP7) 4096个点并未成功。(最大长度8197提示Request-URI Too Long)

  3. ./截断,Windows + phpstudy PHP5.2.17测试成功 256 ;php 5.3.27 测试失败,估计类似00截断需要PHP < 5.3.4 ;Linux php 5.2.16 不成功 4096,可能真如网上所说需要php<5.2.8

0x10 文件包含有哪些实战场景?

  1. CTF场景比较多

  2. 实战的PHP环境可以综合运用

  3. 目前企业应用java居多,PHP偏少,遇到非PHP,可以考虑后门系列

作为能够getshell (web)的典型手段,在特定场景下还是能够发挥很大作用的,虽然他不如注入、上传、RCE类型那么直接,但可以在一些隐蔽的功能组合利用。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2