什么是二进制类web系统
二进制Web类系统是指通过编译后的二进制文件来提供Web服务的系统。这些系统通常用C、C++等编译型语言开发,并在部署时以二进制格式运行.
常见二进制类web系统有哪些及其特点
除了常见的Nginx、Apache、Tomcat这些非常流行的中间件,文主要指Go-based Web Servers (如Caddy, Traefik)和Lighttpd这类广泛应用于网络或物联设备对外提供给web服务的容器.这些web服务容器都有如下两点:
高性能
二进制Web服务器通常具有较高的性能,因为它们直接编译为机器码,可以更高效地利用系统资源.
低资源占用
相对于解释型语言实现的Web服务器,二进制Web服务器的资源占用通常更低。例如,Lighttpd以其低内存占用著称,适用于资源受限的环境.
审计重点
命令执行
-
函数调用
system()exec*()系列 (execl(),execle(),execlp(),execv(),execve(),execvp(),execvpe())popen()shell_exec()passthru()proc_open()pcntl_exec()eval()(如果存在 PHP 代码注入风险)backticks ()
-
系统调用
fork()vfork()clone()
-
系统函数
open(),read(),write(),close()fopen(),fread(),fwrite(),fclose()
-
外部命令执行
os.system()(在 Python 中)subprocess.Popen(),subprocess.call()(在 Python 中)Runtime.getRuntime().exec()(在 Java 中)
文件操作
-
文件上传
- 处理文件上传的接口,如
move_uploaded_file()(PHP),copy(),rename()等。 - 检查文件类型和大小的地方。
- 处理文件上传的接口,如
-
文件下载
- 提供文件下载功能的接口,如
readfile()(PHP),fopen()等。 - 设置 HTTP 头部信息,如
Content-Disposition,Content-Type等。
- 提供文件下载功能的接口,如
-
文件读取
fopen(),fread(),file_get_contents(),include(),require()(PHP)。open(),read(),fread()等 C 语言函数。os.read(),os.open()(在 Python 中)。
-
文件写入
fopen(),fwrite(),file_put_contents()(PHP)。open(),write(),fprintf()等 C 语言函数。os.write(),os.open()(在 Python 中)。
-
文件删除
unlink(),rm(PHP)。remove(),unlink()等 C 语言函数。os.remove(),os.unlink()(在 Python 中)。
额外需要注意的点
-
环境变量
- 可能包含敏感信息或用于控制命令执行的变量。
-
动态链接库
dlopen(),可能用于加载动态链接库。
-
网络操作
- 任何与网络通信相关的接口,如
socket(),connect(),send(),recv()等。
- 任何与网络通信相关的接口,如
-
其他系统交互
- 与其他系统交互的接口,如
dlsym()(动态符号解析),syscall()(直接系统调用)等。
- 与其他系统交互的接口,如

