前言

xssprobe是evilcos在github开源的一个小工具,通过它可以获取目标页面通用数据。这篇文章是我在在学习源码及实际演练的笔记。

demo.html

含有xss漏洞页面,可以被注入XSS恶意代码来让受害者执行,从而获取受害者的个人信息,如cookie,flash信息,浏览器版本,操作系统版本...

为了方便演示,直接在代码中<script>...</script>引入恶意js代码。

probe.js

就是上面提到的恶意代码,可以获取受害者的隐私信息。

需要知道:

检测浏览器类型与版本的代码用到了正则表达式

检测flash的版本信息代码的window.ActiveXObject是对ie浏览器来判断的

json2str函数的/^(string|number)$/.test(typeof s)是正则表达式的.test()匹配
web黑客前端技术揭秘 XSS探针:xssprobe 笔记
这个函数也可以用JSON.stringify()来代替。

最后通过new Image().src的方法将获取到的隐私隐私发送到probe.php

probe.php

关于获取真实ip可以参考:php - 获取客户端IP ,HTTP_CLIENT_IP 是一个骗局吗? - SegmentFault 思否
explode() 函数把字符串打散为数组。
array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。

stripslashes() 函数用于删除反斜杠。

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

& (& 符号)    &amp;
" (双引号)    &quot;,除非设置了 ENT_NOQUOTES
' (单引号)    设置了 ENT_QUOTES 后, &#039; (如果是 ENT_HTML401) ,或者 &apos; (如果是 ENT_XML1、 ENT_XHTML 或 ENT_HTML5)。
< (小于)    &lt;
> (大于)    &gt;

演示

在实际访问demo.html后,probe_data.html并没有被创建,查看后发现是目录权限问题。

drwxrwxr-x 2 aaron aaron 4096 8月  10 13:12 xssprobe//

服务器并没有对该目录的写入权限。通过chmod 777 xssprobe/设置777权限即可。