jsp文件上传_文件包含冷知识

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

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

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

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

  4. PHP RFI 需要什么条件?

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

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

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

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

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

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

28c8de37868c7b29ddf42afb63ba3025.png

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 能否文件包含致代码执行?需要什么条件

静态包含:1.jsp"%>

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

动态包含demo

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

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

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

1fa8f2c4376e53b80d371eba4299e3c8.png

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

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

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

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

60566a14ff01096d9618fc2f85b6ba52.png

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 辅助

12824db8bf8b71829f1d83f7f36a2c42.png

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://

bb79923c4dd5f4045c3db35de2232a65.png

872bbe02ff4b19595e2de682770f1af1.png

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截断与操作系统关系不大

0b4c417e101396472ebdc4c28357f107.png

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

101d223ac712afd605b2b486442c34ac.png

4e9b4cff4c267f34a3b3b362934b7358.png

1e7270b52218009c57136a83fb7922f4.png

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

  1. CTF场景比较多

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值