如何使用Selenium IDE构建渗透测试机器人
你是否曾在渗透测试过程中想过:“要是有个机器人能替我完成这些测试就好了,这工作量实在太大了”?我确实这样想过。这就是我开始使用QA工具Selenium IDE来自动化以下任务的原因:
- 暴力破解复杂认证协议(例如Amazon Cognito实现的Secure Remote Password协议)
- 密码喷洒服务(当缺乏可用工具且没有足够时间/意志力配置Burp Suite Intruder攻击时)
- 从动态渲染的网站中收集邮箱地址
- 绕过Google reCAPTCHA(仅限需要解决JavaScript挑战的透明类型)
实战演示:暴力破解React应用
我们将通过一个示例React应用来演示如何构建渗透测试机器人。该应用使用Amazon Cognito SRP进行认证,这种协议几乎无法用Burp Suite Intruder模块实现自动化。
SRP是一种“增强型密码认证密钥交换(PAKE)协议”,其特点是“密码永远不会离开客户端”。这意味着无法在HTTP请求中标记密码位置进行暴力破解。
Selenium IDE基础配置
安装Selenium IDE后,需要设置项目名称和基础URL。点击“开始录制”后,SIDE会打开新的浏览器实例并开始记录操作。
处理Shadow DOM挑战
在录制登录过程中,发现SIDE无法定位Shadow DOM内的表单字段。通过使用“execute script”命令执行JavaScript代码来解决这个问题:
|
|
构建暴力破解循环
使用SIDE的“for each”命令循环遍历密码列表:
- 创建返回密码数组的命令
- 添加循环控制命令
- 使用${variable}语法动态插入密码
- 添加3秒延迟确保请求处理完成
最终测试仅需10行“代码”即可实现完整的暴力破解流程。
技术要点总结
- Shadow DOM处理:通过querySelector和shadowRoot属性多层遍历
- 事件触发:使用dispatchEvent方法模拟用户输入
- 循环控制:利用SIDE的循环命令和变量系统
- 延迟策略:添加适当延迟确保操作同步
这种方法特别适用于工具不可用或配置复杂的情况,为渗透测试人员提供了高效的自动化解决方案。
参考文献详见原文技术文档链接