免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

我是如何在 7 分钟内黑掉 40 家网站的?

  • 2019-12-27
  • 本文字数:2386 字

    阅读完需:约 8 分钟

我是如何在7分钟内黑掉40家网站的?


我的一个朋友告诉我,他的网站上发现了一个 XSS 漏洞,他想让我深入看看。


XSS,又称跨站脚本攻击 Cross-site scripting,它是一种安全漏洞。XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。


我向他申请了正式的许可,这样我能在这个网站和服务器上做完整的渗透测试。


注:这一步非常重要,注意法律风险


为了保护隐私,我用这个地址来代替我朋友的网站

1、端口扫描

第一步就是尽可能多地了解你的“敌人”,并且尽量不要惊动它们。


这时候,我开始启动计时器计时。



这次扫描花了大概两分钟


扫描发现了很多开放的端口!通过 FTP(port 21)和 SMB(ports 139/445),我们可以猜出这个服务器是用于保存文件和共享文件的。


与此同时,它还是一个 Web 服务器(port 80/443 和相应的代理 8080/8081) 。


如果上面的信息不够,我可能还会做一个 UDP 端口的扫描。现在唯一允许我们与之交互的端口(不需要登录服务器)是 80/443。


没有浪费一点儿时间,我启动了 gobuster 来探索这个 Web 服务器上让我“感兴趣”的文件。与此同时,我也通过手工的方式开始挖掘。


$gobuster -u http://example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 /admin  /login 
复制代码


我发现/admin这个路径对应这“管理工具”,通过认证的用户可以修改这个 web 服务器上的东西,由于我没有用户名和密码,在这里走不下去了。(剧透:gobuster 也没有发现什么有价值的东西)


已经过去三分钟了,还没有发现有用的东西。

2、获取 Webshell

浏览这个网站的时候,它需要我登录,没问题,用一个假的e-mail创建一个账户,点击确认邮件,几秒钟后就登录了。


这个网站对我的登录表示欢迎,提示我到个人主页去修改头像,很贴心嘛!


网站看起来像是自己开发的,要不要“试试不受限的文件上传”漏洞?


我迅速在本机生成了一个文件:



然后试着把它当作图像文件上传, 成功了!


为了避免这个漏洞,上传者一定要对上传的文件做处理,检查文件扩展名,把它替换成.jpeg、.jpg,这样可以避免远程代码执行。


当然,我上传的文件没有缩略图:



通过“复制图片地址”的功能,我得到了这个URL,在浏览器中运行一下:



哈哈,看起来我们已经有一个可以工作的 webshell 了。


这个 web 服务器居然运行着 Perl 脚本,我从我最喜欢的备忘录中找了一个reverse shell 脚本,设置好了 IP 和端口,这样我就获得了一个低权限的 shell ——抱歉,没有屏幕截图。


大约 5 分钟以后,我获得了一个低权限的 shell。

3、拿下数据库

让我十分惊奇的是,这个服务器不仅 host 一个 web 站点,而是 40 个!


$ ls /var/www access.log site1/ site2/ site3/ {… 更多的 sites}


你也许猜到了,我具备这些 web 站点目录读的权限,可以读任意的后端代码。


我把注意力集中到example.com的代码中,很明显,在cgi-admin/pages目录中,所有的 perl 脚本都是用 root 来连接 MySQL 数据库的,密码也是明文存放的, 我们假设它们是 root:pwned42


执行这条命令:


`mysql -u root -p -h localhost victimdbname 
Password: pwned42
复制代码


我就以 root 权限登录了数据库。



仅仅 7 分钟, 我具备了对 35 个数据库完全的读写权限!


在这里,我有道德义务停下来,潜在的损害非常巨大。一个攻击者可以做这些事情:


  • dump 这些数据库,这将导致 35 家公司的数据泄露。

  • 删除所有数据库。

  • 使用 cronjob 在 apache 里留个后门


该休息一下了,停止计时器。

4、还会有什么问题呢?

我告诉朋友这些发现,获得进一步挖掘的许可。


在将权限升级到威力巨大的 root 之前,我先看看我这个有限权力的用户能访问哪些有趣的文件。


此时我想起来那个开放的 SMB 端口,这意味着系统中应该有个文件夹在用户之间共享,经过一番探索,我找到了这个目录/home/samba/secured,里边的内容如下(请原谅为了隐私,我隐去了大量信息)



在这些目录中发现了大量的属于公司用户的敏感数据,包括:


  • .psd/.ai files (设计师应该知道这些文件多重要,这是它们的工作成果)

  • Cookie sqlite files

  • 发票

  • 盗版的电子书 (我看到这些的时候不由得笑了,谁说老外不看盗版?)

  • Wifi 密码


攻击者就可以做这些事情:


  • 到这些公司办公室的外边“露营”, 登录公司的内网,然后做各种各样有趣的、能在内网实施的攻击。

  • 把这些敏感数据泄露出去。


这些目录花费了我不少时间,这个漏洞后果非常严重。

最后一击

用 apache 这个账户在四周看了很久以后,我决定是时候去钓个大鱼了:获取 root 权限


通常,操作系统是打过补丁的,只有那些配置错误的服务才有可能给你想要的 root 权限, 但是在现实的世界中,人们很少给操作系统打补丁!


这个服务器运行的是什么操作系统呢?



内核是什么版本?



看起来这是一个老版本!这个版本有个漏洞,叫 Dirty Cow,可以提升用户的访问权限。



网上有篇博客讲述了如何测试内核是否有这个漏洞,并且提供了一个脚本。


执行这个脚本,root 最终到手!


游戏结束了

我立刻给朋友写了一封邮件,全面地告诉他这些渗透测试的细节和每一步的可能影响,然后结束了当晚的活动。


一个攻击者可以做的事情:


  • 读/写服务器上所有的文件

  • 植入一个持久的后门

  • 安装恶意软件,并且传播到内网

  • 安装勒索软件(劫持 35 家公司的数据库和相关数据可不是一件小事)

  • 把这个服务器当作矿机

  • 把服务器当作僵尸网络的一部分

  • 把服务器当作 C2C 服务器

  • … (发挥你的想象力)


第二天,朋友联系了我,说他联系了负责那个服务器的公司,那个文件上传的漏洞已经 fix 了。

总结

  • 有文件上传漏洞的 Web 应用可能导致黑客获得一个低权限的 shell

  • 要仔细设计文件上传组件

  • 明文的密码,让我们可以读写 35 个 Mysql 数据库

  • 所有的数据库都用同一种密码可不是什么好事情

  • 有很多的敏感数据可以阅读

  • 要小心地给用户分配文件访问权限,遵循最小权限原则

  • 内核的漏洞让我们获得了 root 权限,

  • 记住给操作系统打补丁


本文转自码农翻身,英文原文:


How I Hacked 40 Websites in 7 minutes


2019-12-27 08:005601

评论 1 条评论

发布
用户头像
厉害!
2019-12-27 22:28
回复
没有更多了
发现更多内容

重读《重构2》- 以对象取代基本类型

顿晓

重构 4月日更

全网最强的权限系统设计攻略:京东北极星商业系统权限管控实践

学Java关注我

Java 编程 程序员 架构 技术宅

【采访融云CTO杨攀:2021如何让融云迈向更高舞台】(采访)

洛神灬殇

融云 杨攀

禁止算法识别性别,能消解歧视吗?

脑极体

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

用户故事拆分招数全景图(译)

Bruce Talk

敏捷 译文 Agile User Story

今年我读了四个开源项目的源码,来分享下心得

yes

源码

HBase HA 分布式部署

Fong

大数据 运维 HBase hadoop3

Ansible 配置

耳东@Erdong

4月日更

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

《采访阿里“守护神”吴翰清:安全攻防-采访提纲》

Geek_6370d5

如何从零开始学Python:(4)如何处理列表数据?

广之巅

Python 4月日更

《专访彩食鲜CTO乔新亮:体系的重要性》(采访提纲)

花花

调查采访能力考核

没有自信的人,才会在意别人的评价

小天同学

心理 日常思考 个人感悟 4月日更 自信

架构实战营 模块2作业

CR

Properties类使用需要注意的坑

风翱

properties 4月日更

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

联盟链技术

360技术

Spring Boot 2.0 实现优雅停机

U+2647

Spring Boot 4月日更

翻译:《实用的Python编程》TheEnd

codists

Python

专访声网首席资深iOS研发工程师龚宇华:从自学计算机到高级架构师

黑马腾云

专访

Golang 并发

escray

学习 极客时间 Go 语言 4月日更

浅谈Javascript中的forEach和map之间的区别

devpoint

遍历 foreach map reduce

python内置数据结构list、set、dict、tuple(一)

若尘

List 数据结构 set 字典 Python编程

分库分表笔记

luojiahu

分库分表

用户故事是垂直的切片(译)

Bruce Talk

敏捷 译文 Agile User Story

不忘初心,砥砺前行|暨InfoQ写作平台一周年

程序员架构进阶

28天写作 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

为什么 Serverless 将推动边缘计算的革命

公众号:云原生Serverless

Serverless 边缘计算

专访吴翰清 || 如何用网络安全保障个人隐私

Bob

网络安全 个人隐私 调查采访能力考核

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

如何做好前馈管理?

石云升

28天写作 职场经验 管理经验 4月日更

我是如何在7分钟内黑掉40家网站的?_安全_Georgios_InfoQ精选文章