Aploium Blog

Cold code, warm soul.

@Aploium8月前

06/10
11:51
安全

利用gzip文件头中的OS位来判断服务器操作系统

gzip文件格式中有一个有趣的记录了当前操作系统的OS位:

offset:9 length:1 byte OS type
2 bytes optional part number (second part=1)

(完整参考: http://www.onicos.com/staff/iz/formats/gzip.html)

而gzip被广泛地应用于http中,  服务器响应的gzip原始内容中包含这个OS位, 所以可以根据它来判断web服务器的操作系统

例如 windows: (来源页面: https://login.live.com/)

gzip头中的OS 位是0x00, 表示服务器的系统是windows

非零的extra_flags 不知道是表示什么意思

 

以及linux (ubuntu 16.04 apache 2.4.18)

gzip头中的OS 位是0x03, 表示服务器的系统是unix(linux)

 

但是也存在不准确的情况下, 例如 apache(XAMPP) on windows, 尽管是windows, OS位也会被设置成0x03(UNIX)

 

这种方式的实际可用性还有待验证, 但是个人感觉还是挺不错的.

在web指纹识别的时候可以作为备用手段判断目标服务器的操作系统

 

同时, 除了OS位以外, 其他位可能也会包含有用的信息

例如七牛CDN (栗子文件链接 https://o5o245x8j.qnssl.com/ctt/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css  本站的一个静态文件)

它的OS位是0xFF (UNKNOWN), 但是modification_time是一个非常迷的值(2042/7/14 9:4:0)

o(╯□╰)o

 

此文章还有待更新细节

 

利用gzip文件头中的OS位来判断服务器操作系统