浅谈XSS的最大化利用

我们知道,前端安全中的xss有多种利用方式,其中比较常见的便是用XSS打到的cookie卡入对方的网站,通过平台不断刷新登录从而获得持久控制权,或者通过权限控制不严直接getshell等等。 下面我们来简单谈谈几种稍微不一样的利用方式。 敏感信息探测 我们在获取用户cookie无效时,可以尝试获取下其他有效数据,以方便我们判断管理的习惯或者进一步渗透的信息。 第一, 偷取浏览器信息,采用navigator的属性可以获取管理浏览器版本和flash插件情况,这样可以进行进一步的构造和其他设想。 第二, 使用Reffer偷取来源,如果在某些情况下不知道后台,我们可以尝试。管理可能在后台看见你的请求或留言进行点击或查看操作,我们如果能获取到reffer就相当于得到后台了。 第三, 重要参数的暴露,同样是Reffer,可能会泄露一些认证的重要参数,这有时可以等同于cookie的危害了。 第四, 获取管理的系统信息和硬件信息。获取系统信息需要建立Ajax对象,跨浏览器进行交互。 窃取密码 同样,XSS作为多种利用方式的衍生物,是可以记录用户输入或者窃取用户浏览器保存的的其他重要信息的,这点在网站被设置了httponly后尤为有用。 第一, 记录用户输入,我们可以在用户在表单输入完毕,截获onsubmit动作时发送所有输入框里的值,期间可以通过onchange做辅助修正。 第二, 键盘记录,通过键入和点击事件,取得当前的keycode或者charcode,记录发送到我们的控制端。这里注意下,以上两种为dom下的区别,通过keydown和keypress事件在不同浏览器获取的不同,我们需要仔细结合浏览器参考使用最合适的。 第三, 截获密码,由于现而今用户输入在浏览器中为动态保存,在源代码中已不能看到明文,所以可以尝试动态创建表单,仿当前页面,在目标提交到服务端前完成填充。 做到这点并不难,因为本地截获是优先于服务端判断的(适用于ie)。 第四, 高仿钓鱼,这点就不多介绍了。 批量扫描 利用XSS,我们还可以针对主机进行批量扫描,听起来可能有些奇葩,可事实就是这样。但是我们得意识到的是,JS请求效率并不高,也不能并发,所以我们要最大化利用这个点就只能对内网就行扫描。那么JS在这儿如何进行工作呢,我们可以做如下尝试: 第一,直接请求,比如,对ip端口进行请求,为一系列IP建立一个数组,取另一个数组储存要请求的端口号。如:http://hosts:port,判断返回状态,建议最好端口号取一个就好。当然,这种判断是不太稳定的,不过也是一种参考法子。 第二,如果我们想效率高些可以通过ajax发起跨域请求,调用XDomainRequest或者XMLHttpRequest进行对url的打开的请求,通过返回值判断。其中加上timeout的时间,更稳定一些。 XSS远控 大家都知道,cookie在平台上是动态刷新的,这就意味着我们可以对服务端进行持续控制 第一, 在我的猜想里,一定程度上框架化对cookie的进行整体利用,附上可更改id名的固定POST内容(类似于hackbar的半自动化提交),我们就可以让XSS做成类似远控的效果了,好像鬼哥在以前弄个一个这样的非平台客户端,不知道是不是相同原理。 第二,不过在更多的定义中,XSS远控应该是让远控指令在目标浏览器上实时执行,并且回 显。从而实现实时地对被控主的Web状态的控制。当然发起请求的方式和连接方法有许多, 我们要在稳定性上多下功夫可以综合思考,这里就不多说了。 最后总结一下,XSS利用方法很多,我这里指讲了一小部分个人觉得有点非主流的,还有部 分如跨域和蠕虫是很值得研究的。