《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN
5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect
1. 文件上传绕过 WAF 的手段
答案:
常见绕过方法包括:
-
Content-Type 修改:如将
application/php
改为image/jpeg
。 -
文件头伪造:在文件开头添加图片标识(如
GIF89a
)。 - 后缀名绕过:
-
大小写混淆(如
PhP
)。 -
双后缀(如
test.php.jpg
)。 -
空字节截断(如
test.php%00.jpg
)。
-
-
特殊解析漏洞:利用服务器解析特性(如 Apache 的
.htaccess
控制文件类型)。 -
分块传输编码(Chunked):通过畸形的 HTTP 请求绕过 WAF 检测。
2. 越权漏洞你了解么?
答案:
越权分为两类:
- 水平越权:同一权限用户访问他人资源。
-
例如:用户 A 通过修改 URL 中的 ID 访问用户 B 的数据(
/userinfo?id=2
)。
-
- 垂直越权:低权限用户执行高权限操作。
-
例如:普通用户通过篡改接口调用管理员功能(如删除用户)。
防御:对每次请求进行权限校验,避免依赖前端参数判断身份。
-
3. 聊一聊逻辑漏洞
答案:
逻辑漏洞是业务逻辑设计缺陷导致的漏洞,常见类型:
-
验证码绕过:验证码可重复使用或未绑定会话。
-
密码重置漏洞:通过修改参数(如
user_id
)重置他人密码。 -
条件竞争:并发请求绕过限制(如余额不足时多次提现)。
-
业务顺序绕过:未完成支付却生成订单。
案例:某平台优惠券领取未限制次数,导致可无限领取。
4. Shiro 反序列化漏洞原理
答案:
Shiro 的 rememberMe
功能将用户信息序列化后加密存储在 Cookie 中。漏洞成因:
-
硬编码密钥:Shiro 默认使用固定 AES 密钥(如
kPH+bIxk5D2deZiIxcaaaA==
)。 -
反序列化触发:攻击者构造恶意序列化数据,用泄露的密钥加密后发送,Shiro 解密后触发反序列化执行任意代码。
利用工具:Shiro-550(密钥泄露)、Shiro-721(Padding Oracle 攻击)。
5. Fastjson 反序列化漏洞原理
答案:
Fastjson 在解析 JSON 时通过 @type
指定类名,自动调用 setter/getter 方法。漏洞利用:
-
攻击者构造恶意 JSON,指定
@type
为com.sun.rowset.JdbcRowSetImpl
。 -
设置
dataSourceName
为恶意 JNDI 地址(如ldap://attacker.com/Exploit
)。 -
触发 JNDI 查询,加载远程恶意类,实现 RCE。
关键点:Fastjson 的autoType
特性未严格限制类名。
6 JdbcRowSetImpl 类的具体作用
答案:
JdbcRowSetImpl
是 JDBC 中用于封装数据库查询结果集的类。其 setDataSourceName()
和 setAutoCommit()
方法可触发 JNDI 查询。当 autoCommit
被设置为 true
时,会自动连接 dataSourceName
指定的地址,导致 JNDI 注入。
7. PHP 的 POP 链
答案:
POP(Property-Oriented Programming)链通过串联魔术方法构造利用链。
示例(Monolog 库漏洞):
-
入口点:
__destruct()
方法触发文件删除操作。 -
串联调用:通过
__toString()
方法调用其他对象的write()
方法。 -
最终执行:调用
file_put_contents()
写入 Webshell。
利用代码片段:
// 构造恶意对象链
$obj = new ExampleClass();
$obj->data = new AnotherClass();
$obj->data->callback = "system";
$obj->data->args = "id";