# 一、信息搜集

# 1、主机扫描

(1)扫描某个网段内存在的主机

(2)扫描主机开放的端口和服务

(3)扫描主机的操作系统和版本号

(4)扫描主机可能存在的已知漏洞

# 2、Web 扫描

(1)查询域名和子域名信息

(2)查询 whois 信息

(3)扫描 Web 应用的 URL 路径

(4)扫描 Web 应用后台管理入口

(5)常规漏洞扫描

# 3、功能分析

(1)分析前台页面的登录注册功能

(2)根据用户注册提示确定可用账号

(3)尝试进行注册并登录,确认各项功能

(4)确定前台页面的 UL 跳转、用户评论、文件引用、文件上传、文件下载等强交互功能点

(5)确定后台是否存在文件上传、查询功能、命令功能、系统配置等

# 4、抓包分折

(1)对前端页面的源代码进行分析,确认是否存在敏感信息或接口

(2)对关键功能进行抓包分析,预判后台基本实现逻辑

(3)对系统功能交互过程的编码和加密进行分析,如是否使用 Base64 编码、时间戳、Hash 加密

(4)对通信过程的 Session 和 Cookie 进行分析,判断为什么此处要这么用

# 5、使用的工具

(1)主机扫描:NMap、Nessus

(2)Web 扫描:XRay+Rad、AVWS、AppScan、SQLMap、XSStrike、dirb、御剑等

(3)在线搜集:zoomeye.orgfofa.soshodan.io、微步、域名注册商如万网等

# 二、漏洞利用

# 1、已知 exp 使用

根据信息搜集结果,直接网上寻找对应开发框架或 CMS 的成熟漏洞利用工具,如 struts2 的全家桶。

# 2、暴力破解

适用于验证码可绕过,使用 top1000 等各类字典,也可以根据搜集到的密码规则匹配相应账号使用 hashcat 自行创建字典。burpsuite 的暴力破解模块也提供了多样化的字典生成功能。或使用专有工具如 Hydra、SNetCracker 等,或根据业务需要自己编写 Python 脚本。

# 3、逻辑漏洞

尤其是密码重置,很关键。根据经验来看,至少可从七个方面攻击密码找回功能:重置凭证接收端可算改、重置凭证泄漏、重置凭证未校验、重置凭证可暴破、用户混淆、应答中存在影响后续逻辑的状态参数、tokn 可预测。在逻辑漏洞的找寻中,重点观察跟你用户名有关的请求,尝试在各种请求中将你的用户名或身份认证替换成他人的。

# 4、JS 信息泄露

一般内部系统的网站 JS 可能会存有用户接口,我们可以通过接口发现用户信息。也可以分析 JS 的代码,构造出后台路径和参数逻辑。

# 5、后台 WEB 漏洞

除了在信息搜集中提到的上传功能(上传 webshell)、查询功能(sql 注入)、命令功能(命令注入)外,其他 web 安全漏洞都最好根据功能逐一尝试。

# 6、代码审计

如果拿到源码,可以根据审计结果构造 payload

# 7、使用到的工具

(1)渗透测试:Hydra,Medusa、MetaSploit Framework、反序列化工具、各类专项工具
(2)代码审计:RIPS、Fortify SCA
(3)Shell 管理:菜刀、冰蝎、蚁剑、哥斯拉、PSTool 等

# 三、建立据点

# 1、反弹 shell

漏洞利用成功时,通常会在目标机上获得一个 webshell, 但是 webshell 虽然能执行命令和管理文件,但毕竟不是真正的 shell, 而且也不稳定,因此就需要反弹 shell 到一个稳定的环境中。

# 2、反弹 shell 时候可能遇到的问题

反弹命令不存在、禁止出口流量、限定向外访问端口、流量审查

(1)反弹命令不存在:命令有很多,常用命令有 nc/nc.openbsd/nc.traditionalbash/sh/dashpython/perl/PHP/rubyexec , 因此命令不存在的概率很小;在服务器上使用 whereis nc bash php perl python ruby 就能知道命令是否存在:

(2)禁止出口流量:某些目标在防火墙上限制了出口流量,禁止目标主动向外发起网络请求,可以通过带外(Out Of Band)的方式进行验证。大致逻辑是,在攻击者自己的 VPS 上监测某种协议的网络请求,在目标上用这种协议访问 VPS, 若在 VPS 上看到该协议的请求日志,则可推断出目标允许出口流量;

(3)限定向外访问端口:某些目标限定访问外部端口,常见黑名单和白名单两种方式。黑名单,比如,禁止目标机器向外访问 MSF 默认的 4444 端口;白名单,比如,只允许向外访问 web 常见的 80 端口。黑名单的情况好绕过,随便指定一个端口号就行,白名单的话就只能探测可允许端口,常见就是 80 和 443,需要想办法利用。

(4)流量审查:目标环境会对所有流量进行检查,检查的时候会发现流量中的恶意代码信息。这种情况可以结合上面的 443 端口,使用攻击者的 VPS 创建 ssl 证书公钥 / 私钥对,VPS 开启 openssl 监听,然后使用 openssl 对反弹 shell 的流量进行加密,这样就能防止流量审查反弹成功。

# 3、确认环境并制作木马

(1)确认具体的操作系统版本和已经安装的服务,可以运行的脚本环境,可以通过的端口等(具体根据权限而定)。

(2)根据当前环境,按照需要制作复杂木马,甚至想办法保持连接的稳定,不被防火墙和管理员发现和封锁等。

# 4、使用的工具

MetaSploit Framework、Cobalt Strike 等

# 四、权限提升和内网渗透

# 1、权限提升

Webshell 中的 90% 都是 www-data 权限,需要想尽办法提升至 root 权限,可以用的办法有利用内核栈溢出提权、搜寻配置文件中的明文密码、环境变量劫持高权限程序、不安全的服务、借助权能(POSIX capabilities)提权、sudo 误配、SUID 滥用等等。这些可以查阅网上相关资料和方法,下载对应的 exp 完成。

# 2、权限维持

在获取了超级管理员权限后,还得想办法要将权限维持住,

# 3、内网穿透

在后渗透阶段,攻击进入一台目标主机是远远不够的,还需要通过内网横向移动来完成对核心目标的访问和渗透,此时通过内网穿透保持一个可靠连接,随时可以通过穿透功能进入目标主机。这一过程同样需要注意如何规避防病毒软件或防火墙的发现。

# 4、内网渗透

当能够保持超级管理员的权限并进行维持后,此时便可以开展内网渗透工作,整体过程与外网渗透比较类似,但是面临的实际情况并不完全一样,需要借助各类工具和经验进行处理。作为渗透测试的工作而非红方攻击来说,内网渗透并非最必要的一步,但是可以一试,进一步确定目标主机的漏洞及影响范围。

# 5、使用的工具

(1)权限提升:MSF、漏扫、各类专项渗透工具等
(2)内网渗透:Cobalt Strike、Ladon、PSToolss 等
(3)内网穿透:Frp、冰蝎、Cobalt Strike、代理等