Plugin Directory

Changeset 1581570


Ignore:
Timestamp:
01/24/2017 11:51:41 PM (8 years ago)
Author:
mindnl
Message:

Bugfix for XSS and CSRF by adding nonce and input data cleanup

Location:
ad-buttons/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ad-buttons/trunk/adbuttons.php

    r984190 r1581570  
    55Description: Plugin to add ad buttons to your blog
    66Author: Nico
    7 Version: 2.3.1
     7Version: 2.3.2
    88Author URI: http://www.blogio.net/blog/
    99Questions, sugestions, problems? Let me know at [email protected]
     
    7171    dbDelta($structure);
    7272   
    73     $ad_buttons_version = "2.3.1";
     73    $ad_buttons_version = "2.3.2";
    7474    update_option("ad_buttons_version", $ad_buttons_version);
    7575
    76     $ad_buttons_db_version = "2.3.1";
     76    $ad_buttons_db_version = "2.3.2";
    7777    update_option("ad_buttons_db_version", $ad_buttons_db_version);
    7878   
     
    8585$ad_buttons_db_version = get_option("ad_buttons_db_version");
    8686
    87 if($ad_buttons_db_version <> "2.3.1"){
     87if($ad_buttons_db_version <> "2.3.2"){
    8888    // update database
    8989   
     
    146146    dbDelta($structure);
    147147   
    148     $ad_buttons_version = "2.3.1";
     148    $ad_buttons_version = "2.3.2";
    149149    update_option("ad_buttons_version", $ad_buttons_version);
    150150
    151     $ad_buttons_db_version = "2.3.1";
     151    $ad_buttons_db_version = "2.3.2";
    152152    update_option("ad_buttons_db_version", $ad_buttons_db_version);
    153153   
     
    462462    //add_submenu_page(__FILE__, 'Ad Buttons Test', 'Ad Network', 9, 'ad-buttons-test', 'ad_buttons_test_gae');
    463463    // see if allow_url_fopen is enabled
    464     if (ini_get('allow_url_fopen')) {
    465         add_submenu_page(__FILE__, 'Ad Buttons Network', 'Ad Network', 9, 'ad-buttons-network', 'ad_buttons_test_gae');
    466     } else {
    467         // allow_url_fopen is disabled see if CURL can be used...
    468         if (function_exists('curl_init')) {
    469             add_submenu_page(__FILE__, 'Ad Buttons Network', 'Ad Network', 9, 'ad-buttons-network', 'ad_buttons_test_gae');
    470         }
    471     }
     464//  if (ini_get('allow_url_fopen')) {
     465//      add_submenu_page(__FILE__, 'Ad Buttons Network', 'Ad Network', 9, 'ad-buttons-network', 'ad_buttons_test_gae');
     466//  } else {
     467//      // allow_url_fopen is disabled see if CURL can be used...
     468//      if (function_exists('curl_init')) {
     469//          add_submenu_page(__FILE__, 'Ad Buttons Network', 'Ad Network', 9, 'ad-buttons-network', 'ad_buttons_test_gae');
     470//      }
     471//  }
    472472}
    473473
     
    575575            update_option('widget_adbuttons_cfg', $options);
    576576        }
    577         $title = attribute_escape($options['ab_title']);
     577        $title = esc_attr($options['ab_title']);
    578578        ?>
    579579            <p><label for="adbuttons_widget_title"><?php _e('Title:'); ?> <input class="widefat" id="adbuttons_widget_title" name="adbuttons_widget_title" type="text" value="<?php echo $title; ?>" /></label></p>
     
    583583        <?php
    584584    }
    585    
     585
    586586    register_sidebar_widget( "Ad Buttons", "adbuttons_widget" );
    587587    register_widget_control( "Ad Buttons", "adbuttons_widget_control" );
  • ad-buttons/trunk/adbuttonsact.php

    r172892 r1581570  
    4848$widget_adbuttons_cfg = get_option('widget_adbuttons_cfg');
    4949
     50   
    5051// check if the form has been submitted and validate input
    5152if(isset($_POST['ab_img']) || isset($_POST['ab_link']) || isset($_POST['ab_txt'])) {
     53if (
     54    ! isset( $_POST['ab-create-nonce'] )
     55    || ! wp_verify_nonce( $_POST['ab-create-nonce'], 'ab-create' )
     56) {
     57
     58   print 'Sorry, your nonce did not verify.';
     59   exit;
     60
     61} else {
     62
     63
    5264                if (isset($_POST['ab_img'])) {
    53                     $ab_img = $htp.str_replace($htp, "", $_POST['ab_img']);
     65                    $ab_img = $htp.str_replace($htp, "", esc_html($_POST['ab_img']));
    5466                }
    5567
    5668                if (isset($_POST['ab_link'])) {
    5769                    if(substr($_POST['ab_link'], 0, 7) == $htp){
    58                         $ab_link = $_POST['ab_link'];
     70                        $ab_link = esc_html($_POST['ab_link']);
    5971                    }elseif(substr($_POST['ab_link'], 0, 8) == $htps){
    60                         $ab_link = $_POST['ab_link'];
     72                        $ab_link = esc_html($_POST['ab_link']);
    6173                    }else{
    6274                        $ab_link = $htp.$_POST['ab_link'];
     
    6678
    6779                if (isset($_POST['ab_txt'])) {
    68                     $ab_txt = $_POST['ab_txt'];
     80                    $ab_txt = esc_html($_POST['ab_txt']);
    6981                }
    7082               
     
    134146
    135147}
     148}
     149
    136150?>
    137151<?php if ($ol_flash != '') echo '<div id="message"class="updated fade"><p>' . $ol_flash . '</p></div>'; ?>
     
    147161
    148162<p><form method="post" name="ab_form">
    149 <?php wp_nonce_field('update-options');
     163<?php wp_nonce_field('ab-create', 'ab-create-nonce');
    150164$widget_adbuttons_cfg = get_option('widget_adbuttons_cfg');
    151165echo'<script src="'.$ab_plugindir.'/color_functions.js"></script>'; ?>
  • ad-buttons/trunk/adbuttonsadmin.php

    r901701 r1581570  
    4848    // install ip2nation database
    4949    // this is quite a large sql file, so it will take some time to process
    50     ini_set('max_execution_time', 300); //300 seconds = 5 minutes
     50    ini_set('max_execution_time', 600); //600 seconds = 10 minutes
    5151    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    5252    ob_start();
     
    157157}
    158158
     159
    159160if(isset($_POST['ab_dspcnt'])) {
     161
     162if (
     163    ! isset( $_POST['ab-update-options-nonce'] )
     164    || ! wp_verify_nonce( $_POST['ab-update-options-nonce'], 'ab-update-options' )
     165) {
     166
     167   print 'Sorry, your nonce did not verify.';
     168   exit;
     169
     170} else {
     171
     172   // process form data
     173
     174
     175
    160176        if (is_numeric ($_POST['ab_dspcnt'])) {
    161                     $widget_adbuttons_cfg['ab_title'] = $_POST['ab_title'];
    162                     $widget_adbuttons_cfg['ab_dspcnt'] = $_POST['ab_dspcnt'];
    163                     $widget_adbuttons_cfg['ab_target'] = $_POST['ab_target'];
    164                     $widget_adbuttons_cfg['ab_adsense'] = $_POST['ab_adsense'];
    165                     $widget_adbuttons_cfg['ab_adsense_fixed'] = $_POST['ab_adsense_fixed'];
    166                     $widget_adbuttons_cfg['ab_adsense_pos'] = $_POST['ab_adsense_pos'];
     177                    $widget_adbuttons_cfg['ab_title'] = esc_html($_POST['ab_title']);
     178                    $widget_adbuttons_cfg['ab_dspcnt'] = esc_html($_POST['ab_dspcnt']);
     179                    $widget_adbuttons_cfg['ab_target'] = esc_html($_POST['ab_target']);
     180                    $widget_adbuttons_cfg['ab_adsense'] = esc_html($_POST['ab_adsense']);
     181                    $widget_adbuttons_cfg['ab_adsense_fixed'] = esc_html($_POST['ab_adsense_fixed']);
     182                    $widget_adbuttons_cfg['ab_adsense_pos'] = esc_html($_POST['ab_adsense_pos']);
    167183                    if($widget_adbuttons_cfg['ab_adsense_pos'] > $widget_adbuttons_cfg['ab_dspcnt']){
    168184                        $widget_adbuttons_cfg['ab_adsense_pos'] = $widget_adbuttons_cfg['ab_dspcnt'];
    169185                        }
    170                     $widget_adbuttons_cfg['ab_adsense_pubid'] = $_POST['ab_adsense_pubid'];
    171                     $widget_adbuttons_cfg['ab_adsense_channel'] = $_POST['ab_adsense_channel'];
    172                     $widget_adbuttons_cfg['ab_adsense_corners'] = $_POST['ab_adsense_corners'];
    173                     $widget_adbuttons_cfg['ab_adsense_col_border'] = trim($_POST['ab_adsense_col_border'], "#");
    174                     $widget_adbuttons_cfg['ab_adsense_col_title'] = trim($_POST['ab_adsense_col_title'], "#");
    175                     $widget_adbuttons_cfg['ab_adsense_col_bg'] = trim($_POST['ab_adsense_col_bg'], "#");
    176                     $widget_adbuttons_cfg['ab_adsense_col_txt'] = trim($_POST['ab_adsense_col_txt'], "#");
    177                     $widget_adbuttons_cfg['ab_adsense_col_url'] = trim($_POST['ab_adsense_col_url'], "#");
    178                     $widget_adbuttons_cfg['ab_nocss'] = $_POST['ab_nocss'];
    179                     $widget_adbuttons_cfg['ab_width'] = $_POST['ab_width'];
    180                     $widget_adbuttons_cfg['ab_padding'] = $_POST['ab_padding'];
    181                     $widget_adbuttons_cfg['ab_nofollow'] = $_POST['ab_nofollow'];
    182                     $widget_adbuttons_cfg['ab_powered'] = $_POST['ab_powered'];
    183                     $widget_adbuttons_cfg['ab_yah'] = $_POST['ab_yah'];
    184                     $widget_adbuttons_cfg['ab_yourad'] = $_POST['ab_yourad'];
    185                     $widget_adbuttons_cfg['ab_geot'] = $_POST['ab_geot'];
    186                     $widget_adbuttons_cfg['ab_yaht'] = $_POST['ab_yaht'];
    187                     $widget_adbuttons_cfg['ab_yahurl'] = $_POST['ab_yahurl'];   
    188                     $widget_adbuttons_cfg['ab_anet'] = $_POST['ab_anet'];
    189                     $widget_adbuttons_cfg['ab_anetu'] = $_POST['ab_anetu'];
    190                     $widget_adbuttons_cfg['ab_anett'] = $_POST['ab_anett'];
    191                     $widget_adbuttons_cfg['ab_fix'] = $_POST['ab_fix'];
    192                     $widget_adbuttons_cfg['ab_count'] = $_POST['ab_count'];                 
     186                    $widget_adbuttons_cfg['ab_adsense_pubid'] = esc_html($_POST['ab_adsense_pubid']);
     187                    $widget_adbuttons_cfg['ab_adsense_channel'] = esc_html($_POST['ab_adsense_channel']);
     188                    $widget_adbuttons_cfg['ab_adsense_corners'] = esc_html($_POST['ab_adsense_corners']);
     189                    $widget_adbuttons_cfg['ab_adsense_col_border'] = trim(esc_html($_POST['ab_adsense_col_border']), "#");
     190                    $widget_adbuttons_cfg['ab_adsense_col_title'] = trim(esc_html($_POST['ab_adsense_col_title']), "#");
     191                    $widget_adbuttons_cfg['ab_adsense_col_bg'] = trim(esc_html($_POST['ab_adsense_col_bg']), "#");
     192                    $widget_adbuttons_cfg['ab_adsense_col_txt'] = trim(esc_html($_POST['ab_adsense_col_txt']), "#");
     193                    $widget_adbuttons_cfg['ab_adsense_col_url'] = trim(esc_html($_POST['ab_adsense_col_url']), "#");
     194                    $widget_adbuttons_cfg['ab_nocss'] = esc_html($_POST['ab_nocss']);
     195                    $widget_adbuttons_cfg['ab_width'] = esc_html($_POST['ab_width']);
     196                    $widget_adbuttons_cfg['ab_padding'] = esc_html($_POST['ab_padding']);
     197                    $widget_adbuttons_cfg['ab_nofollow'] = esc_html($_POST['ab_nofollow']);
     198                    $widget_adbuttons_cfg['ab_powered'] = esc_html($_POST['ab_powered']);
     199                    $widget_adbuttons_cfg['ab_yah'] = esc_html($_POST['ab_yah']);
     200                    $widget_adbuttons_cfg['ab_yourad'] = esc_html($_POST['ab_yourad']);
     201                    $widget_adbuttons_cfg['ab_geot'] = esc_html($_POST['ab_geot']);
     202                    $widget_adbuttons_cfg['ab_yaht'] = esc_html($_POST['ab_yaht']);
     203                    $widget_adbuttons_cfg['ab_yahurl'] = esc_html($_POST['ab_yahurl']);
     204                    $widget_adbuttons_cfg['ab_anet'] = esc_html($_POST['ab_anet']);
     205                    $widget_adbuttons_cfg['ab_anetu'] = esc_html($_POST['ab_anetu']);
     206                    $widget_adbuttons_cfg['ab_anett'] = esc_html($_POST['ab_anett']);
     207                    $widget_adbuttons_cfg['ab_fix'] = esc_html($_POST['ab_fix']);
     208                    $widget_adbuttons_cfg['ab_count'] = esc_html($_POST['ab_count']);                   
    193209                    update_option('widget_adbuttons_cfg',$widget_adbuttons_cfg);
    194210                    $ol_flash = "Your settings have been saved.";
     
    196212            $ab_num_err = 1;
    197213        }
     214        }
    198215}
    199 ?>
    200 <?php if ($ol_flash != '') echo '<div id="message"class="updated fade"><p>' . $ol_flash . '</p></div>'; ?>
     216
     217 if ($ol_flash != '') echo '<div id="message"class="updated fade"><p>' . $ol_flash . '</p></div>'; ?>
    201218
    202219<div class="wrap">
     
    204221
    205222
    206 <?php wp_nonce_field('update-options');
     223<?php
    207224$widget_adbuttons_cfg = get_option('widget_adbuttons_cfg');
    208225$ab_geot = $widget_adbuttons_cfg['ab_geot'];
     
    484501            tabDiv.appendChild(tabSpan);
    485502            var tabImg = document.createElement('IMG');
    486             tabImg.src = "tab_right_" + suffix + ".gif";
     503            tabImg.src = "<?php echo"$ab_plugindir";?>/tab_right_" + suffix + ".gif";
    487504            tabDiv.appendChild(tabImg);
    488505            div.appendChild(tabDiv);
     
    9981015</form>
    9991016<form method="post">
     1017<?php wp_nonce_field('ab-update-options', 'ab-update-options-nonce');?>
    10001018<tr valign="top">
    10011019<th scope="row">Enable geo targeting</th>
     
    11761194        </td>
    11771195        <td>
    1178         <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[0].ab_adsense_col_border)">
     1196        <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[1].ab_adsense_col_border)">
    11791197        </td>
    11801198    </tr>
     
    11871205        </td>
    11881206        <td>
    1189         <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[0].ab_adsense_col_title)">
     1207        <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[1].ab_adsense_col_title)">
    11901208        </td>
    11911209    </tr>
     
    11981216        </td>
    11991217        <td>
    1200         <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[0].ab_adsense_col_bg)">
     1218        <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[1].ab_adsense_col_bg)">
    12011219        </td>
    12021220    </tr>
     
    12091227        </td>
    12101228        <td>
    1211         <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[0].ab_adsense_col_txt)">
     1229        <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[1].ab_adsense_col_txt)">
    12121230        </td>
    12131231    </tr>
     
    12201238        </td>
    12211239        <td>
    1222         <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[0].ab_adsense_col_url)">
     1240        <input type="button" value="Color picker" onclick="showColorPicker(this,document.forms[1].ab_adsense_col_url)">
    12231241        </td>
    12241242    </tr>
  • ad-buttons/trunk/adbuttonstop.php

    r137030 r1581570  
    1515$ab_img_err = '';
    1616$ab_link_err= '';
     17
     18if (
     19    ! isset( $_POST['ab-create-nonce'] )
     20    || ! wp_verify_nonce( $_POST['ab-create-nonce'], 'ab-create' )
     21) {
     22
     23   print 'Sorry, your nonce did not verify.';
     24   exit;
     25
     26} else {
     27   
    1728// check if the form has been submitted and validate input
    1829if(isset($_POST['ab_img']) || isset($_POST['ab_link']) || isset($_POST['ab_txt'])) {
    1930                if (isset($_POST['ab_img'])) {
    20                     $ab_img = $htp.str_replace($htp, "", $_POST['ab_img']);
     31                    $ab_img = $htp.str_replace($htp, "", wp_specialchars_decode($_POST['ab_img']));
    2132                }
    2233
    2334                if (isset($_POST['ab_link'])) {
    24                     $ab_link = $htp.str_replace($htp, "", $_POST['ab_link']);
     35                    $ab_link = $htp.str_replace($htp, "", wp_specialchars_decode($_POST['ab_link']));
    2536                }
    2637
    2738                if (isset($_POST['ab_txt'])) {
    28                     $ab_txt = $_POST['ab_txt'];
     39                    $ab_txt = wp_specialchars_decode($_POST['ab_txt']);
    2940
    3041                }
    3142        if($ab_img == $htp || $ab_img == ''){
    32             $ab_img_err = 'Please fill in the link to your image file';
     43            $ab_img_err = 'Please fill in the link to your image filex';
    3344        }
    3445        if($ab_link == $htp || $ab_link == ''){
     
    5061
    5162}
     63}
    5264
    53 ?>
    54 <?php if ($ol_flash != '') echo '<div id="message"class="updated fade"><p>' . $ol_flash . '</p></div>'; ?>
     65if ($ol_flash != '') echo '<div id="message"class="updated fade"><p>' . $ol_flash . '</p></div>'; ?>
    5566<div class="wrap">
    5667
    5768<h2>Create new Ad Button</h2>
    5869<p><form method="post">
    59 <?php wp_nonce_field('update-options');
     70<?php wp_nonce_field('ab-create', 'ab-create-nonce');
    6071$widget_adbuttons_cfg = get_option('widget_adbuttons_cfg')
    6172?>
  • ad-buttons/trunk/readme.txt

    r984182 r1581570  
    33Donate link: http://blogio.net/blog/donate/
    44Tags: ads, buttons, advertising, monetizing, AdSense, 125, widget, sidebar, plugin, links, admin, google, geo, ip2nation
    5 Requires at least: 2.0.2
    6 Tested up to: 4.0
    7 Stable tag: 2.3.1
     5Requires at least: 2.8.0
     6Tested up to: 4.7.1
     7Stable tag: 2.3.2
    88
    99The Ad Buttons plugin displays a number of graphical ads in a sidebar widget.
     
    3939
    4040== Changelog ==
     41
     42= 2.3.2 =
     43* 24-01-2017
     44* added Nonce to admin pages
     45* bugfix for XSS vulnerability
     46* bugfix to the colorpicker
    4147
    4248= 2.3.1 =
Note: See TracChangeset for help on using the changeset viewer.