精通JavaScript攻击框架:AttackAPI(上)
宇文
多年来客户端安全一直未引起人们的足够重视,但是如今情况发生了急剧转变,客户端安全已经成为信息安全领域的焦点之一。Web恶意软件、AJAX蠕虫、浏览历史暴破、登录检测、傀儡控制技术网络端口扫描以及浏览器劫持等各种技术只是安全研究人员地下实验室的部分技术,但是已经带来了非常大的影响。
一种类型的安全专业浮现并变成主流利用机制时,供应厂商和个人就会开始发行框架和自动工具,来处理工具和测试过程。虽然供应厂商最初主要将精力放在AJAX审计工具方面,但是安全研究人员更关注的是连绵的系统边界,以探索事实真相。
由于存在多种可能的攻击矢量,Web应用程序安全社区也建立了多个框架来探测、利用安全漏洞,从而揭示Web 开发社区所面临的种种问题。而本文将向大家介绍AttackAPI的详细使用方法。
一、AttackAPI概述
AttackAPI是一个基于Web的攻击构造库,它可以结合PHP、JavaScript及其他客户端和服务器端技术进行使用。AttackAPI有几十个不同功能的模块组成,这些模块既可以从浏览器使用,也可以从JavaScript解释器执行,例如 Mozilla Rhino。它的目标是为实现漏洞利用而提供一个简单易用的接口,主要用于测试和验证之用。
在开始研究AttackAPI子程序之前,我们先来做一些准备工作。首先,下载该库,然后搭设一个测试环境,我们将在这个环境中开发大部分示例程序。为此,我们需要安装、运行以下应用程序:
支持PHP 4.x或者更新的版本的HTTP服务器(Apache+PHP或者AppServ)
www.apache.org/
www.php.net/
www.appservnetwork.com/
从GNUCITIZEN下载最新的AttackAPI
www.gnucitizen.org/projects/attackapi
Mozilla的网络浏览器Firefox
www.getfirefox.com
Firefox扩展Firebug,地址www.getfirebug.com/
启动Apache HTTP 服务器并且确保已在正常运行中。 在网上,介绍这类任务文档很多,在此不再赘述。然后,从GNUCITIZEN下载AttackAPI程序包 ,并且将其抽取到Web服务器的根文件夹中。例如,如果使用的是AppServ,那么可以将这些文件放在C:AppServwwwattackapi中。
确保运行的Firefox已经安装了Firebug。我们之所以不辞劳苦的准备这些东西,是因为它们可以在将来为我们剩下许多力气,当我们从Firebug的动态控制台下做这些工作的时候,要比不停地保存和打开一些随机的临时文件要轻松得多。虽然我们这里使用的是Firefox,但是这里的例子照样可以用在其它浏览器上,只需稍作修改即可。
做好这些初始设置后,打开Firefox,从localhost导航至AttackAPI文件夹,即http://localhost/attackapi。这时就会看到如图1所示内容。
从AttackAPI的文件结构来到Build|Tests|firetest-interactive.htm,这个文件中包含了下面我们将用到的一些元素。因为我们不会对打开的页面的HTML内容做任何修改,所以打开 Firebug,并调整控制台使其扩展至整个屏幕。
确保位于Console 选项卡中,并输入命令:dir(AttackAPI)。如果一切正常的话,就会看到如图2所示的AttackAPI 文档对象模型(DOM)结构。
在本文剩下部分中,我们将使用$A对象而不是AttackAPI来访问和调用库对象和方法。$A对象是AttackAPI的一个独立的实例,并且包含更易使用的AttackAPI方法的快捷方式。 AttackAPI是一个结构化程度很高的库,通过图2可以看出,它还进一步分为AttackAPI.core(库核心)、AttackAPI.dom(跨浏览器的方法)和AttackAPI.utils(跨解释器的方法)。通过使用上面所说的约定,AttackAPI的base64编码函数的完整路径为$A.encodeBase64,是不是非常简洁呀?!这样输入代码的时候是不是省力气了,所以说,懒惰是促进人类进步的主要动力之一。
由于我们需要输入的代码较多,所以建议使用更大的命令行,首先在“选项”下拉菜单中选择“更大的命令行”选项,如同图3所示。
这时命令行会出现在窗口的右侧,如下图所示:
因为我们要键入许多代码,所以难免出现输入错误。所以打开更大的命令行之后,改起来会更快、更好。
需要注意的是,我们可以使用Load AttackAPI 书签将AttackAPI 加载到选择的页面上,尤其是当我们需要为某个站点开发利用程序,但是又不想通过Firebug修改该页面的源代码或者插入脚本标签的时候格外有用。该bookmarklet可以是从www.gnucitizen.org/projects/load-attackapi-bookmarklet下载。现在开始研究AttackAPI的客户端踩点功能。
二、客户端踩点
攻击者一旦控制了受害者的浏览器,他们首先要做的第一件事情就是弄清楚他们俘获的到底是什么样的客户端和平台。为达到这一目的,他们只需在Firebug的命令行中输入下列命令便可:
console.log($A.getAgent() );
console.log($A.getPlatform() );
命令行窗口下方的“运行”按钮,就会看到这两个函数的执行结果,如下图所示:
如您所见,浏览器类型和操作系统版本已经展现在我们眼前了——事情就是这么简单!
然而,攻击者能做的事情远不止这些。在Firebug的命令行下输入如下所示的两行命令:
console.dir($A.getCookies() );
console.dir($A.getPlugins() );
命令行窗口下方的“运行”按钮,就会看到这两个函数的执行结果,如下图所示:
GetCookies函数会检索出所有可用的Cookie,注意,这里的getCookies函数是一个易于使用的JavaScript 对象,这样我们就无需对DOM对象document.cookie 进行手动解析了。 与getCookies函数类似,getPlugins函数会列出目前已经安装的所有浏览器插件;这个函数能够运行在大多数浏览器上,但是Internet Explorer(IE)除外。
这里需要注意,如果客户端使用的是IE的话,AttackAPI能够访问存储在剪贴板中的数据:我们可以使用AttackAPI.dom.getClipboard来读取剪贴板,并能使用AttackAPI.dom.setClipboard 函数来设置剪贴板。通常情况下,剪贴板会保存有攻击者感兴趣的内容,例如用户有时候会复制粘贴他们的密码。通过使用这项功能,攻击者可以很轻松地窃取剪贴板中的数据,进而利用这些数据来控制用户帐户。
我们知道,攻击者可以攻击位于局域网内部的设备。为此,他们必须具有对局域网内部结构有一个很好的了解才行,对内部网络图范围更应该有一个详细的了解。他们可以做出以下假设,家庭用户的地址范围为192.168.0.0–192.168.1.0,边界路由器地址为192.168.0.1或者192.168.1.1,而企业用户位于10.0.0.0范围内,因为这个地址范围能够容纳更多的用户。另一方面,在下列三个AttackAPI函数的帮助下攻击者可以很轻松地获得内部网络信息:
console.log($A.getInternalIP() );
console.log($A.getInternalHostname() );
console.dir($A.getInternalNetworkInfo() );
命令行窗口下方的“运行”按钮,就会看到这两个函数的执行结果,如下图所示:
攻击者可以很轻松地使用以下命令推测出边界路由器:
console.log(new String($A.getInternalIP() ).replace(/.d+$/, ‘.1’) );
知道了这些,攻击者可以针对它发动大量不同的攻击,以确定它的类型和版本,并最终通过跨站点脚本攻击(XSS)或者某些其他弱点来利用这个边界路由器。尽管老练的攻击者能够轻松提出一个合理的猜测,然而,猜测毕竟只是猜测而已,它未必总是有效。下面的内容中,我们将要利用AttackAPI进行更多的网络操作,但是现在我们只把精力集中在客户端调查上。
对于AttackAPI来说,激动人心的功能并不在于获取代理、平台、cookies、插件和内部网络信息,更多好戏还在后头。只要简
转载于:
精通JavaScript攻击框架:AttackAPI(上)
精通JavaScript攻击框架:AttackAPI(上)
精通JavaScript攻击框架:AttackAPI(上)相关推荐
- 精通JavaScript攻击框架:AttackAPI
多年来客户端安全一直未引起人们的足够重视,但是如今情况发生了急剧转变,客户端安全已经成为信息安全领域的焦点之一.Web恶意软件.AJAX蠕虫.浏览历史暴破.登录检测.傀儡控制技术网络端口扫描以及浏览器 ...
- 中间人攻击框架以及工具,中国寒龙出品欢迎下载!~
MITMf:中间人攻击框架 MITMF是一个可用于中间人攻击的框架.这个框架是基于Python的,它拥有数个插件,增加了更多的渗透测试方面的功能.一些实用的插件: jskeylogger – 这个插件 ...
- JavaScript 数组你都掰扯不明白,还敢说精通 JavaScript ?| 赠书
作者 | 哪吒 来源 | CSDN博客 最近小编在看文章的时候,总有很多刚刚入门的小白说精通这个,精通那个技术,更有意思的是,最近看到一则简历上说精通 JavaScript ,聊一聊发现数组还不明白, ...
- 新一波 JavaScript Web 框架
本文来自InfoQ中文站,原作者FrontEndMastery,译者Sambodhi,策划Tina 太过保守很难在 Javascript 生态系统中保持与时俱进.对于那些刚进入这个行业的人来说,要在新 ...
- 工赋开发者社区 | 新一波JavaScript Web框架
这篇文章让读者们了解为什么新的 JavaScript Web 框架扩散如此迅速,并且对大规模的问题和创新的最新发展进行了深入的探讨. 太过保守很难在 Javascript 生态系统中保持与时俱进.对于 ...
- javascript:12种JavaScript MVC框架之比较
Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月的时间研究和比较了12种流行的JavaScript MVC框架,并在博客中总结了每种框架的优缺点,最终的结果是,Ember. ...
- 精通python爬虫框架-精通Python爬虫从Scrapy到移动应用(文末福利)
原标题:精通Python爬虫从Scrapy到移动应用(文末福利) 我能够听到人们的尖叫声:"Appery.io是什么,一个手机应用的专用平台,它和Scrapy有什么关系?"那么,眼 ...
- JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- [转]12种JavaScript MVC框架之比较
From : http://www.infoq.com/cn/news/2012/05/js-mvc-framework/ Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月 ...
- AAAI 2020 开源论文 | 一种针对图嵌入模型的受限黑盒对抗攻击框架
AAAI(人工智能促进协会年会)是人工智能领域的顶级国际会议之一.今年的 AAAI 2020 是第 34 届,于 2 月 7 日至 12 日在美国纽约举行.今年,第 3 次参会的腾讯 AI Lab 共 ...
最新文章
- Android基础 : Android Service[转]
- windows 下xampp集成环境安装mongodb扩展
- vga显卡下载 linux,下载:NVIDIA显卡Linux驱动190.53正式版
- P6295 有标号 DAG 计数(多项式指数函数对数函数/二项式反演/动态规划/生成函数)
- java 换行 运算符格式_Java代码样式运算符换行格式
- 认识oracle监听器配置文件
- Android中Bitmap、Drawable、byte[]转换
- CSS3过渡、变形和动画
- JSON字符串,JSON对象的相互转换
- Padavan完整编译教程
- Linux日本云服务器安全设置的基本步骤
- 程序虽小但功能强大!5个实用的微信小程序,每款都是生活好帮手
- 表头顺序不一样的表格如何合并_excel表怎样将两张表的数据合并,顺序不一样...
- xnote1.5——WebShell
- windows7 VCP安装失败的解决办法
- Guard Ring的制作(基于IC617)
- 深圳:“我的情绪我做主”,文峰小学开展心理课堂
- 手把手教你搭建属于自己的技术博客(小白教程)
- 【红外】数字细节增强算法的缘由效果如何评价效果(我对FLIR算法文档详解)
- linux服务器查看历史,Linux服务器记录并查询历史操作记录
热门文章
- linux rz 安装包,Linux系统手动安装rz sz 软件包
- WIn10下如何为不同的显示器设置不同的桌面背景
- 计算机实验云平台,浅析基于云平台的计算机实验教学中心建设
- 树莓派安装OpenCV2教程 (详细教程)
- 射频微波天线知识点整理
- Ubuntu系统下安装Gaussian09和GaussianView5(GS16和GV6安装同理)
- linux红帽认证考试费,红帽rhce认证考试费用是多少?
- Linux 系统 nohup 命令详解
- List of USB ID's
- 【老生谈算法】matlab实现演化博弈算法源码——演化博弈