web知识点
WEB 知识点
用来记一些知识点的概念
绕沙箱
- 检查所有进程id,无常见进程则不运行
- 查注册表反虚拟机
- IsDebuggerPresent反调试(非0则退出)
- 写入注册表开机启动
- raw+aes
- 系统服务
- 转移
防溯源
blogs/躲避检测/渗透测试中的身份隐藏.md at master · aplyc1a/blogs (github.com)
流量特征
cs shellcode
1、RWX(可读可写可执⾏)权限的内存空间
2、异或密钥固定,3.x 是 0x69,4.x 是 0x2e
3、命名管道名称字符串
\\.\pipe\MSSE-1676-server
%c%c%c%c%c%c%c%cMSSE-%d-sever
冰蝎
重点
1.0
- Content-Type: application/octet-stream
- Accpet头:application/xhtml+xmlapplication/xmlapplication/signed-exchange
2.0
- 动态秘钥
- 内置UA头
- AES+BASE64
- Content-Length: 16
3.0
默认密码 rebeyond
content-type application/octet-stream
Accept 头
application/xhtml+xmlapplication/xmlapplication/signed-exchange
4.0
- 默认密码rebeyond
- Accept : application/json, text/javascript, /; q=0.01 意思是浏览器可接受任何文件
- 大端口 长连接
1.0
1.Accpet 头 application/xhtml+xmlapplication/xmlapplication/signed-exchange
2.Content-Type: application/octet-stream
这是一个强特征,查阅资料可知 octet-stream 的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组),所以很少使用
2.0
1.使用 AES+base64,AES 使用动态秘钥进行加密。
2.请求的时候内置了十几个 UA 头,(导致频繁变化)
3.Content-Length: 16
3.0
在冰蝎中,任何请求,最终都会调用 Utils.getData 函数,对请求的参数加密。对于上传文件,命令执行来讲,加密的参数不定长。但是对于密钥交互,获取基本信息来讲,payload 都为定长,且无随机 padding。
1.固定链接秘钥
2.webshell 默认密码 rebeyond(md5(‘rebeyond’)[0:16]=e45e329feb5d925b)
3.连接 jsp 的数据包 content-type常见为 application/octet-stream
4.Accept 头 application/xhtml+xmlapplication/xmlapplication/signed-exchange
4.0
1.取消连接密码,自定义传输协议算法,默认连接密码 rebeyond (md5(‘rebeyond’)[0:16]=e45e329feb5d925b)
2.Accept 字段(弱特征)通常是: application/json, text/javascript, /; q=0.01 意思是浏览器可接受任何文件,但最倾向 application/json 和 text/javascript。
3.Content-Type 字段(弱特征),通常是 Content-type: Application/x-www-form-urlencoded
4.连接使用本地端口在 49700 左右(就是比较大的端口),每连接一次,每建立一次新的连接,端口就依次增加。
5.使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection:Keep-Alive
6.固定的请求头和响应头,请求字节头:dFAXQV1LORcHRQtLRlwMAhwFTAg/M ,响应字节头:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
哥斯拉
类似冰蝎 2.0 的密钥交换方式,webshell 动态生成
https://github.com/BeichenDream/Godzilla/releases
重点
- 请求包pass=”xxx”
- 响应包为 0
- md5 前十六位 +base64+md5 后十六位。
静态特征
在默认脚本编码的情况下,jsp 会出现 xc、pass 字符和 Java 反射(ClassLoader,getClass().getClassLoader()),base64 加解码等特征。
动态特征
1.Accept 字段(弱特征),默认是 Accept:text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
2.Cookie 中有一个非常关键的特征,最后会有个分号。估计后续的版本会修复。
3.响应体的数据有一定特征,哥斯拉会把一个 32 位的 md5 字符串按照一半拆分,分别放在 base64 编码的数据的前后两部分。整个响应包的结构体征为:md5 前十六位 +base64+md5 后十六位。
4.请求包长度 52541
5.以 pass=“xxxx”
开始请求包
6.请求包较长,响应包为 0
7.一个 tcp 包里面有三个 http
8.一共 6 个 http 报文,3 去 3 回
蚁剑
重点
- UA头 antsword xxx (在/modules/request.js中可修改)
- @ini_set(“displyad_errors”,”0”)
- _0x参数
静态特征
蚁剑中 php 使用 assert、eval 执行;asp 只有 eval 执行;在 jsp 使用的是 Java 类加载(ClassLoader),同时会带有 base64 编码解码等字符特征。
动态特征
1.我们使用一句话木马上传 webshell,抓包后会发现每个请求体都存在以 @ini_set("display_errors","0");@set_time_limit(0)
开头。
2.并且响应体的返回结果是 base64 编码发混淆字符,格式为:随机数 结果 随机数。
3.参数名大多以“_0x…..=”这种形式(下划线可替换为其他)所以,以_0x 开头的参数名,后面为加密数据的数据包也可识别为蚁剑的流量特征。
4.UA 头是 antsword xxx
菜刀
重点
- base64
- z0 z1参数
动态特征
1.payload 在请求体中,采用 url 编码 +base64 编码,payload 部分是明文传输。
2.payload 中有 eval 或 assert、base64_decode 这样的字符。
3.payload 中有默认固定的&z0=QGluaV9zZXQ…这样 base64 加密的攻击载荷
4.参数 z0 对应 $_POST[z0]
接收到的数据,且固定为 QGluaV9zZXQ 开头。
5.进行 base64 解码后可看到代码:@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);
这段意思是首先关闭报错和 magic_quotes,接下来去获取主机的信息。
web解析与编码
浏览器解析与编码顺序及xss挖掘绕过全汇总-腾讯云开发者社区-腾讯云 (tencent.com)
编码
url编码
%接ascil字符
HTML编码
&开头;结尾。
中间英文或者#后接十进制数或#x后接十六进制数。
JS编码
解析顺序
浏览器解析:HTML文档被解析,生成DOM树和css样式表,遇到