晚上在Hackernoon上看到这篇网站安全的文章,翻译一下,分享给大家。

作者:Georgios Konstantopoulos

翻译有删节和修改

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

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

(码农翻身注:这一步非常重要,注意法律风险)

为了保护隐私,我用http://example.com来代替我朋友的网站

端口扫描

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

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

这次扫描花了大概两分钟。

扫描发现了很多开放的端口!通过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也没有发现什么有价值的东西)

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

获取Webshell

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

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

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

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

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

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

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

通过“复制图片地址”的功能,我得到了这个URL:

http://www.example.com/admin/ftp/objects/XXXXXXXXXXXX.php

在浏览器中运行一下:

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

这个web服务器居然运行着Perl脚本,我从我最喜欢的备忘录中(

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet)找了一个reverse shell 脚本,设置好了IP和端口,这样我就获得了一个低权限的shell ——抱歉,没有屏幕截图。

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

拿下数据库

让我十分惊奇的是,这个服务器不仅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里留个后门

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

还会有什么问题呢?

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

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

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

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

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

  • Cookie sqlite files

  • 发票

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

  • Wifi的密码

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

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

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

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

最后一击 

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

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

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

内核是什么版本?

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

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

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

游戏结束了 

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

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

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

  • 植入一个持久的后门

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

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

  • 把这个服务器当作矿机

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

  • 把服务器当作C2C服务器

  • … (发挥你的想象力)

  • rm -rf / (不是在开玩笑)

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

总结 

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

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

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

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

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

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

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

    --记住给操作系统打补丁

原文地址:https://hackernoon.com/how-i-hacked-40-websites-in-7-minutes-5b4c28bc8824

如何在7分钟内黑掉40家网站?相关推荐

  1. 利用SAP 0day,四分钟内黑掉华尔街

    本文讲的是利用SAP 0day,四分钟内黑掉华尔街,2017年5月20日,由唯品会信息安全部主办,唯品会安全应急响应中心承办的"因唯安全,所以信赖--深度揭秘唯品会信息安全建设实践 2017 ...

  2. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点

    github创建静态页面 Static sites have become all the rage, and with good reason – they are blazingly fast a ...

  3. 如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

    作者 | 孙健波(天元) 来源|阿里巴巴云原生公众号 上个月,KubeVela 正式发布了, 作为一款简单易用且高度可扩展的应用管理平台与核心引擎,可以说是广大平台工程师用来构建自己的云原生 PaaS ...

  4. 服务器创建多个dhcp服务_如何在15分钟内创建无服务器服务

    服务器创建多个dhcp服务 by Charlee Li 通过李李 如何在15分钟内创建无服务器服务 (How to create a serverless service in 15 minutes) ...

  5. 如何在10分钟内构建交互式HTML5广告

    本文出生地传送门→→→→→如何在10分钟内构建交互式HTML5广告---静华网-一个有气质的网站 随着Flash的消亡,交互式广告的责任被传递给了HTML5.在这里,我们将学习如何在短短10分钟内建立 ...

  6. 如何在1分钟内CSDN收益1000万,走上人生巅峰?!

    事情的起因源于前几日CSDN专栏作者群中有位同志自曝收益:426584.46元(不用数了42万+,未证实是否属实),瞬间刷屏. 那么作为一位普通的技术分享者,是否有机会利用开源项目短时间内赢取白富美. ...

  7. 以太坊区块链同步_以太坊69:如何在10分钟内建立完全同步的区块链节点

    以太坊区块链同步 by Lukas Lukac 卢卡斯·卢卡奇(Lukas Lukac) Ethereu M 69:如何在10分钟内建立完全同步的区块链节点 (Ethereum 69: how to ...

  8. es6 ... 添加属性_如何在10分钟内免费将HTTPS添加到您的网站,以及为什么您现在不止需要这样做......

    es6 ... 添加属性 by Ayo Isaiah 通过Ayo Isaiah 如何在10分钟内免费将HTTPS添加到您的网站,以及为什么现在比以往更需要这样做 (How to add HTTPS t ...

  9. javascript创建类_如何在10分钟内使用JavaScript创建费用管理器

    javascript创建类 by Per Harald Borgen 通过Per Harald Borgen 如何在10分钟内使用JavaScript创建费用管理器 (How to create an ...

最新文章

  1. spring cloud-zuul的Filter详解
  2. LeetCode-基础动态规划-70. 爬楼梯
  3. Centos6.8 rsync 客户端安装与设置
  4. P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
  5. Go Little Book - 第三章 - 字典 ,数组和切片
  6. MySQL数据库事务及其特性
  7. msyql之解决mysql出现ERROR 1698 (28000): Access denied的问题
  8. 2020蓝桥杯省内模拟赛C++B组1-8(详细解析,看完就会)
  9. 【springmvc】springmvc基本知识
  10. linux命令查bin中所有变量名,Linux--文件查找命令
  11. 使用DPM2007来保护企业数据
  12. 如何在手机浏览器中实现条形码/QR码扫描
  13. JavaScript中怪异现象true和false
  14. PTA 乙级 1002 写出这个数 (20 分) C++
  15. 大学生活这样过,等着 Offer 飞来找 | 程序员有话说
  16. 注册网站域名多少钱_网站域名注册要多少钱?申请一个域名要多少钱呢?
  17. Android开发、adb、monkey测试
  18. 单片机的两个外围电路:复位电路和时钟电路
  19. [LnOI2019]长脖子鹿省选模拟赛 东京夏日相会
  20. 指针p++与p+1的区别

热门文章

  1. GraphQL 学习
  2. 用VuePress来搭建一个极简的静态网站
  3. Unity,WebGL, 页面JS调用Unity方法
  4. 开发自己的区块链基础功能篇
  5. security NO.2
  6. hdu 6034 B - Balala Power! 贪心
  7. poj2104(划分树模板)
  8. (转载)Android进阶2之Activity之间数据交流(onActivityResult的用法)
  9. 【机器学习】改善LBP特征提高SVM的可分性的经验总结(一)
  10. 创建多级目录函数MakeSureDirectoryPathExists()所需头文件