Sink 点总结

GinTvT 发布于 2024-08-24 44 次阅读 未分类 预计阅读时间: 3 分钟


任意代码执行

  • eval() —— 直接执行字符串
  • assert() —— PHP7前可执行代码(PHP7之后默认只判断真假,但部分场景下仍可利用)
  • call_user_func() / call_user_func_array() —— 间接调用任意函数,可控函数名即为RCE
  • preg_replace('/pattern/e', ...)(过时)—— 带 /e 修饰符的正则表达式执行(PHP5)

系统命令执行

  • pcntl_exec() —— 进程控制,执行命令
  • exec() —— 执行命令,返回最后一行结果
  • passthru() —— 直接输出命令执行的原始结果
  • popen() —— 打开一个进程管道
  • shell_exec() —— 直接返回完整命令执行输出
  • system() —— 执行命令,输出结果,并返回最后一行
  • proc_open() —— 打开一个进程并能控制输入输出
  • backticks`` ``(反引号执行) —— 等价于 shell_exec

Magic 函数触发点

  • __construct() —— 类实例化时自动调用
  • __destruct() —— 对象销毁时(如页面执行完毕或手动unset)自动调用(常用于POP链出口
  • __call() —— 调用未定义对象方法
  • __callStatic() —— 调用未定义静态方法
  • __get() / __set() —— 操作不存在属性时触发
  • __isset() / __unset() —— 判断/删除不存在属性时触发
  • __sleep() —— serialize时调用,可控制序列化字段
  • __wakeup() —— unserialize时调用(⚡ 重要反序列化点)
  • __toString() —— 对象转字符串时调用(如echo打印)
  • __invoke() —— 将对象当作函数调用时触发
  • __set_state() —— var_export 导出后再恢复时触发
  • __clone() —— clone对象时触发
  • __debugInfo() —— var_dump 时返回自定义调试信息

文件相关敏感函数

  • move_uploaded_file() —— 上传文件移动,可能导致任意文件上传
  • file_put_contents() —— 写入内容到文件(任意写文件)
  • file_get_contents() —— 读文件(任意文件读取)
  • unlink() —— 删除文件
  • fopen() / fgets() —— 打开文件,读取内容

SSRF 相关函数

  • file_get_contents() —— 远程/本地资源访问
  • fsockopen() —— TCP连接(可以打内网)
  • curl_exec() —— CURL库,最常见SSRF入口
  • fopen() —— 远程文件协议
  • readfile() —— 读取并直接输出文件内容

PS: SSRF不仅仅是能请求HTTP,能发TCP包、访问Unix socket也可以算(取决于协议)。

Phar 反序列化触发点(文件操作相关函数)

  • fileatime() / filectime() / filemtime()
  • stat() / fileinode() / fileowner() / filegroup() / fileperms()
  • file() / file_get_contents() / readfile() / fopen()
  • file_exists() / is_dir() / is_file() / is_link() / is_readable() / is_writable()
  • parse_ini_file()
  • unlink()
  • copy()
  • exif_*() 系列(如 exif_thumbnail()
  • gd 图像处理相关(如 imagecreatefromjpeg()
  • hash_file() / hash_hmac_file() / md5_file() / sha1_file()
  • getimagesize() / getimagesizefromstring()
  • get_meta_tags() / get_headers()

简单理解

只要文件函数需要读取文件meta信息/内容,很可能触发phar伪协议反序列化。


原生类利用(gadget类)

  • XSS
    • Error
    • Exception
  • SSRF
    • SoapClient(初始化即请求远程)
  • open_basedir 绕过
    • DirectoryIterator + glob://(配合协议)
  • XXE
    • SimpleXMLElement
    • DOMDocument
    • XMLReader

此作者没有提供个人介绍。
最后更新于 2025-04-27