10-反序列化漏洞
PHP 类与对象
类:一个共享相同结构和行为的对象的集合
对象:类的实例
PHP Magic 函数
魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
Remote Code/Command Execute, RCE
危害:
命令 command 注入
| 函数 | 作用 |
|---|---|
| system () | 执行外部程序并显示输出 |
| exec (), shell_exec () | 通过 shell 环境执行命令,并将完整的输出返回为字符串 |
| pcntl_exec () | 在当前进程空间执行指定程序 |
| passthru () | 执行外部程序并显示原始输出 |
| popen () | 打开进程文件指针 |
| proc_open () | 执行一个命令,并打开用来输入/输出的文件指针 |
XML: eXtensible Markup Language, 可扩展标记语言
用作配置文件,交换数据
XML 格式要求:
XML 格式校验:
DTD: Document Type Definition, 文档类型定义
内部实体 internal entity
外部实体 external entity
如果 Web 应用的脚本代码没有限制 XML 引入外部实体,会导致用户可以插入外部实体,其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
无回显利用:
DNSLog, http 接口参数写入文件
php curl 扩展:
获取网页资源,爬虫
webservice, 获取接口数据
FTP, 下载文件
php.ini extension=php_curl.dll
SSRF: Server-Side Request Forgery, 服务端请求伪造,由攻击者构造形成由服务端发起请求的一种安全漏洞。
危害:
可能导致 SSRF 漏洞的函数:
curl_exec (): 执行 cURL 会话
file_get_contents (): 将整个文件读入为一个字符串
fsockopen (): 打开一个网络连接或一个 Unix 套接字连接
目录遍历漏洞/文件任意访问漏洞
通过接口动态包含
可用于包含恶意代码或图片马
包含敏感文件
| 漏洞 | 描述 | 原因 | 后果 |
|---|---|---|---|
| XXE | XML 外部实体注入 | 使用 XML 传输数据,并且允许解析外部实体 | 导致访问敏感文件,探测端口,执行系统命令等 |
| SSRF | 服务顿请求伪造 | 使用了 curl_exec () 之类的函数 | 导致端口扫描,攻击内网主机,绕过防火墙,获取敏感信息,访问大文件造成内存溢出,操作 Redis 等问题 |
| RFI | 远程文件包含 | 使用了 include | 导致任意文件访问,包含 shell 代码 |
需要配置 php.ini:
allow_url_fopen=On
allow_url_include=On
代码短,只有一行代码。
应用场景多,可以单独生成文件,也可以插入到图片中。
安全性高,隐匿性强,可以变形免杀。
体积小,功能少,只有文件上传功能。
体积大,功能全,能够管理数据库、文件管理、对站点进行快速信息收集,甚至能够提权。
中国菜刀,中国蚁剑,weevely, godzilla, behinder
CSRF (XSRF): Cross-Site Request Forgery, 跨站请求伪造
典型案例:Gmail CSRF 漏洞设置邮件转发,Weibo CSRF 漏洞自动关注账号。
Burp Suite
CSRF Tester
github.com/s0md3v/Bolt
区分请求来自自己的前端页面还是第三方网站
或让自己的前端页面的请求与伪造请求不一样
HTTP Request Header: Referer: 引用页,来源页面,用于跟踪来源,如访问统计和广告效果
客户端的 Cookie: 记录登录状态,跟踪用户行为
服务端的 Session
获取和设置:
document.cookie; |
无法删除,只能通过更改过期时间删除。
<script>alert(1)</script> |
union 查询需要前后语句查询字段数量相同
order by 字段名/数字
information_schema 库:信息数据库,保存关于 MySQL 服务器维护的所有其他水库的信息
performance_schema 库:数据库服务器性能参数
mysql 库:核心数据库,存储数据库的用户(账户)信息
sys 库:系统数据库,结合了 information_schema 和 performance_schema 库的内容
子域名挖掘:
选取模型为SenseVoiceSmall.
开始运行前首先需要将模型转换为 OpenVINO IR 格式. 原模型为 PyTorch 框架, 可以利用以下代码保存为 ONNX 格式.
onnx_model = onnx.load(model_path) |
也可以直接下载 FunASR 官方提供的SenseVoiceSmall-onnx模型. 准备好 ONNX 格式模型后, 可以利用 OpenVINO 提供的mo或ovc工具将其转换为 OpenVINO IR 格式. 在最新的 OpenVINO 版本中, mo工具已经被更简化的OpenVINO Model Converter即ovc工具所替代.
mo --input_model <INPUT_MODEL>.onnx |
此命令会将模型优化并导出为 OpenVINO IR 格式模型. 注意, --compress_to_fp16默认处于开启状态, 会将模型压缩至 fp16 精度, 正常情况下不会导致明显的精度损失.
可以通过如下代码加载并编译 OpenVINO IR 模型.