本文主要是参考以下两篇文章:
https://mp.weixin.qq.com/s/V0WdN9CMrTqo6qInuwyR6g
https://blog.gm7.org/%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%BA%93/01.%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/06.%E4%BF%9D%E6%8A%A4%E8%87%AA%E5%B7%B1/02.%E9%98%B2%E6%AD%A2Burp%E8%A2%AB%E8%AF%86%E5%88%AB.html
为什么叫简单版本,因为在这里只是通过极简单的js操作进行识别,实际上真正的大厂识别方法中还可以通过BurpSuite
版本的JA3
指纹、端口连接是否被复用等技术(当然还有很多我不知道的技术,阿巴阿巴阿巴!)
关于Burpsuite
来说,基本上是Web
选手的人手必备的工具,但是现在似乎发现某些站点在使用bp
的时候,无法对其抓包,甚至无法访问,这里面就可能被目标站点识别到了bp
的指纹信息,目标站点积极拒绝访问。本文使用Burpsuite
版本为2.1.06
本文只从简单的js
层面来讨论。
其实关于Burpsuite
的特征来说,第一个就是http://burp
,当Burpsuite
在本地起来之后,随之也会起来一个http
的服务,当前的浏览器使用8080
端口(Burpsuite
的默认端口)的时候,就可以直接访问到这个页面:
显示网页源代码之后,可以发现更多的信息:
<html><head><title>Burp Suite Professional</title>
<style type="text/css">
body { background: #dedede; font-family: Arial, sans-serif; color: #404042; -webkit-font-smoothing: antialiased; }
#container { padding: 0 15px; margin: 10px auto; background-color: #ffffff; }
a { word-wrap: break-word; }
a:link, a:visited { color: #e06228; text-decoration: none; }
a:hover, a:active { color: #404042; text-decoration: underline; }
h1 { font-size: 1.6em; line-height: 1.2em; font-weight: normal; color: #404042; }
h2 { font-size: 1.3em; line-height: 1.2em; padding: 0; margin: 0.8em 0 0.3em 0; font-weight: normal; color: #404042;}
.title, .navbar { color: #ffffff; background: #e06228; padding: 10px 15px; margin: 0 -15px 10px -15px; overflow: hidden; }
.title h1 { color: #ffffff; padding: 0; margin: 0; font-size: 1.8em; }
div.navbar {position: absolute; top: 18px; right: 25px;}div.navbar ul {list-style-type: none; margin: 0; padding: 0;}
div.navbar li {display: inline; margi-left: 20px;}
div.navbar a {color: white; padding: 10px}
div.navbar a:hover, div.navbar a:active {text-decoration: none; background: #404042;}
</style>
</head>
<body>
<div id="container">
<div class="title"><h1>Burp Suite Professional</h1></div>
<div class="navbar"><ul>
<li><a href="/cert">CA Certificate</a></li>
</ul></div>
<p>Welcome to Burp Suite Professional.</p><p> </p>
</div>
</body>
</html>
在http://burp/cert
界面能够直接将证书下载下来:
在当前界面能够直接访问到Burpsuite
的ico
图标:
在第一节中提到了Burpsuite
的三个明显特征之后,如何去识别呢?在这里当然要通过js
识别。在这里有两种比较好的方法,但是实际上还存在其他的跨域执行方法。首先在靶机上准备一个http
的服务,在这里简单的准备一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Burpsuite feature detection</title>
</head>
<body>
<h1>hello crow !</h1>
</body>
</html>
http://192.168.135.12/index.html
当从目标站点去访问访问者的站点的时候,需要跨域,一般的事件是不行的,所以在这里使用img
标签,img
标签中的img
其实是英文image
的缩写。所以img
标签的作用,就是告诉浏览器我们需要显示一张图片。在这里使用onload
来判断事件是否成功:
• onload
事件会在页面或图像加载完成后立即发生。
• onload
通常用于 <body>
元素,在页面完全载入后(包括图片、css
文件等等。)执行脚本代码。
在刚刚的html
中加入下面的img
标签:
<img src="http://burp/favicon.ico" onload="alert('Burpsuite feature detection')" >
刷新之后,发现当前加载ico
文件成功,并且弹出警告信息。在这里可以使用一个简单的跳转防止起对网站的访问:
<img src="http://burp/favicon.ico" onload="parent.location='http://www.baidu.com'" >
当请求之后,会自动跳转到百度:
iframe
是html
元素,用于在网页中内嵌另一个网页。
<iframe src="http://burp/" onload="alert('Burpsuite feature detection')"></iframe>
将其添加之后,同样能够检测到当前的Burpsuite
,但是这里是存在误区的:如果出现下面的这种图,并不一定代表确定是检测到了burp
:
比如将上面的代码稍微修改为baidu.com
试试:
<iframe src="http://www.baidu.com/" onload="alert('Burpsuite feature detection')"></iframe>
同样会弹出一模一样的界面,但是这并不代表此种方式有错误,这里主要要看报错内容:一个是百度的页面:
还有一个是burp的页面:
可以通过相关的关键字来进行判断。在下面的文章中,师傅对其进行了优化:
https://blog.gm7.org/%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%BA%93/01.%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/06.%E4%BF%9D%E6%8A%A4%E8%87%AA%E5%B7%B1/02.%E9%98%B2%E6%AD%A2Burp%E8%A2%AB%E8%AF%86%E5%88%AB.html
将报错隐藏:
<iframe src="http://burp/" onload="alert('Burpsuite feature detection')" style="display: none;"></iframe>
但是这里和刚刚说的一样,貌似是错误的,因为当将错误隐藏的话,我们就没法使用报错字段来判断是否存在burp
了,比如将师傅的句子中的burp
修改为baidu.com
:
<iframe src="http://www.baidu.com/" onload="alert('Burpsuite feature detection')" style="display: none;"></iframe>
在这里看到当前请求了百度,但是依旧进行了弹窗,所以在这里这种方法貌似不严谨。
在这里主要为原因就是使用了onload
标签的问题,onload
标签的定义是:onload
事件会在页面或图像加载完成后立即发生。也就意味着是否加载了burp
,下面的弹窗情况都会发生。
在这里禁止访问burp
可以防止对方使用img
标签来访问ico
图标。
当设置之后,使用前面的img
标签试试:
<img src="http://burp/favicon.ico" onload="alert('Burpsuite feature detection')" >
此时无法请求burp
,获取不到ico
图标:
同理也可以防止iframe
标签,因为禁止访问了burp
,得不到报错之后的数据:
<iframe src="http://burp/" onload="alert('Burpsuite feature detection')"></iframe>
虽然依旧会弹窗,但是由于没有报错信息,因此无法判断当前是否加载了burp
。
在Burpsuite
的Options
界面,关闭如下两个选项:
当没有在代理端配置禁止burp
访问的时候:
此时去访问http://burp/favicon.ico
此时已无法访问,在这里是Burpsuite
本身配置了防止Burp
的访问。再去访问img
标签下的值,此时发现burp
的状态码直接不再显示了:
以上两种方法均可在一定程度上防止Burpsuite
被识别到,可以二选一,也可以全选。
但是注意第二种方法在你重启bp
之后,还会失效,一定要注意下。
当然,通过流量层等其他方法还是会识别到Burpsuite
,后续有机会再学习下。