玄机-应急加固-医院脱库应急处理

登录账号密码:administrator/Zhoudi666
某医院系统疑似被攻击,攻击者常规手段获取到了后台账号密码,在此之前攻击者使用多个IP进行扫描,你作为安全服务工程师需要分析其流量包和日志来快速审计,每个IP的扫描特征并快速归类,并思考在常规渗透中,攻击者是怎么获取到的管理员密码进行登录的后台
此外除了已有需要提交的题目,你还需要做的是
根据桌面已有的工具进行分析
根据桌面已有的文档模板进行编写报告进行整个流程的梳理(后期给客户进行汇报)
修复出现的相关漏洞(无论使用任何方法),保证业务系统正常运行
看看系统中自己能不能挖出其他漏洞
注:思路仅供参考,学习举一反三
账号是administrator,密码是Zhoudi666

连接半天没连上,最后发现是windows主机而非linux主机


1.首次发起端口扫描的IP是

192.168.37.3

肉眼看就能看出来了,192.168.37.3​对192.168.37.2​的敏感端口进行扫描,且时间最早

image

或者使用过滤器筛出所有SYN 扫描尝试

1
tcp.flags.syn == 1 && tcp.flags.ack == 0

image

时间最早的就是192.168.37.3

2.审计流量和日志快速定位扫描次数最多的IP

192.168.37.3

不管是审计流量还是审计日志,都需要先找到一个特征值

特征值:对于被攻击方而言,漏扫常见的特征值为404 not found​或者是其他waf掉后的回显页面。

本题中,手动尝试去拼接一个不存在的文件,得到的结果为404 not found​,可以推测扫描次数多的ip必然存在大量的404 not found​回显。

审计流量:

使用zui​,统计所有ip请求后的状态码为404的次数

image

发现最多的是192.168.37.3


或者是使用wireshark也可以做到快速统计

统计​ -> 端点​ -> IPv4​ -> all address​进入统计页面,输入筛选条件:发起请求后得到的response​的status_code​为404​的

image


日志审计:

access.log​日志,也是批量筛选特征值404 not found​。写正则,统计次数


3.审计流量和日志快速定位扫描次数第二的IP

192.168.37.1

根据上题,得到答案为192.168.37.1


4.哪个IP使用了AWVS扫描器

192.168.37.1

Awvs在请求的Url,Headers, Body三项里随机包含了能代表自己的特征信息,且都包含字符串”acunetix”

wireshark​中筛选http​,后直接筛选字符串包含acunetix​的流量,发现ip​为192.168.37.1

image


5. 还有个IP也使用了扫描器进行主机+WEB扫描,提交其扫描次数(以wireshark数量为主)

4812

筛选进行syn扫描的流量并且ip不为192.168.37.3​和192.168.37.1

1
tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.addr != 192.168.37.3 && ip.addr != 192.168.37.1

image

得到ip为192.168.37.100​,且可以确定该ip进行了主机扫描

然后筛选192.168.37.100​发起的http​请求,且状态码为404的。

1
http && ip.addr == 192.168.37.100  && http.response.code == 404

image

发现大量请求,可以确定该ip进行web扫描。

题目要求提交扫描次数,统计一下源ip为192.168.37.100​,目的ip为192.168.37.2

1
ip.addr == 192.168.37.100 && ip.dst == 192.168.37.2

image

得到答案为4812


6. 运维人员发现有IP进行了WEB登录爆破,提交其IP

先找到登录路径,路径为login.php

image

统计,注意!!!在zui​中,内容被查询才可以被限定

例如:

1
count() by id.orig_h,uri,method | uri == "/login.php" | method == "POST"

image

但是没有查询,就限定,就查不到东西

image

发现192.168.37.87​访问了106次/login.php​,几乎就可以确定是这个ip进行web登录爆破了

192.168.37.87


7. 运维人员发现有IP进行了WEB登录爆破,提交其爆破次数

爆破次数为

1
http && ip.addr == 192.168.37.87 && http.request.method == POST && http.request.uri == "/login.php"

image

106

8. 运维发现数据库疑似被写入了垃圾用户(批量注册)请提交其IP

先找特征值,发现请求的路由为register.php

image

zui​里面筛选z

1
count() by id.orig_h,uri,method  | uri == "/register.php" | method == "POST" 

image

几乎可以确认批量注册的ip为192.168.37.177

192.168.37.177

9. 运维发现数据库疑似被写入了垃圾用户(批量注册)请提交注册成功数量

  1. 看流量,确定批量注册的ip
  2. 确定注册时间区间
  3. 注册开始时间以及特征开始算起,如果短时间,大批量的注册以及登录等相同的行为特征,那么可以判定为恶意用户

已知批量注册的ip为192.168.37.177​。

image

得到该ip首次注册时间为:

image

已知发起请求的后端文件为register.php​,发现插入数据库为users

image

在users表中看见,相匹配的时间点

image

筛选

1
select count(*) from users where created_at >= '2025-04-30 09:59:00';

image​本题较为简单,没有做任何混淆,账户名称都是按顺序来的。所以可以直接得出答案为57。


假设我批量注册成功的用户没有特征,就是随机乱码,那我该怎么确认这是个批量注册?又该怎么确认注册成功的数量啊?根据时间吗?那万一那个时间段就有正常用户注册呢?

按照时间区间配合IP,查询这段时间内注册的用户以及对应ip,统计这些IP配合情报平台来确定。假设攻击者使用代理池?那就需要结合其他特征来判断,例如存在恶意行为?登录后做了相同的明显的批量化操作的动作?


10. 请提交攻击者登录成功admin用户的IP及密码,以&连接

先找特征值

image

使用上方注册的用户账密尝试登录,zhangsan51:zhangsan123​,发现302​跳转到了index​页面

猜测admin​用户登录也存在302​跳转,在后端的login.php​文件中发现,重定向路径为admin/index.php

image

筛选admin/index.php​流量

1
http.request.uri == "/admin/index.php"

image

往前走一个流

image

由此可得,攻击者ip为192.168.37.200​,密码为zhoudi123

192.168.37.200&zhoudi123

11. 数据库疑似被脱库,你需要找到漏洞点,如漏洞文件

搜索到了该cms的默认配置文件,泄露了数据库账密,且存在密码复用。

但该系统的数据库只能本地连接,所以无法直接连接数据库。

查看192.168.37.200​的流量

1
count() by  uri,status_code,id.orig_h | status_code!=404 | id.orig_h == 192.168.37.200

image

其中有一个路由被请求了79​次,/admin/settings.php

筛选该路由

1
http.request.uri == "/admin/settings.php"

追踪tcp流,翻到

image

image

往下翻,都是。可以判定为sql注入

settings.php