端口扫描
这里经验判断可以猜测10000端口是webmin,可以用web页面来管理服务器,并且能执行系统命令,有密码可以进去直接写反弹shell。
这里学习到了一个点,webmin是一个perl语言写的框架,并且perl语言的执行文件后缀是cgi
详细信息扫描
这里也可以看到10000就是webmin
漏洞发现
这里利用nmap自带vuln脚本可以进行简单的漏扫,可以看到在webmin这里扫到一个漏洞
是一个文件读取漏洞,具体信息看第一个链接,部分代码如下。
$z = "/..%01";
for ($i=0;$i<60;$i++) {
$z.="/..%01";
}
$target = $http."://".$host.":".$port."/unauthenticated".$z."/".$file."";
可以看到这里是请求/unauthenticated这个目录,然后以/..%01/..%01/的形式去绕过../
漏洞利用
可以看到存在包含漏洞,且我们的权限很高,可以读取shadow文件
这里我没有留意,属于是长记性。一般网站权限以apache为例,运行时多以www-data这个用户来执行系统命令,对于这个网站用户来说权限不算特别高。而我们能读取shadow这个文件说明了用户的权限是非常高的,且很有可能是root。以后做题时候要注意。
unshadow二和一以后john去爆破
可以得到一组密码 /vmware/h4ckm3
提权
这里ssh链接要指定参数-oHostKeyAlgorithms=ssh-rsa,ssh-dss
进入内网后照常三步走,suid,uname,/home都没有找到明显可利用点。那么就尝试去找数据库文件。我的思路到这里就断了。
就像前文提到的,我没有注意webmin是root目录,于是去看了别人的wp
那么到这里我们起始就可以建立一个思路了
既然webmin是root权限运行,那么我们如果能在webmin下触发一个反弹shell就可以得到root权限,而webmin是有文件包含漏洞的,我们这边也有一个系统权限,可以得到全部的系统路径。所以我们的思路就是在系统可写的地方写一个反弹shell,然后利用webmin去包含这个文件来出发反弹shell。
此外还提到了,webmin是一个perl语言编写的架构,perl语言的执行文件是cgi。那么我们就可以在可写处添加一个cgi的反弹shell,然后回到webmin去包含这个文件。
这里可以用kali自带的webshell,在/usr/share/webshell/perl下
这里选第二个即可,然后将后缀改为cgi,放到可以写的目录。
去webmin包含
这里注意修改脚本的ip,默认是127.0.0.1
总结
本次靶机整体难度算简单,但是对于webmin这个组件不熟悉,且对于网站运行权限不敏感导致导致最后没有做出来。今天回去以后学习一下webmin这个组件,并补充一些linux运行权限的知识。
其他漏洞
这里在访问index1这个文件这里可以看到爆出了php include错误,这个是因为php配置中打开了dispaly_error,这个选项在开发调试中可以很好的帮助我们发现错误,但是在项目上线后如果没有及时关闭那么就可能出现敏感信息泄露。
这里在connec这个参数处存在文件包含,不过我比较纳闷为啥www也是root所有者,但是读不了shadow呢?