BuffEMR:1.0.1
原博客地址:https://www.cnblogs.com/upfine/p/17038454.html && https://www.cnblogs.com/sainet/p/15723598.html(内存太大懒得下)
项目地址:https://download.vulnhub.com/buffemr/BuffEMR-v1.0.1.ova
是一个打包好的镜像文件
注意:导入 ovf 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

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

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

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

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

RCE
OpenEMR 5.0.1.3(CVE-2018-15139)
用 searchsploit 搜索下 openemr 框架的漏洞信息,发现 openemr 框架的漏洞基本和框架的版本信息有关,那就在 Web 界面找下框架的版本信息,发现是:v5.0.1 (3)

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

利用 php/webapps/45161.py 脚本获取 Shell 权限,但是此脚本存在一点问题需要进行修改,修改前后如下
中间的加密的字符是自己对反弹 Shell 的语句进行的 base64.b64encode() 加密,加密脚本如下
1 | # 下面是修改前的 |
提权
敏感信息泄露
在 var 目录下发现一个 user.zip 文件,将该文件下载下来
但是在解压 user.zip 文件的时需要密码,前面 FTP 服务在 openemr\sql 目录下的 keys.sql 文件中找到
1 | INSERT into ENCKEY (id, name, enckey) VALUES (1, "pdfkey", "c2FuM25jcnlwdDNkCg=="); |
尝试使用获得 c2FuM25jcnlwdDNkCg== 进行解密,解密成功,获得 user.lst 文件,文件信息是一组账户信息:buffemr/Iamgr00t
SSH 直接连接即可

SUID 提权
通过 find / -perm -4000 -type f 2>/dev/null,来查找可疑文件,发现 dontexecute 文件

缓冲区溢出
这个文件存在缓冲区溢出漏洞,原因是 strcpy() 函数的问题

先填充 1000 个字符让程序崩溃,记住崩溃的位置

计算一下偏移量

要植入的 Shell 是 53 字节,所以最终填充的垃圾数据是 512 - 53 = 459
1 | $(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"') |
提权成功
