二进制类web系统审计重点
什么是二进制类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()
(直接系统调用)等。
- 与其他系统交互的接口,如
扫描二维码,在手机上阅读
推荐阅读: