| 关键词: 文件 服务器 权限 漏洞 数据库 端口 脚本 攻击者 用户 |
我的一个朋友告诉我,他的网站上发现了一个 XSS 漏洞,他想让我深入看看。
我向他申请了正式的许可,这样我能在这个网站和服务器上做完整的渗透测试。 (注:这一步非常重要,注意法律风险) 为了保护隐私,我用这个地址来代替我朋友的网站 1、端口扫描第一步就是尽可能多地了解你的“敌人”,并且尽量不要惊动它们。 这次扫描花了大概两分钟。 扫描发现了很多开放的端口!通过 FTP(port 21) 和 SMB(ports 139/445),我们可以猜出这个服务器是用于保存文件和共享文件的。 与此同时,它还是一个 Web 服务器 (port 80/443 和相应的代理 8080/8081) 。 如果上面的信息不够,我可能还会做一个 UDP 端口的扫描。现在唯一允许我们与之交互的端口 (不需要登录服务器) 是 80/443。 没有浪费一点儿时间,我启动了 gobuster 来探索这个 Web 服务器上让我“感兴趣”的文件。与此同时,我也通过手工的方式开始挖掘。 ?复制代码 我发现 已经过去三分钟了,还没有发现有用的东西。 2、获取 Webshell浏览这个网站的时候,它需要我登录,没问题,用一个假的 e-mail 创建一个账户,点击确认邮件,几秒钟后就登录了。 这个网站对我的登录表示欢迎,提示我到个人主页去修改头像,很贴心嘛! 网站看起来像是自己开发的,要不要“试试不受限的文件上传”漏洞? 我迅速在本机生成了一个文件:
然后试着把它当作图像文件上传, 成功了! 为了避免这个漏洞,上传者一定要对上传的文件做处理,检查文件扩展名,把它替换成.jpeg、.jpg,这样可以避免远程代码执行。 当然,我上传的文件没有缩略图:
通过“复制图片地址”的功能,我得到了这个 URL ,在浏览器中运行一下:
哈哈,看起来我们已经有一个可以工作的 webshell 了。 这个 web 服务器居然运行着 Perl 脚本,我从我最喜欢的备忘录中找了一个 reverse shell 脚本,设置好了 IP 和端口,这样我就获得了一个低权限的 shell ——抱歉,没有屏幕截图。 大约 5 分钟以后,我获得了一个低权限的 shell。 3、拿下数据库让我十分惊奇的是,这个服务器不仅 host 一个 web 站点,而是 40 个!
你也许猜到了,我具备这些 web 站点目录读的权限,可以读任意的后端代码。 我把注意力集中到 执行这条命令: ?复制代码 我就以 root 权限登录了数据库。
仅仅 7 分钟, 我具备了对 35 个数据库完全的读写权限! 在这里,我有道德义务停下来,潜在的损害非常巨大。一个攻击者可以做这些事情:
该休息一下了,停止计时器。 4、还会有什么问题呢?我告诉朋友这些发现,获得进一步挖掘的许可。 在将权限升级到威力巨大的 root 之前,我先看看我这个有限权力的用户能访问哪些有趣的文件。 此时我想起来那个开放的 SMB 端口,这意味着系统中应该有个文件夹在用户之间共享,经过一番探索,我找到了这个目录 在这些目录中发现了大量的属于公司用户的敏感数据,包括:
攻击者就可以做这些事情:
这些目录花费了我不少时间,这个漏洞后果非常严重。 最后一击用 apache 这个账户在四周看了很久以后,我决定是时候去钓个大鱼了:获取 root 权限。 通常,操作系统是打过补丁的,只有那些配置错误的服务才有可能给你想要的 root 权限, 但是在现实的世界中,人们很少给操作系统打补丁! 这个服务器运行的是什么操作系统呢?
内核是什么版本? 看起来这是一个老版本!这个版本有个漏洞,叫 Dirty Cow,可以提升用户的访问权限。 网上有篇博客讲述了如何测试内核是否有这个漏洞,并且提供了一个脚本。 执行这个脚本,root 最终到手!
游戏结束了我立刻给朋友写了一封邮件,全面地告诉他这些渗透测试的细节和每一步的可能影响,然后结束了当晚的活动。 一个攻击者可以做的事情:
第二天,朋友联系了我,说他联系了负责那个服务器的公司,那个文件上传的漏洞已经 fix 了。 总结
本文转自码农翻身,英文原文: |
| 本文出处: https://www.infoq.cn/article/ikWq017ioX08C8NjGlj3?utm_source=tt |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|