文章目录:
php网站怎样防御xss攻击?
过滤用户输入的script/script以及其他的HTML标签等。。
什么是phpinfo xss跨站脚本攻击漏洞?
php是一款被广泛使用的编程语言,可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数,许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示,但是phpinfo里存在一些安全问题,导致精心构造数据就可以产生一个跨站脚本漏洞,可以被用来进行攻击。
漏洞成因: phpinfo页面对输入的参数都做了详细的过滤,但是没有对输出的进行charset的指定,而在一些浏览器里如IE7里,你可以让它自动选择编码或者通过一个iframe页面给它指定编码,这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
漏洞来源:
漏洞利用: 利用代码如下:
html
head
META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"
/head
body
iframe src=";+ADw-/SCRIPT+AD4-=1"
以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险,因为如果有phpinfo的存在,恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。
漏洞影响: 影响所有版本的php和浏览器IE7
漏洞修补: 建议暂时删除站点的phpinfo页面避免被人利用。
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手册来查看:
黑客入侵攻击的一般有哪些基本过程
1、信息收集
1.1/ Whois信息--注册人、电话、邮箱、DNS、地址
1.2/ Googlehack--敏感目录、敏感文件、更多信息收集
1.3/ 服务器IP--Nmap扫描、端口对应的服务、C段
1.4/ 旁注--Bing查询、脚本工具
1.5/ 如果遇到CDN--Cloudflare(绕过)、从子域入手(mail,postfix)、DNS传送域漏洞
1.6/ 服务器、组件(指纹)--操作系统、web server(apache,nginx,iis)、脚本语言
1.7/ More.
2、漏洞挖掘
2.1/ 探测Web应用指纹--Discuz、PHPwind、Dedecms、Ecshop...
2.2/ XSS、CSRF、XSIO、SQLinjection、权限绕过、任意文件读取、文件包含...
2.3/ 上传漏洞--截断、修改、解析漏洞
2.4/ 有无验证码--进行暴力破解
2.5/ More..
3、漏洞利用
3.1/ 思考目的性--达到什么样的效果
3.2/ 隐藏,破坏性--根据探测到的应用指纹寻找对应的EXP攻击载荷或者自己编写
3.3/ 开始漏洞攻击,获取相应权限,根据场景不同变化思路拿到webshell
HP手册来查看:黑客入侵攻击的一般有哪些基本过程1、信息收集1.1/ Whois信息--注册人、电话、邮箱、DNS、地址1.2/ Googlehack--敏感目录、敏感文件、更多信息收集1.3/ 服务器IP--Nmap扫