网络空间安全毕业实习日志day7

目录

1. 文件上传防御手段及绕过手段总结

文件上传漏洞简述

常见文件上传检测以及绕过

2. 文件上传常用一句话木马

3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

冰蝎(Behinder)

哥斯拉(Godzilla) 

蚁剑(AntSword)

4. 文件上传无回显如何查找webshell地址

5. upload-labs靶场通关第6-第10关

PASS-06(大小写绕过上传)

PASS-07(Windows特性绕过-[" "] 空格绕过)

PASS-08(Windows特性绕过-["."] 点绕过)

PASS-09(NTFS流::$DATA绕过)

PASS-10:([". ."] 点空格点绕过)


1. 文件上传防御手段及绕过手段总结

文件上传漏洞简述

文件上传漏洞定义
  文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。
  如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。

文件上传漏洞原理
        文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。
  通过来说文件上传功能是没有问题的,主要是服务器如何对上传的文件如何进行处理。
  若WEB未对用户上传的文件进行有效的审查,若存在恶意用户对其上传一句话木马,从而实现控制WEB网站的目的。

文件上传流程

       通常一个文件以 HTTP 协议进行上传时,将以 POST 请求发送至 web 服务器.web 服务器接收到请求后并同意后,用户与 web 服务器将建立连接,并传输 data而一般一个文件上传过程中的检测如下图红色标记部分

危害 

        非法用户可以上传的恶意文件控制整个网站,甚至是控制服务器,这个恶意脚本文件,又被称为 webshell ,成功上传 webshell 后门 可以很方便地查看服务器信息,查看目录,执行系统命令等。

常见文件上传检测以及绕过

客户端 javascript 检测 (通常为检测文件扩展名)
这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码,最常见的就是检测扩展名是否合法
绕过方式:
1 前端修改允许的类型
2 burp抓包修改
3 禁用javascript(例如火狐浏览器就有禁用JS功能)

服务端检测绕过(MIME 类型检测)
主要是检测Content-Type: 字段
绕过方法:
burp抓包修改Content-Type: 为允许的字段
Content-Type: image/gif
Content-Type: image/png
Content-Type: image/jpeg
(我曾经看到过一个博客,他上传的文件会给你重命名后缀,好像就是检测的Content-Type,通过修改这个成php,最后他成功上传了php文件)

服务端检测绕过(文件扩展名检测)
黑名单检测,黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多
一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件
绕过方法:
1 文件名大小写绕过
用像 AsP,pHp 之类的文件名绕过黑名单检测
2 名单列表绕过
用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类
3 特殊文件名绕过
比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式
在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会
被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。
4 htaccess 文件
配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测
5 写入方法
首先名字为1.php:jpg,会写入一个1.php的空文件,然后再上传一个文件,然后修改名字为3.<<<
这样就会把我们这个文件的内容写入到我们上传的那个1.php空文件中
参考:https://www.waitalone.cn/php-windows-upload.html
6 00截断绕过上传
1.php .jpg 空格二进制20改为00
还有一些图片木马之类的,需要结合文件包含漏洞来解析。

文件头检测

iis解析漏洞
1 目录解析
以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
2 文件解析
*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx
3 默认解析
.asp .aspx .ashx .asa .cer这是系统默默认的后缀名
Apache解析漏洞
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如xxx.php.rar对apache来说rar是不可解析的,所以就会解析成xxx.php

nginx解析漏洞
开启cgi:SCRIPT_NAME FASTCGI:
www.xx.com/a.jpg/.php(任何不存在文件)-----可以解析为.php文件
a.jpg:<?php phpinfo();?>
a.php%00.jpg----解析为a.php

修复建议
上传文件的存储目录;禁用执行权限文件的后缀白名单,注意0x00截断攻击不能;有本地文件包含漏洞;及时修复web上的代码;升级web serve


2. 文件上传常用一句话木马

实验环境
小皮面板搭建:upload-labs靶场

实验过程
构造一句话木马


这是一个最简单的一句话木马,我们用GET传参接受了两个参数,其最终目的是构造出:assert($_GET['1']) -> assert(eval(phpinfo()))这样的语句。这里是因为assert只能执行函数,不能执行字符串形式的参数。我们也可以直接构造eval,但是很容易被杀,在我个人电脑上我们可以关闭保护软件,但是我们可以关闭网站服务器的杀毒软件吗?显然不能,所以这里我们使用了传参来构建一句话木马。

一句话木马的使用:

这里以第一关为例:

我们上传发现不允许php文件上传,根据弹窗很明显发现这是一个白名单限制,我们看看源码。

这个网站的防御规则很清晰了,他是在前端防御,谷歌浏览器提供一个不加载JavaScript的功能。

我们设置成不允许,刷新靶场再次上传木马文件发现上传成功了。接下来复制图片地址根据一句话木马的构造思路进行传参。

发现木马执行了phpinfo(),这究竟是为什么呢?我们一起来看看它的原理

木马原理解析:

先利用中国蚁剑进行连接,再进行抓包看有什么东西。

url:http://10.5.50.55/upload-labs/upload/web.php?0=assert&1=eval($_POST['muma'])
密码:muma

添加成功,点击左上角AntSword设置网站代理:127.0.0.1端口:8080

接下来就开始抓包了。

将抓到的包进行转码,解完码之后,可以知道,这段代码的功能包括:禁用 PHP 错误显示(通过 ini_set("display_errors", "0"))
设置脚本执行时间不限制(通过 set_time_limit(0))
尝试获取当前 PHP 配置中的 open_basedir 设置,并对其进行一系列操作:检查是否存在可写目录,并在其中创建一个名为 .66b0688826 的隐藏目录尝试移动到该目录,并修改 open_basedir 设置以访问上层目录移除创建的隐藏目录
定义了两个函数 asenc 和 asoutput,但它们在代码中并没有被直接调用
尝试获取服务器信息和当前用户信息,并输出到页面上       


3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

冰蝎(Behinder)

''冰蝎"是一个动态二进制加密网站管理客户端。在实战中,第一代webshell管理工具"菜刀"的流量特征非常明显,很容易就被安全设备检测到。基于流量加密的webshell变得越来越多,"冰蝎"在此应运而生。主要功能为:基本信息、命令执行、虚拟终端、文件管理、Socks代理、反弹shell、数据库管理、自定义代码等,功能非常强大。

建立连接
打开冰蝎4的server文件夹,里面有各种类型的webshell,选择一个shell,然后放到目标主机上,就可以建立连接。选一个shell.php放到我们的WWW目录下,然后用冰蝎连接它 

打开冰蝎,然后右键,选择新增

在URL输入shell.php的地址,并且在冰蝎中,然后脚本类型选择php,再选择我们生成webshell时候选择的加密方式,最后点击保存。一个简单的建立连接成功了。

双击直接打开连接

哥斯拉(Godzilla) 

配置代理

生成webshell

将哥斯拉的webshell上传到服务器

Webshell连接

抓包分析

数据包通过base64编码

强特征:Cookie: PHPSESSID=erqjms95fqav97qa99euqiu1t6;     # cookies值多了分号;数据包长
弱特征:请求包
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
响应包
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

蚁剑(AntSword)

配置代理

之后bp开启截断即可。

抓包分析

接着我们打开BP拦截,使用蚁剑进行访问:

即可完成拦截,接着我们发送到重发器来进行查看:

将蚁剑请求包发送,观察响应包  经过观察即可发现,与wireshark抓到的一致,同样是回显路径、系统信息以及用户名称。

蚁剑的明显特征:

1、使用URL编解码;

2、每个数据包前面都会包含@ini_set("display_errors", "0");@set_time_limit(0);这两个语句;

3、响应包都是明文。


4. 文件上传无回显如何查找webshell地址

利用日志文件:检查Web服务器的日志文件,如Apache的access.log或error.log,以及Nginx的access.log等。这些日志文件通常会记录客户端的请求信息,包括请求的URL、请求的方法、客户端的IP地址等。通过分析这些日志,可能可以发现与Webshell相关的请求或异常行为。

使用Webshell扫描工具:利用专门的Webshell扫描工具(如D盾、河马等)对网站进行扫描。这些工具能够检测并定位到Webshell文件,即使它们被隐藏在网站目录的深处或使用了复杂的文件名。

审查网站源代码和配置文件:如果可能的话,直接审查网站的源代码和配置文件。特别是那些与文件上传、文件包含、数据库操作等相关的代码和配置文件。通过搜索特定的函数、关键字或文件类型(如.php、.asp等),可能会发现Webshell的存在。

利用搜索引擎:如果Webshell文件已经被搜索引擎索引,可以尝试使用搜索引擎的site:操作符来搜索网站上的特定文件或内容。例如,可以搜索“site:yourwebsite.com *.php”来查找网站上的所有PHP文件。


5. upload-labs靶场通关第6-第10关

PASS-06(大小写绕过上传)

有些程序编写上传点过滤时会过滤常见后缀(黑名单),如php/asp/aspx/jsp/phtml等,如果为对上传后缀进行小写转换,那么我们即可通过文件后缀名大小写方式进行绕过上传webshell。

查看源码,发现,定义了一个数组,数组中$deny_ext函数将许多文件后缀都过滤了,包括我们之前提到的.htaccess、.ini。但是仔细观察,发现有“pHp”等,没有“Php”等,大小写不全,由于Windows对大小写的校验不严格,所以我们可以利用这个缺陷进行过关。

创建文件:shell.PHp

 上传文件shell.PHp

右键查看图片,打开网页。 http://127.0.0.1/BC/upload-labs-master/upload/202308010651509134.PHp

PASS-07(Windows特性绕过-[" "] 空格绕过)

利用window对于文件和文件名的限制,以上字符放在结尾时,不符合操作系统的命名规范,在最后生成文件时,字符会被自动去除。

正常我们保存文件时,如果在“shell.jpg.”后面加一个“.”,会被过滤掉这个点,空格也是一样。

上传文件,抓包。在shell.php后加空格。

右键查看图片,打开网页。

http://127.0.0.1/BC/upload-labs-master/upload/202308010653593761.php

解析成功

PASS-08(Windows特性绕过-["."] 点绕过)

与pass-07关原理相同。上传文件,抓包。在shell.php后加点。

右键查看图片,打开网页。

http://127.0.0.1/BC/upload-labs-master/upload/shell.php.

解析成功

PASS-09(NTFS流::$DATA绕过)

::$DATA 表示文件的默认数据流,在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当 成文件流处理,上传时将一个有害文件的文件名改为 evil.php::$DATA 。此时,Windows 将会忽略后缀 .php ,而使用 ::$DATA 后缀,从而绕过服务器端的文件类型检测,成功上传恶意文件到服务器端。

 上传文件,抓包。在shell.php后加::$DATA。

右键查看图片,打开网页。

解析成功!

PASS-10:([". ."] 点空格点绕过)

上传文件,抓包。在shell.php后加点空格点

原理与07,08关相同。

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值