实战|记一次攻防演练之迂回技战法真实案例

科技   2024-09-15 15:05   重庆  

原文首发在:奇安信攻防社区

https://forum.butian.net/share/3703

开局一个登录框,目标这个样子,记为A,通过常规测试没有突破,从html中提取一些关键字,通过测绘平台搜一下,看能不能打同类型站点获取源码,然后审计出漏洞点。

搜索结果,我一般挑选云厂商的机子打,因为在云上的机器一般有多个站点可以打且防护做的不到位。

突破

又对A同类型站点测试后依然没有突破,挑选其中一个ip信息收集后,发现开放的站点B,如图

注入进入后台,可以直接上传webshell

然后把使用A的源码打包下载,本地审计后,通过 登录绕过+文件上传 组合拳成功拿下A的同类型测试站

曲折

然后去打目标A的时候发现了不对劲,对应的接口没有成功

回头重新看有什么细节不对

目标A登录包:

测试站登陆包:

在手上的源码里没有搜到 getPhoneByLoginName 这个接口,那就是目标A的版本与测试站的版本不同 ,白忙活 :(

重来

再次提取A的特征,重新通过测绘搜索同类型站点,这次就三个资产,再次信息收集,通过云主机ip的其他端口站点进行打点。

成功进来,但是这个byd站点很多,根本找不到哪一个网站是目标源码,而且是低权限+360

先提一下权

然后列一下开启的站点:C:\Windows\System32\inetsrv\appcmd list site,成功找到

然后打包源码,dnspy启动

审计后发现登录流程分为三步

  1. 通过用户名验证手机号是否存在

  2. 登录时需要手机验证码

  3. 通过 /Login/loginUser 再次验证用户

但是真正赋予登录session的是第三步

其中第三步本质还是通过验证账号密码,根本不需要手机验证码参与验证,也就是说只要知道账号和密码,就能无视验证码,直接构造/Login/loginUser对应的数据包即可。

但是账号密码我怎么知道,回过头看拿下的测试站,互联网上站点数量这么少并且机器上有很多站点,那么很有可能这个站点就是开发商的定制开发测试站,定制开发完交给客户,那么必有一定的测试文件以及数据库文件。

拿下

通过对目录的仔细翻找,成功找到与目标站有关系的信息,包含一个用户名与明文密码

甚至历史数据库

凭借这些信息,成功登录目标站

已经后台了,getshell轻轻松松

顺带一个waf后缀绕过

总结

通过 找源码->审计->未授权RCE 或 同系统站点->渗透测试->RCE->审计->未授权RCE 的迂回打法思路,在攻防演练中会有奇效。引用远海师傅的图:

转载于公众号亿人安全

HACK之道
HACK之道,专注于红队攻防、实战技巧、CTF比赛、安全开发、安全运维、安全架构等精华技术文章及渗透教程、安全工具的分享。
 最新文章