目录
简介
该靶机较前面三个麻烦些, 需要新建虚拟机,将虚拟磁盘导入。但总的来说依旧很简单,通过SQL注入漏洞可以直接获得webshell,也可以利用获取到的用户名和密码获得普通用户shell,然后通过root用户和空口令登录mysql,利用UDF提升到root权限。
环境配置
从官网下载压缩文件,解压后发现只有vmdk文件(虚拟磁盘文件),没有vmdx文件,因此需要新建虚拟机,选择自定义模式,安装来源选择“稍后安装”,然后在客户机操作系统选择“其他”,如图:
然后选择位置为解压后放置vmdk文件的文件夹,名称自定义,如图:
出现提示后点“继续”,设置内存为512M,如图:
然后一路默认,在选择磁盘处选择“使用现有虚拟磁盘”,然后选择vmdk文件,如图:
出现提示后选择“保持现有格式”即可。
信息收集
探测目标主机IP地址,如图:
然后使用nmap快速扫描目标主机,发现开启22、80、139和445端口,OpenSSH版本为4.7p1,Apache版本为2.2.8,PHP版本为5.2.4-2,Samba版本为3.0.28a,操作系统大概率为Ubuntu,内核版本为2.6.X,如图:
然后访问80端口Web服务,发现是一个登录页面,如图:
尝试常见弱口令无果。
数据库文件
然后扫描网站目录,发现数据库文件database.sql,如图:
使用Google搜索Samba 3.0.28a已知漏洞,发现一些拒绝服务的漏洞。
漏洞发现
使用Nikto扫描Web服务漏洞,
使用searchsploit搜索Samba漏洞利用程序,如图:
SQL注入漏洞
查看数据库文件,如图:
手工测试登录页密码框发现存在SQL注入,且暴露了网站物理路径,如图:
在测试弱口令之后用sqlmap检测漏洞,同样发现SQL注入漏洞,如图:
漏洞利用
利用SQL注入获取members表下的用户名和密码,如图:
使用密码登录网站,如图:
查看当前数据库用户发现是root用户,然后使用--passwords选项获取数据库用户名和密码,发现root用户使用空密码,如图:
获得webshell
通过--os-shell选项直接获得webshell,如图:
获得普通用户shell
此外尝试使用获得的用户名和密码通过ssh进行登录也成功获得普通用户shell,如图:
发现两个用户都是一样的结果,权限都非常低。只能执行几个命令,如图:
受限shell逃逸
看着像lshell,但是不确定,总之是受限制的shell。然后搜索受限shell逃逸方法,发现可以利用echo命令进行逃逸:Spawning A TTY Shell-逃逸Linux各种Shell来执行命令。
执行echo os.system("/bin/bash")后成功逃逸出当前受限Shell,如图:
权限提升
查看内核版本,如图:
显然可以使用脏牛提权,尝试上传文件发现无法外连80端口,但是可以外连443端口,且该shell无法执行二进制文件,不存在gcc,因此无法通过内核提权。查看/etc/passwd文件发现john和robert用户默认使用kshell,如图:
另外还存在一个普通用户loneferret用户。查看开启的端口发现有3306,如图:
很自然想到的MySQL UDF提权,从前面SQL注入中获取到的信息发现数据库版本是5.0.12,但是在上传动态链接库后导出时出错。然而,在查看mysql数据库时很幸运发现已经存在func表,且表中含有执行命令的函数,如图:
尝试执行id命令,但返回信息为NULL,如图:
开启443端口监听,尝试使用函数执行命令访问443端口,如图:
说明命令执行成功。然后使用msfvenom生成反弹shell 的程序,上传到目标主机并执行,成功获取root权限。
总结
对该靶机来说,获得webshell和普通shell非常简单,提权时需要注意查看mysql数据库。