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字符

image-20240627110534196

HTML编码

&开头;结尾。

中间英文或者#后接十进制数或#x后接十六进制数。image-20240627110710381

JS编码

image-20240627110719051

解析顺序

浏览器解析:HTML文档被解析,生成DOM树和css样式表,遇到

博客在允许 JavaScript 运行的环境下浏览效果更佳