渗透测试中,浏览器和Burp是使用最频繁的工具。灵活运用浏览器可以大大提高渗透测试的效率。本文将分享一些我平时在浏览器上使用的技巧。

首先,我们来说说浏览器的选择。首选Chrome浏览器,辅以火狐。对于Mac用户,还可以加一个Safari浏览器,用于浏览动漫或者使用Google Hack。为什么首选Chrome呢?主要有以下三点原因:

更强大的账号同步能力

只要登录了Google账号,就能使用Chrome强大的跨平台账号同步功能。这不仅包括书签和账户密码,还包括所有的插件!这一特性特别方便,因为当我们重装系统或者在其他电脑使用Chrome时,只需要登录Google账号,就能够迅速恢复熟悉的浏览器状态。相反,火狐的同步功能并不理想,尤其是在跨平台同步书签方面。比如在Windows上收藏了一个书签,然后又在Kali上收藏了几个书签,但是Kali上的书签却无法同步到Windows的火狐上。

更强大的F12开发者工具

现在的Chrome F12开发者工具在许多方面都超过了火狐,尤其在JavaScript调试方面。关于这一点稍后会有详细讲解。

自带Flash插件

很多较老的网站,例如学校、政府等机构的网站,都需要使用Flash。而Chrome浏览器自带Flash插件。

那么,如何更好地利用浏览器进行渗透测试呢?除了在网页上右键查看源码外,还可以使用其他方法:

使用Chrome的开发者工具

使用一些必备的插件

关于开发者工具的使用,Chrome为我们提供了强大的工具。以下是渗透测试中常用的一些功能,详细的资料请查阅官方文档(https://developers.google.com/web/tools/chrome-devtools/)。

打开开发者工具的方法有多种:

在Chrome菜单中选择 "更多工具" > "开发者工具"

按F12键(Windows)或Cmd+Opt+I(Mac)

在页面元素上右键点击,选择 "检查"

调整面板的方法:

手机模拟在渗透一些专门为手机设计的网站时特别有用,比如 https://m.jd.com/ 。直接用chrome打开的界面是很不友好的,使用手机模拟后可以说是相当的舒服。***手机模拟的鼠标是模拟触屏的,这一点在一些移动网站需要感应用户的触摸动作时特别有用。在我不知道开发者工具有这个功能时,遇到要触摸动作(如滑动验证码、画轨迹的验证码)的时候,我只能默默地打开我的夜神......

HTML元素选择方面,手机模拟左边的图标也是用得比较多的,点一下它可以在网页上选择元素。控制台方面,点击面板中的console,可以进入控制台。控制台功能十分强大,可以用来执行javascript代码。比如在控制面板上输入以下代码:alert('hacker by timeshatter'),可以轻松黑掉百度。说笑的,表哥们别打我,逃~!

这个功能在渗透中主要有以下几个作用:1. 调用函数、打印或计算一些变量的值;2. 验证一些存在漏洞的JavaScript库;3. 验证一些低危漏洞;4. 用处就是还没开burp时,可以用来快速查看下网页哪里出错了。值得注意的是,火狐的网络功能可以重新编辑并发送请求,而chrome的不行,这是火狐的一个优点。

在一种情况下比较有用:需要远程登录windows服务器来渗透,并且不能给那台windows上传工具,而电脑上只有一个火狐的时候,只能用火狐手动日了。调试功能方面也有很多用途。

在Souces菜单中,点击js文件或者有js的页面,可以查看网页的javascript源码,并且可以下断点来调试。这对于分析登录页面使用的加密逻辑、跟踪变量的值和查找DOM XSS特别有用。下面详细介绍下这个功能:

Sources 面板界面的 3 个部分:

1. File Navigator 窗格。此处列出页面请求的每个文件。

2. Code Editor 窗格。在 File Navigator 窗格中选择文件后,此处会显示该文件的内容。

3. JavaScript Debugging 窗格。检查页面 JavaScript 的各种工具。如果 DevTools 窗口布局较宽,此窗格会显示在 Code Editor 窗格右侧。

在调试前,先做两个设置,点击此处的设置确保 Enable JavaScript souce maps 选项和 Blackbox content scripts 被勾选上了:

- Enable JavaScript souce maps 可以开启 JavaScript souce maps,因为有些 js 源码是压缩过的,可读性很差,不方便调试。有可能在这些 js 源码中声明了未压缩源码的地址,这样 Chrome 的开发者工具可以映射到未压缩的源码来调度,从而提高可读性。

- Blackbox content scripts 功能可以禁用插件的 js 代码,遇到插件的 js 函数这些时,可以直接跳过。

接着,源码页面左下角的 {} 图标可以把代码格式化。由于很多 js 为了节省空间,只有一行,可读性很差。点击 {} 图标后会跳转到一个格式化后的代码文件中来阅读和下断点。格式化前的代码只有一行:

```javascript

// 示例代码

function example() {

console.log("Hello, World!");

}

example();

```

格式化后的代码:

```javascript

function example() {

console.log("Hello, World!");

}

example();

```

现在正式开始介绍怎样调试 javascript 代码:JavaScript Debugging 窗格中可以下各种类型的断点,如下图所示。而 Firefox 可以下的断点类型少得可怜:其中的 Event Listener Breakpoints 可以根据各种事件来下断点,如鼠标的点击事件、键盘的输入事件等。以下面的例子来调试:https://googlechrome.github.io/devtools-samples/debug-js/get-started

在 JavaScript Debugging 窗格中,点击 Event Listener Breakpoints 以展开该部分。DevTools 会显示 Animation 和 Clipboard 等可展开的事件类别列表。

在 Mouse 事件类别旁,点击三角型按钮。DevTools 会显示 click 和 mousedown 等鼠标事件列表。每个事件旁都有一个复选框。

勾选 click 复选框。DevTools 现在经过设置可以在任何 click 事件侦听器运行时自动暂停。

返回至演示页面,再次点击 Add Number 1 and Number 2。DevTools 会暂停演示并在 Sources 面板中突出显示一行代码。DevTools 应在此代码行暂停:

```javascript

function onClick() {

```

如果是在其他代码行暂停,请按 Resume Script Execution,直到在正确的代码行暂停为止,这种情况一般是插件捕获了点击事件。注:如果是在其他代码行暂停,可使用浏览器扩展程序在您访问的每一页上注册一个 click 事件侦听器。使用扩展程序的 click 侦听器可执行暂停操作。如果是采用无痕模式进行隐私浏览,将会停用所有扩展程序,而且您会发现您每次都在正确的代码行暂停。

接下来开始调试代码:

1. 在 DevTools 的 Sources 面板上,点击 Step into next function call,以便一次一行地单步调试 onClick() 函数的执行。DevTools 突出显示下面这行代码:

```javascript

if (inputsAreEmpty()) {

```

2. 点击 Step over next function call 。DevTools 执行但不进入 inputsAreEmpty()。请注意 DevTools 是如何跳过几行代码的。这是因为 inputsAreEmpty() 求值结果为 false,所以 if 语句的代码块未执行。

设置代码行断点:

代码行断点是最常见的断点类型。如果您想在执行到某一行代码时暂停,请使用代码行断点:

1.看一下 updateLabel() 中的最后一行代码:

您可以使用 Chrome 开发者工具来调试 JavaScript 代码。以下是一些常用的方法:

1. 在代码行上设置断点,以便在执行该行代码之前暂停脚本。您可以在第 32 行上设置断点,然后点击“Resume script execution”以继续执行脚本。在第 29、30 和 31 行上,DevTools 会在每行分号右侧输出 addend1、addend2 和 sum 的值。

2. 使用控制台对任意 JavaScript 语句求值。在 Console 中,输入 parseInt(addend1) + parseInt(addend2)。此语句有效,因为您会在特定代码行暂停,其中 addend1 和 addend2 在范围内。按 Enter 键。DevTools 对语句求值并打印输出 6,即您预计演示页面会产生的结果。

3. 调试时,可以检查变量的值。在某代码行暂停时,Scope 窗格会显示当前定义的局部和全局变量,以及各变量值。其中还会显示闭包变量(如果适用)。双击变量值可进行编辑。如果不在任何代码行暂停,则 Scope 窗格为空 。

以下是我常用的浏览器插件:

1. SwitchyOmega

SwitchyOmega 是一个非常实用的插件,主要用于方便切换代理。有了它,你可以轻松地在 Burp 代理和正常浏览之间切换,无需手动设置代理。这个插件对于渗透测试和开发人员来说非常有帮助。

2. 沙拉查词-聚合词典划词翻译

沙拉查词是一个非常实用的插件,主要用于查看英文博客时进行划词翻译。它可以帮助你快速查找生词和短语,提高阅读效率。对于喜欢阅读英文技术博客的用户来说,这个插件是一个非常好的选择。

3. Retire.js

Retire.js 是一个用于检查网页中是否存在有漏洞的 JavaScript 库的插件。通过使用这个插件,你可以发现潜在的安全风险,从而更好地保护你的网站免受攻击。对于 Web 安全工程师和渗透测试人员来说,这是一个非常有用的工具。

4. wappalyzer

wappalyzer 是一个用于分析网站使用的技术、中间件、语言和框架的插件。通过使用这个插件,你可以了解目标网站的技术架构,从而更好地制定攻击策略。对于 Web 安全工程师和渗透测试人员来说,这是一个非常实用的工具。

5. OneTab

OneTab 是一个用于管理标签页的插件。在渗透测试过程中,我们经常需要打开大量标签页,点一下 OneTab 就可以将所有标签页合并成一个列表。这样一来,以后需要查看某个标签页时,只需点击列表中的相应项即可。这个插件对于提高工作效率非常有帮助。

6. Shodan 或者 IP Address and Domain Information

Shodan 和 IP Address and Domain Information 是两个方便快速查看开放端口和 IP 地址等信息的插件。通过使用这两个插件,你可以迅速收集目标主机的信息,为后续的攻击或漏洞利用提供参考。对于渗透测试人员来说,这是一个非常有用的工具。

以上就是我常用的浏览器插件介绍。如果觉得这些内容对你有所帮助,欢迎分享给他人!