靶机启动后,直接获得IP地址。
对靶机进行全端口扫描、服务扫描、版本扫描,发现22/SSH、80/HTTP、5000/HTTP、31337/TCP。
浏览5000/HTTP服务,猜测id参数存在SQLi漏洞,经确认不存在。
猜测id参数可被遍历导致未授权信息泄漏,经确认不存在。
搜索目标网站,发现6个用户名guest、jack、umang、jason、david、freddy。
使用6个用户名爆破22/SSH服务,未发现弱口令。hydra命令需要使用-u参数,详见《攻防靶场(32):两个爆破技巧 Funbox 7 EasyEnum》。
使用nc连接31337/TCP服务,发现需要输入帐号密码。手工爆破6个用户名的弱口令,最终使用guest:guest成功登录。
摸索发现open命令可以创建内容。
摸索发现open命令可以注入代码,例如注入XSS代码。
例如注入SSTI代码。
利用SSTI漏洞反弹shell,获得www-data用户权限。
uid是1000的saint用户存在计划任务,每3分钟会执行一次当前www-data用户没有read和write权限的/home/saint/.sync-data/syncer.py脚本。
在/opt/目录发现syncer.py和configuration.py脚本的编译文件,将其下载到Kali中。
反编译这两个脚本,获得源代码。
审计源代码,发现syncer.py脚本会通过configuration.py脚本读取/home/saint/和/tmp/目录中,名称由点号 . 分隔成3部分的配置文件:
第一部分是“日-月-年”格式的时间(最终会使用时间最新的一份),第二部分是字符“cofig”,第三部分是字符“json”。
配置文件的格式是json或dict。如果配置文件的key存在FTP,就会使用connectors.ftpcoon库的ftpcon方法,和FTP key的值去连接FTP。
否则如果配置文件的key存在SSH,就会使用connectors.sshcoon库的sshcon方法,和SSH key的值去连接SSH。
否则如果配置文件的key存在URL,就会使用connectors.utils库的sync方法,和URL、Output这俩key的值,将URL值的文件同步到Output值的文件。
该计划任务的属主是uid为1000的saint用户,那就构造一个时间最新的配置文件并上传到/tmp/目录,内容是将我们的SSH公钥文件(URL值的文件)同步到saint用户的authorized_keys文件(Output值的文件)。
然后再构造一个我们的SSH公钥文件(URL值的文件)。每隔3分钟,可以看到uid是1000的saint用户执行了计划任务。
使用SSH私钥文件登录22/SSH服务,获得saint用户权限。
saint用户能以root用户的权限执行adduser命令,但命令中不能含有sudo或admin字符。
众所周知,sudo用户组的用户,能以任意用户的权限执行任意命令。
既然adduser命令不能使用用户组名称,来创建sudo用户组的用户;那就使用用户组id,来创建sudo用户组的用户。
查看sudo用户组的id,是27。使用adduser命令创建用户组id是27的用户,成功获得sudo用户组的用户。
使用sudo用户组的用户,以root用户的权限执行返回shell的命令,获得root用户权限。
该靶机在2020年就制作完成,而以下漏洞在2021年才披露,因此以下解法纯属靶机作者意料之外。
使用linpeas发现pkexec程序存在CVE-2021-4034提权漏洞。
下载并执行EXP,获得root用户权限。
使用linpeas发现sudo程序存在CVE-2021-3156提权漏洞。
下载并执行EXP,获得root用户权限。
本文分享自 OneMoreThink 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!