«

二进制类web系统审计重点

admin 发布于 阅读:235 技术文章


什么是二进制类web系统

二进制Web类系统是指通过编译后的二进制文件来提供Web服务的系统。这些系统通常用C、C++等编译型语言开发,并在部署时以二进制格式运行.

常见二进制类web系统有哪些及其特点

除了常见的Nginx、Apache、Tomcat这些非常流行的中间件,文主要指Go-based Web Servers (如Caddy, Traefik)和Lighttpd这类广泛应用于网络或物联设备对外提供给web服务的容器.这些web服务容器都有如下两点:

高性能

二进制Web服务器通常具有较高的性能,因为它们直接编译为机器码,可以更高效地利用系统资源.

低资源占用

相对于解释型语言实现的Web服务器,二进制Web服务器的资源占用通常更低。例如,Lighttpd以其低内存占用著称,适用于资源受限的环境.

审计重点

命令执行

  1. 函数调用

    • system()
    • exec*() 系列 (execl(), execle(), execlp(), execv(), execve(), execvp(), execvpe())
    • popen()
    • shell_exec()
    • passthru()
    • proc_open()
    • pcntl_exec()
    • eval() (如果存在 PHP 代码注入风险)
    • backticks ()
  2. 系统调用

    • fork()
    • vfork()
    • clone()
  3. 系统函数

    • open(), read(), write(), close()
    • fopen(), fread(), fwrite(), fclose()
  4. 外部命令执行

    • os.system() (在 Python 中)
    • subprocess.Popen(), subprocess.call() (在 Python 中)
    • Runtime.getRuntime().exec() (在 Java 中)

文件操作

  1. 文件上传

    • 处理文件上传的接口,如 move_uploaded_file()(PHP),copy()rename()等。
    • 检查文件类型和大小的地方。
  2. 文件下载

    • 提供文件下载功能的接口,如 readfile()(PHP),fopen()等。
    • 设置 HTTP 头部信息,如 Content-DispositionContent-Type 等。
  3. 文件读取

    • fopen(), fread(), file_get_contents(), include(), require()(PHP)。
    • open(), read(), fread() 等 C 语言函数。
    • os.read(), os.open() (在 Python 中)。
  4. 文件写入

    • fopen(), fwrite(), file_put_contents()(PHP)。
    • open(), write(), fprintf() 等 C 语言函数。
    • os.write(), os.open() (在 Python 中)。
  5. 文件删除

    • unlink(), rm(PHP)。
    • remove(), unlink() 等 C 语言函数。
    • os.remove(), os.unlink() (在 Python 中)。

额外需要注意的点

  1. 环境变量

    • 可能包含敏感信息或用于控制命令执行的变量。
  2. 动态链接库

    • dlopen(),可能用于加载动态链接库。
  3. 网络操作

    • 任何与网络通信相关的接口,如 socket()connect()send()recv() 等。
  4. 其他系统交互

    • 与其他系统交互的接口,如 dlsym()(动态符号解析),syscall()(直接系统调用)等。

代码审计 技术


扫描二维码,在手机上阅读

推荐阅读: