靶机名称:ICA: 1[1]
参考文章:大余每日一攻防ICA: 1(八)
实战思路:
1.主机发现
2.端口发现(服务、组件)
3.漏洞发现(获取权限)
a.22端口/ssh服务
i.组件漏洞
ii.弱口令漏洞
b.80端口/http服务
i.组件漏洞
ii.URL发现(目录、文件)
iii.信息泄露
c.3306端口/mysql服务
i.组件漏洞
ii.口令泄露
4.提升权限
a.sudo
b.perm
一、主机发现
启动虚拟机,直接就获得了主机的IP地址。
二、端口发现(服务、组件)
使用命令sudo nmap 10.58.81.114 -n -Pn -p- --reason -sV -sC -O
获得主机开放的端口、提供的服务、使用的组件、组件的版本。
开放的端口 |
提供的服务 |
使用的组件 |
组件的版本 |
22/tcp |
ssh |
OpenSSH |
8.4p1 Debian 5 |
80/tcp |
http |
Apache |
httpd 2.4.48 |
3306/tcp |
mysql |
MySQL |
8.0.26 |
33060/tcm |
- |
- |
- |
- |
os |
Debian Linux |
4.15 - 5.6 |
三、漏洞发现(获取权限)
22端口/ssh服务
组件漏洞
使用命令searchsploit OpensSH
,未发现OpenSSH 8.4p1组件的Nday漏洞。
弱口令漏洞
使用命令hydra -C10.58.81.114 ssh
,通过字典/usr/share/seclists/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt
和/usr/share/wordlists/legion/ssh-betterdefaultpasslist.txt
,未发现弱口令漏洞。
80端口/http服务
组件漏洞
01、使用命令searchsploit Apache | grep "2.4."
和searchsploit Apache | grep -i httpd
,未发现组件Apache httpd 2.4.48的Nday漏洞。
02、使用Wappalyzer、WahtRuns、BuiltWith、WhatWeb识别网站组件,没啥收获,倒是直接访问网站首页,发现组件qdPM 9.2。
使用命令searchsploit qdPM 9.2
,发现网站文件/core/config/databases.yml存在数据库口令泄露的Nday漏洞,从而获得数据库账号qdpmadmin、密码UcVQCMQk2STVeS6J。
URL发现(目录、文件)
01、访问首页http://10.58.81.114
,发现是后台登录页,看来可以尝试默认账号和口令爆破。但账号是邮箱,需要先获得邮箱后缀才能构造爆破账号,所以先尝试默认账号密码。
在 qdPM官网的Demo说明页面[2]发现默认管理员账号密码[email protected]/admin,以及一些Demo账号,经测试都无法登录。
说个题外话,qdPM官网的Demo页面[3]也是qdPM 9.2,不过已经修复了数据库口令泄露漏洞。
回到正题,假设用户沿用默认的管理员账户,只是修改了密码,尝试爆破口令,无收获。
02、使用命令dirb http://10.58.81.114 -R
对网站目录和文件进行爆破,发现/backups/目录、/uploads/目录、/core/config/目录、/robots.txt文件等可能存在信息泄露的目录或文件,均未发现有价值的信息。同时基于目前已知信息,没有对网站目录和文件进行FUZZ的必要。
信息泄露
前面翻找网站的流量全都走Burp Suite代理,在Burp Suite中未发现敏感信息泄露。
3306端口/mysql服务
组件漏洞
使用命令searchsploit MySQL 8.0
,未发现MySQL 8.0.26组件的Nday漏洞。
口令泄露
01、前面利用qdPM 9.2的Nday漏洞拿到的数据库账号qdpmadmin、密码UcVQCMQk2STVeS6J,可以成功登录mysql服务。
对数据库进行翻找,在staff库的user表和login表中,分别找到5个账号和5个密码。
不知道user表的id字段是和login表的id字段还是user_id字段对应,所以打混账号密码,形成25种组合,分别对ssh服务和http服务进行登录尝试。
由于5个账号都不像有root权限,所以没有对mysql服务进行登录尝试的必要。
02、ssh服务登录失败。
http服务登录失败。
03、将账号改成小写,再试一次。
ssh服务获得2个账号密码,可以成功登录。
http服务仍然登录失败。
四、提升权限
sudo
使用命令sudo -l
分别查看dexter和travis用户的特权命令,无收获。
perm
01、使用命令find / -perm -u=s 2>/dev/null
和find / -perm -g=s 2>/dev/null
查看特权程序,发现/opt/get_access程序不是系统命令。一般系统命令可利用的有find等,非系统命令是否可利用需逆向分析。
/opt/get_access程序的属主是root用户,普通用户执行该程序时,会以属主的权限即root权限执行。因此若能利用,则可提权获得root权限。
查看/opt/get_access程序,发现里面的命令cat /root/system.info
可以利用。如果伪造系统命令cat,里面包含提权命令,那么当普通用户执行/opt/get_access程序时,就会以属主的root权限执行假cat命令里的提权命令,从而让普通用户提权获得root权限。
02、首先是伪造假cat命令。通过命令echo /bin/sh > /tmp/cat
和chmod +x /tmp/cat
可以伪造假cat命令,通过执行假cat命令可以进入新的shell环境。但因为执行假cat命令的是普通用户dexter,所以新shell环境的权限还是dexter的普通权限。(备注:这里使用/bin/sh而不是/bin/bash作为新的shell环境,是为了让大家能够直观看到shell切换情况。)
03、然后是给假cat命令寻找执行环境。真cat命令是在/usr/bin/目录下,环境变量中更靠前的只有/usr/local/bin/目录了,但普通用户没有该目录的write权限,无法把假cat命令添加到该目录下。
那就创造一个吧,比如/tmp/目录。我们可以看到假cat命令在/tmp/目录添加到环境变量之前是不能直接执行的,添加之后就能直接执行了,这时假cat命令就取代真cat命令了。
04、因为/opt/get_access程序有suid权限,且属主是root用户,所以普通用户执行该程序时会以该程序的属主root用户的root权限执行。
因为/opt/get_access程序里的cat命令被替换成了返回shell环境的假cat命令,所以普通用户执行该程序时会以该程序的属主root用户的root权限返回shell环境,即提权。
参考资料
ICA: 1: https://www.vulnhub.com/entry/ica-1,748/
[2]qdPM官网的Demo说明页面: https://qdpm.net/qdpm-demo-free-project-management
[3]qdPM官网的Demo页面: https://qdpm.net/demo/9.2/
原文始发于微信公众号(OneMoreThink):靶机实战(2):ICA 1
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论