一、信息搜集
1、主机扫描
(1)扫描某个网段内存活的主机,可以使用御剑高速端口扫描器的ip范围查找,扫描端口的同时还能顺便将存活的ip地址查出来。
(2)扫描主机开放的端口和服务,更建议使用Nmap,虽然速度稍慢,但获取的信息更全面、准确。
(3)扫描主机的操作系统和版本号,同样可以使用Nmap,也可以使用Nessus。
(4)扫描主机可能存在的已知漏洞,结合Nmap与Nessus进行综合判断。
(5)常用工具:NMap、Nessus等。
2、Web扫描
(1)查询域名和子域名信息,可使用子域名挖掘机,目录扫描工具如dirsearch。
(2)查询whois信息,可通过多个在线站点进行查找。
(3)扫描Web应用的URL路径,使用dirsearch或dirb等工具,前提是拥有一份优质的字典。
(4)扫描Web应用后台管理入口,方法与扫描目录和URL相同。
(5)进行常规漏洞扫描,可使用AWVS、Nessus等工具。
(6)常用工具:子域名挖掘机、御剑、AWVS、AppScan等。
(7)此处“Web”不仅指HTML+CSS+JS构成的网页应用,泛指所有基于HTTP协议的应用,如API接口或由Nginx等Web服务器承载的服务。
3、功能分析
(1)分析前台页面的登录注册功能,例如某些系统注册逻辑可能存在SQL注入漏洞。
(2)根据用户注册提示推测可用账号(此方法易触发安全机制,属逻辑漏洞范畴)。
(3)尝试注册并登录,确认各项功能是否可用。
(4)定位前台页面的URL跳转、用户评论、文件引用、文件上传/下载等强交互功能点。
(5)确认后台是否存在文件上传、数据查询、命令执行、系统配置等高危功能。
(6)检查密码重置功能,确认是否存在逻辑漏洞。
(7)常见的逻辑漏洞包括:图片验证码失效、短信资源消耗(轰炸)、支付金额篡改等。
4、抓包分析
(1)分析前端页面源代码,确认是否存在敏感信息或未授权接口,例如某些跳转URL可能隐含XSS或请求伪造漏洞。
(2)对关键功能进行抓包分析,推测后台实现逻辑。
(3)分析系统交互过程中的编码和加密方式,如是否使用Base64编码、时间戳、Hash加密,或检查JWT令牌、Shiro框架的硬编码密钥是否在Cookie中泄露。
(4)分析通信过程中的Session和Cookie,理解其设计目的,可能关联到上述的框架安全。
(5)常用工具:Fiddler、BurpSuite、Wireshark、科来网络分析系统等。
5、使用的工具
(1)主机扫描:NMap、Nessus。
(2)Web扫描:XRay+Rad、AWVS、AppScan、SQLMap、XSStrike、dirb、御剑等。
(3)在线信息搜集:zoomeye.org、fofa.info、shodan.io、微步在线、域名注册商平台等。
二、漏洞挖掘和利用
1、已知exp使用
根据信息搜集结果,直接在网上寻找对应开发框架或CMS的成熟漏洞利用工具,例如Struts2的历史漏洞利用工具集。
2、暴力破解
适用于验证码可绕过或无效的场景。使用top1000等通用字典,也可根据搜集到的密码规则,利用hashcat生成定制字典。BurpSuite的Intruder模块提供了丰富的字典生成与攻击功能。也可使用Hydra、SNetCracker等专用工具,或根据业务需求自行编写Python脚本。
3、逻辑漏洞
密码重置功能是逻辑漏洞的高发区。从经验看,至少可从七个方面进行测试:重置凭证接收端可篡改、重置凭证泄漏、重置凭证未校验、重置凭证可爆破、用户身份混淆、应答包中存在影响后续逻辑的状态参数、Token可预测。找寻逻辑漏洞时,重点关注与用户身份相关的请求,尝试将其替换为他人的身份信息。
4、JS信息泄露
内部系统网站的JavaScript文件中可能存有API接口,通过分析可发现用户信息。也可通过解读JS代码逻辑,推测后台路径和参数构造方式。
5、后台WEB漏洞
除了信息搜集阶段提到的文件上传(获取Webshell)、查询功能(SQL注入)、命令执行功能外,其他如XSS、SSRF、文件包含等Web漏洞都应根据功能点逐一测试。
6、代码审计
如果能够获取到源码,可根据代码审计结果直接构造精准的Payload进行利用。
7、使用到的工具:
(1)渗透利用:Hydra, Medusa、MetaSploit Framework、各类反序列化利用工具。
(2)代码审计:RIPS、Fortify SCA、Seay。
(3)Webshell管理:中国菜刀、冰蝎、蚁剑、哥斯拉、PSTools等。
三、建立据点
1、反弹shell
成功利用漏洞后,通常在目标机上获得一个Webshell。但Webshell功能有限且不稳定,因此需要将其反弹到一个由攻击者控制的、更稳定的连接环境中,获得一个真正的交互式Shell。
2、反弹shell时可能遇到的问题
包括:反弹命令不存在、出口流量被禁止、限制对外访问端口、流量审查。
(1)反弹命令不存在:常用命令有nc、bash、python、perl、php等,通过whereis命令查询是否存在。
(2)禁止出口流量:防火墙可能禁止目标主动向外发起连接。可通过带外(OOB)技术验证,例如让目标向攻击者VPS发起DNS或HTTP请求,观察VPS日志。
(3)限定向外访问端口:常见于只允许访问80、443等白名单端口。此时需利用允许的端口(如443)建立加密连接。
(4)流量审查:环境会对流量内容进行检查。可结合SSL/TLS加密流量进行绕过,例如使用OpenSSL对反弹Shell的流量进行加密。
3、确认环境并制作木马
(1)确认目标操作系统版本、已安装服务、可用的脚本环境、出站端口等(具体取决于当前权限)。
(2)根据环境制作定制化木马,并设法维持连接稳定性,规避防火墙和管理员发现。
(3)内存马与不死马:
内存马:仅运行于内存中的木马,如:<?php set_time_limit(0); assert($_POST[‘a’]); unlink(‘shell.php’); ?> // 删除硬盘上的文件,仅在内存中执行。
不死马:在内存马基础上,通过循环写入等方式实现持久化,难以清除。常结合计划任务等权限维持手段。
(4)木马免杀:
现代杀毒软件采用静态特征检测与动态沙箱分析。静态免杀可通过加密、编码、代码混淆等手段改变特征;动态免杀需规避沙箱行为检测。
4、使用的工具:
MetaSploit Framework、Cobalt Strike等。
四、权限提升和内网渗透
1、权限提升
绝大多数Webshell权限较低(如www-data),需提权至root或系统管理员。方法包括:利用内核漏洞提权、搜寻配置文件中的明文密码、环境变量劫持、利用不安全服务配置、借助POSIX capabilities、sudo配置错误、SUID程序滥用等。可查找对应漏洞的公开EXP进行利用。
2、权限维持
获取高权限后,需通过多种手段维持访问权限,防止丢失。
3、内网穿透
后渗透阶段,需通过内网横向移动扩大战果。内网穿透用于在复杂网络环境中保持一个可靠的命令与控制通道,方便随时接入。此过程同样需注意规避安全设备的检测。
4、内网渗透
在维持高权限连接的基础上,可开展内网渗透,流程与外网渗透类似但环境更复杂。
(1)办公网络:通常不对外服务,可能采用域环境。渗透方法偏向社工、钓鱼,常使用反向连接。
(2)服务器网络:以已控服务器为跳板,进行横向移动,同样可采用反向连接。
5、使用的工具
(1)权限提升:MSF、漏洞扫描器、各类专项提权工具。
(2)内网渗透:Cobalt Strike、Ladon、PSTools等。
(3)内网穿透:Frp、冰蝎、Cobalt Strike、各类代理工具。
五、取证溯源
1、数据恢复
(1)文件删除后,若未进行新的写入操作,绝大多数情况下可以恢复。
(2)低级格式化硬盘或删除后数据被覆盖,则难以恢复。
2、远程日志
分析系统、应用及安全设备的日志,追溯攻击源头和行为。
3、流量备份
对网络流量进行记录和备份,用于事后分析和证据固定。
4、社工库
利用公开或私有的社工库信息,关联攻击者身份。