> Exploit #1: > http://www.example.com/cgi-bin/awstats.pl?diricons=%22%3E0wned!%3Cspan%20%22
I see. Thank you for taking the time to put these examples together for us. :-) I've prepared an updated patch that should take care of both bug #364443 and #365909. Any final comments on anything I'm missing before moving forward with this patch? thanks, Charles -- As you journey Down the years Your mirror is The glass that cheers If you use Burma-Shave http://burma-shave.org/jingles/1936/as_you_journey
Index: awstats-6.5/wwwroot/cgi-bin/awstats.pl
===================================================================
--- awstats-6.5.orig/wwwroot/cgi-bin/awstats.pl 2005-11-24 15:11:19.000000000
-0500
+++ awstats-6.5/wwwroot/cgi-bin/awstats.pl 2006-05-05 16:43:12.000000000
-0400
@@ -5542,8 +5542,8 @@
# No update but report by default when run from a browser
$UpdateStats=($QueryString=~/update=1/i?1:0);
- if ($QueryString =~ /config=([^&]+)/i) {
$SiteConfig=&DecodeEncodedString("$1"); }
- if ($QueryString =~ /diricons=([^&]+)/i) {
$DirIcons=&DecodeEncodedString("$1"); }
+ if ($QueryString =~ /config=([^&]+)/i) {
$SiteConfig=&Sanitize(&DecodeEncodedString("$1")); }
+ if ($QueryString =~ /diricons=([^&]+)/i) {
$DirIcons=&Sanitize(&DecodeEncodedString("$1")); }
if ($QueryString =~ /pluginmode=([^&]+)/i) {
$PluginMode=&Sanitize(&DecodeEncodedString("$1"),1); }
if ($QueryString =~ /configdir=([^&]+)/i) {
$DirConfig=&Sanitize(&DecodeEncodedString("$1")); }
# All filters
@@ -5561,7 +5561,7 @@
# If migrate
if ($QueryString =~ /(^|-|&|&)migrate=([^&]+)/i) {
- $MigrateStats=&DecodeEncodedString("$2");
+ $MigrateStats=&Sanitize(&DecodeEncodedString("$2"));
$MigrateStats =~
/^(.*)$PROG(\d{0,2})(\d\d)(\d\d\d\d)(.*)\.txt$/;
$SiteConfig=$5?$5:'xxx'; $SiteConfig =~ s/^\.//;
# SiteConfig is used to find config file
}
@@ -5591,8 +5591,8 @@
# Update with no report by default when run from command line
$UpdateStats=1;
- if ($QueryString =~ /config=([^&]+)/i) {
$SiteConfig="$1"; }
- if ($QueryString =~ /diricons=([^&]+)/i) {
$DirIcons="$1"; }
+ if ($QueryString =~ /config=([^&]+)/i) {
$SiteConfig=&Sanitize("$1"); }
+ if ($QueryString =~ /diricons=([^&]+)/i) {
$DirIcons=&Sanitize("$1"); }
if ($QueryString =~ /pluginmode=([^&]+)/i) {
$PluginMode=&Sanitize("$1",1); }
if ($QueryString =~ /configdir=([^&]+)/i) {
$DirConfig=&Sanitize("$1"); }
# All filters
signature.asc
Description: Digital signature

