zoukankan      html  css  js  c++  java
  • PHP漏洞全解(三)-客户端脚本植入

    客户端脚本植入(Script Insertion),是指将可以执行的脚本插入到表单、图片、动画或超链接文字等对象内。当用户打开这些对象后,攻击者所植入的脚本就会被执行,进而开始攻击。

    可以被用作脚本植入的HTML标签一般包括以下几种:

    1、<script>标签标记的javascript和vbscript等页面脚本程序。在<script>标签内可以指定js程序代码,也可以在src属性内指定js文件的URL路径

    2、<object>标签标记的对象。这些对象是java applet、多媒体文件和ActiveX控件等。通常在data属性内指定对象的URL路径

    3、<embed>标签标记的对象。这些对象是多媒体文件,例如:swf文件。通常在src属性内指定对象的URL路径

    4、<applet>标签标记的对象。这些对象是java applet,通常在codebase属性内指定对象的URL路径

    5、<form>标签标记的对象。通常在action属性内指定要处理表单数据的web应用程序的URL路径

    客户端脚本植入的攻击步骤

    1、攻击者注册普通用户后登陆网站

    2、打开留言页面,插入攻击的js代码

    3、其他用户登录网站(包括管理员),浏览此留言的内容

    4、隐藏在留言内容中的js代码被执行,攻击成功


    CREATE TABLE `postmessage` (

      `id` int(11) NOT NULL auto_increment,

      `subject` varchar(60) NOT NULL default '',

      `name` varchar(40) NOT NULL default '',

      `email` varchar(25) NOT NULL default '',

      `question` mediumtext NOT NULL,

      `postdate` datetime NOT NULL default '0000-00-00 00:00:00',

      PRIMARY KEY  (`id`)

    ) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 COMMENT='使用者的留言' AUTO_INCREMENT=69 ;

    //add.php 插入留言

    //list.php 留言列表

    //show.php 显示留言

    提交下图的留言

    浏览此留言的时候会执行js脚本

    插入 <script>while(1){windows.open();}</script> 无限弹框

    插入<script>location.href="http://www.sectop.com";</script> 跳转钓鱼页面

    或者使用其他自行构造的js代码进行攻击

    防范的方法

    一般使用htmlspecialchars函数来将特殊字符转换成HTML编码

    函数原型

    string htmlspecialchars (string string, int quote_style, string charset)

    string 是要编码的字符串 

    quote_style 可选,值可为ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默认值ENT_COMPAT,表示只转换双引号不转换单引号。 ENT_QUOTES,表示双引号和单引号都要转换。ENT_NOQUOTES,表示双引号和单引号都不转换 

    charset 可选,表示使用的字符集

    函数会将下列特殊字符转换成html编码:

    & ----> &

    " ----> "

    ' ----> '

    < ----> <

    > ----> >

    把show.php的第98行改成

    <?php echo htmlspecialchars(nl2br($row['question']), ENT_QUOTES); ?>

    然后再查看插入js的漏洞页面

  • 相关阅读:
    GhostBSD 3.0RC3,基于GNOME的FreeBSD
    Nagios 3.4.3 发布,企业级监控系统
    Jolokia 1.0.6 发布, JMX远程访问方法
    微软希望开发人员不要使 WebKit 成为新版 IE6
    Kwort Linux 3.5 正式版发布
    EJDB 1.0.24 发布,嵌入式 JSON 数据库引擎
    Pale Moon 15.3 Firefox“苍月”优化版发布
    Galera Load Balancer 0.8.1 发布
    SmartSVN V7.5 正式发布
    PostgresQL建立索引如何避免写数据锁定
  • 原文地址:https://www.cnblogs.com/pingliangren/p/5586973.html
Copyright © 2011-2022 走看看