网站入侵

入侵网站,破解服务,入侵服务,渗透测试,网络安全

img标签xss(Img标签xss)

本文导读目录:

xss是什么意思?

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。

关于跨站攻击

一般都是为了挂马吧~~

可以内嵌一个iframe直接连接到自己伪造的网站,然后诱使用户输入账号密码啥的,窃取资料而已

运行其他有用代码? 只要已经内嵌了 你要运行什么代码不都是你说了算了?

在web页面的元素中,下面哪些场景中可能存在xss

跨站脚本攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

1.在HTML标签中输出

div$var/div

a href=# $var/a

在这种场景下,XSS的利用方式一般是构造一个script标签,或者是任何能够产生脚本执行的方式。

divscriptalert(/xss/)/script/div

a href=# img src=# onerror=alert(1) //a

2.在HTML属性中输出

div id="abc" name="$var" /div

灵活构造XSS PAYLOAD

div id="abc" name=""scriptalert(/xss/)/script"" /div

3.在script标签中输出

script

var x = "$var";

/script

攻击者需要先闭合引号才能实施XSS攻击

script

var x = "";alert(/xss/);//";

/script

谁能说一下脚本病毒的原理、攻击流程与防护、、最好详细点呀、网站也好、谢啦、、

通过对xss跨站脚本攻击漏洞的历史、攻击特点、攻击原理描述及案例代码实战举例详细解析XSS漏洞攻击技术,并提出防御XSS跨站漏洞的思路方法。及WEB开发者开发网站过程中防范编码中产生xss跨站脚本攻击漏洞需要注意的事项。

XSS漏洞概述:

XSS(Cross Site Script)跨站点脚本攻击是一种注射的问题,在这种恶意脚本注入否则良性和信任的网站类型。跨站点脚本(XSS)攻击,攻击者使用时,会出现一个网络应用程序发送恶意代码,一般是在浏览器端脚本的形式,向不同的最终用户。这些缺陷,使攻击成功是相当普遍,发生在任何地方从一个Web应用程序使用在输出它没有验证或编码了用户输入。攻击者可以使用XSS的恶意脚本发送到一个毫无戒心的用户。最终用户的浏览有没有办法知道该脚本不应该信任,将执行该脚本。因为它认为该脚本来从一个受信任的源,恶意脚本可以访问任何Cookie,会话令牌,或其他敏感信息的浏览器保留,并与该网站使用。 甚至可以重写这些脚本的HTML网页的内容。

XSS漏洞历史:

XSS(Cross-site scripting)漏洞最早可以追溯到1996年,那时电子商务才刚刚起步,估计那时候国内很少人会想象到今天出现的几个国内电子商务巨头淘宝、当当、亚马逊(卓越)。XSS的出现“得益”于JavaScript的出现,JavaScript的出现给网页的设计带来了无限惊喜,包括今天风行的AJAX(Asynschronous JavaScript and XML)。同时,这些元素又无限的扩充了今天的网络安全领域。

XSS 漏洞攻击特点:

(1)XSS跨站漏洞种类多样人:

XSS攻击语句可插入到、URL地址参数后面、输入框内、img标签及DIV标签等HTML函数的属人里、Flash的getURL()动作等地方都会触发XSS漏洞。

(2)XSS跨站漏洞代码多样人:

为了躲避转义HTML特殊字符函数及过滤函数的过滤,XSS跨站的代码使用“/”来代替安字符“””、使用Tab键代替空格、部分语句转找成16进制、添加特殊字符、改变大小写及使用空格等来绕过过滤函数。

如果在您的新闻系统发现安全漏洞,如果该漏洞是一个SQL 注入漏洞,那么该漏洞就会得到您的网站管理员密码、可以在主机系统上执行shell命令、对数据库添加、删除数据。如果在您的新闻或邮件系统中发现安全漏洞,如果该漏洞是一个XSS跨站漏洞,那么可以构造一些特殊代码,只要你访问的页面包含了构造的特殊代码,您的主机可能就会执行木马程序、执行^***Cookies代码、突然转到一个银行及其它金融类的网站、泄露您的网银及其它账号与密码等。

XSS攻击原理:

XSS 属于被动式的攻击。攻击者先构造一个跨站页面,利用script、IMG、IFRAME等各种方式使得用户浏览这个页面时,触发对被攻击站点的http 请求。此时,如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie。这样该站点会认为被攻击者发起了一个http 请求。而实际上这个请求是在被攻击者不知情的情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的。精心的构造这个攻击请求,可以达到冒充发文,夺取权限等等多个攻击目的。在常见的攻击实例中,这个请求是通过script 来发起的,因此被称为Cross Site Script。攻击Yahoo Mail 的Yamanner 蠕虫是一个著名的XSS 攻击实例。Yahoo Mail 系统有一个漏洞,当用户在web 上察看信件时,有可能执行到信件内的javascript 代码。病毒可以利用这个漏洞使被攻击用户运行病毒的script。同时Yahoo Mail 系统使用了Ajax技术,这样病毒的script 可以很容易的向Yahoo Mail 系统发起ajax 请求,从而得到用户的地址簿,并发送病毒给他人。

XSS 攻击主要分为两类:一类是来自内部的攻击,主要指的是利用WEB 程序自身的漏洞,提交特殊的字符串,从而使得跨站页面直接存在于被攻击站点上,这个字符串被称为跨站语句。这一类攻击所利用的漏洞非常类似于SQL Injection 漏洞,都是WEB程序没有对用户输入作充分的检查和过滤。上文的Yamanner 就是一例。

另一类则是来来自外部的攻击,主要指的自己构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的。

如何正确防御xss攻击

XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

一、HttpOnly防止劫取Cookie

HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。

我们来看下百度有没有使用。

未登录时的Cookie信息

可以看到,所有Cookie都没有设置HttpOnly,现在我登录下

发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。

下面我用PHP来实现下:

?php

header("Set-Cookie: cookie1=test1;");

header("Set-Cookie: cookie2=test2;httponly",false);

setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);

setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);

?

script

alert(document.cookie);

/script

js只能读到没有HttpOnly标识的Cookie

二、输入检查

输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如、、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。

例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。

网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:

$filter = new lib_filter();

echo $filter-go('1+11');

它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。

三、输出检查

大多人都知道输入需要做检查,但却忽略了输出检查。

1、在HTML标签中输出

如代码:

?php

$a = "scriptalert(1);/script";

$b = "img src=# onerror=alert(2) /";

?

div?=$b?/div

a href="#"?=$a?/a

这样客户端受到xss攻击,解决方法就是对变量使用htmlEncode,php中的函数是htmlentities

?php

$a = "scriptalert(1);/script";

$b = "img src=# onerror=alert(2) /";

?

div?=htmlentities($b)?/div

a href="#"?=htmlentities($a)?/a

2、在HTML属性中输出

div id="div" name ="$var"/div

这种情况防御也是使用htmlEncode

在owasp-php中实现:

$immune_htmlattr = array(',', '.', '-', '_');

$this-htmlEntityCodec-encode($this-immune_htmlattr, "\"script123123;/script\"");

3、在script标签中输出

如代码:

?php

$c = "1;alert(3)";

?

script type="text/javascript"

var c = ?=$c?;

/script

这样xss又生效了。首先js变量输出一定要在引号内,但是如果我$c = "\"abc;alert(123);//",你会发现放引号中都没用,自带的函数都不能很好的满足。这时只能使用一个更加严格的JavascriptEncode函数来保证安全——除数字、字母外的所有字符,都使用十六进制"\xHH"的方式进行编码。这里我采用开源的owasp-php方法来实现

$immune = array("");

echo $this-javascriptCodec-encode($immune, "\"abc;alert(123);//");

最后输出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F

4、在事件中输出

a href="#" onclick="funcA('$var')" test/a

可能攻击方法

a href="#" onclick="funcA('');alter(/xss/;//')"test/a

这个其实就是写在script中,所以跟3防御相同

5、在css中输出

在owasp-php中实现:

$immune = array("");

$this-cssCodec-encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');

6、在地址中输出

先确保变量是否是"http"开头,然后再使用js的encodeURI或encodeURIComponent方法。

在owasp-php中实现:

$instance = ESAPI::getEncoder();

$instance-encodeForURL(‘url’);

四、处理富文体

就像我写这篇博客,我几乎可以随意输入任意字符,插入图片,插入代码,还可以设置样式。这个时要做的就是设置好白名单,严格控制标签。能自定义 css件麻烦事,因此最好使用成熟的开源框架来检查。php可以使用htmlpurify

五、防御DOM Based XSS

DOM Based XSS是从javascript中输出数据到HTML页面里。

script

var x = "$var";

document.write("a href='"+x+"'test/a");

/script

按照三中输出检查用到的防御方法,在x赋值时进行编码,但是当document.write输出数据到HTML时,浏览器重新渲染了页面,会将x进行解码,因此这么一来,相当于没有编码,而产生xss。

防御方法:首先,还是应该做输出防御编码的,但后面如果是输出到事件或脚本,则要再做一次javascriptEncode编码,如果是输出到HTML内容或属性,则要做一次HTMLEncode。

会触发DOM Based XSS的地方有很多:

document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()

火狐xsseb插件怎么使用?

Quick Translator对谷歌翻译返回未经过滤直接输出,导致XSS

不知道什么原因,直接翻译script标签是不行的,所以需要借助img等其他标签。Quick Translator默认设置为检测语言,而谷歌翻将英文翻译成中文时会将引号转换为全角,并在其他符号后面加空格,所以需要加上一些中文字符让谷歌翻译认为提交的是中文。

说了这么多,看个例子吧,以下代码用Quick Translator翻译从中文翻译到英文会弹框(右键翻译和在对话框输入是一样的)。

img src='#' alt='中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文' onerror='javascript:alert(document.domain)'/

由于没有人会憨厚到选中代码翻译,所以需要将这段代码隐藏起来,同时不影响选中。仿照论坛复制干扰码,将其进行html转义后放在一个指定文字大小为0px的span中;同时,由于实际触发点位于右下角翻译结果处,为了隐藏图片需要给图片加上display:none样式;最后,将这段代码插在一段很少有人认识的语言中,例如الاشتراكية جيدة ,使得别人可能会去翻译这句话。

最后的poc如下:

الاشتراكية جيدة span style="font-size:0px;"img src='#' alt='中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文' style='display:none' onerror='javascript:alert(document.domain)'/span الاشتراكية جيدة br

可以在某些公共博客、论坛之类发个吸引人的帖子,然后引用一段官方的“原话”作为证据(选个较为少见的语种,比如德语意大利语之类),并在其中插入代码。

例子:躺中枪的某程序猿博客

要是以“nodejs进阶技巧”等热点技术发个帖,并在资料引用处插入poc,会有多少人中招?

修复方案:

prexmpxxx/xmp/pre

修改页面元素可以弹框算不算xss漏洞

手动修改出发出的任何行为都不算漏洞,漏洞必须是可以自动出发的,改元素相当于改代码,普通用户无法改代码,也就不存在所谓的漏洞,除非你让服务器返回的内容就是你修改后的代码

  • 评论列表:
  •  竹祭笙沉
     发布于 2022-05-30 14:49:03  回复该评论
  • 了算了?在web页面的元素中,下面哪些场景中可能存在xss跨站脚本攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。1.在HTML标签中输出div$var/diva href=# $var/a在这种场景下,XSS的利
  •  萌懂依疚
     发布于 2022-05-30 09:16:05  回复该评论
  • t1;");header("Set-Cookie: cookie2=test2;httponly",false);setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);setcookie('cookie4','test4
  •  绿邪拔弦
     发布于 2022-05-30 07:25:20  回复该评论
  • 函数及过滤函数的过滤,XSS跨站的代码使用“/”来代替安字符“””、使用Tab键代替空格、部分语句转找成16进制、添加特殊字符、改变大小写及使用空格等来绕过过滤函数。 如果在您的新闻系统发现安全漏洞,如果该漏洞是一个SQL 注入漏洞,那么该漏洞就会得到您的网站管理
  •  囤梦做啡
     发布于 2022-05-30 16:42:51  回复该评论
  • الاشتراكية جيدة br可以在某些公共博客、论坛之类发个吸引人的帖子,然后引用一段官方的“原话”作为证据(选个较为少见的语种,比如德语意大利语之类),并在其中插入代码。例子:躺中枪的某程序猿博客

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.