Ap Blog

Cold code, warm soul.

@Aploium2年前

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位来判断服务器操作系统

@Aploium2年前

02/13
14:56
安全

几个避免SSH监听公网的思路

通常情况下, SSH监听外网, 改SSH端口能避免一些扫描器, 但是对于刻意的扫描还是能被找到的.
不让SSH对外listen, 能降低攻击面, 但是需要不影响正常的SSH访问

几个思路:
0. 如果条件允许, 能仅对特定网段监听当然是最方便的
1. 使用SSH -R来获得反向SSH隧道, 但是实现要求和条件都很麻烦
2. 平时关闭SSH服务, 用另一个守护服务接受请求(最好是UDP)来按需调起SSH服务… //好蛋疼啊:(
3. 使用类似shootback或ngrok的反向TCP隧道把只对本地监听的SSH转发到别的服务器上, 用户再从那台服务器访问

主要说一下3 (因为前几天才重写了一遍shootback XD)

Read More →

几个避免SSH监听公网的思路