This file is indexed.

/usr/share/modsecurity-crs/util/rule-management/remove-2.7-actions.pl is in modsecurity-crs 2.2.8-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
#!/usr/bin/perl

#############################################
# -=[ Virtual Patching Converter Script ]=- #
#   Converts to previous modsec versions    #
#                                           #
#             modsec2modsec.pl              #
#               Version: 1.0                #
#                                           #
#            Copyright 2013                 #
#  Mathieu Parent <math.parent@gmail.com>   #
#############################################

use strict;
use warnings;
use Getopt::Std;
use File::Find ();
use File::Copy;

# Parse options
my %opts;
getopts("t:f:nvd",\%opts);
my $target_version = $opts{'t'};
my $filename = $opts{'f'};
my $no_backup = $opts{'n'};
my $verbose = $opts{'v'};
my $debug = $opts{'d'};

# Check options
unless ($target_version && $filename) {
    print "Flag:\n\n".
      "\t -t:\t target version\n".
      "\t -f:\t file or directory to convert\n".
      "\t -n:\t no backup file\n".
      "\t -v:\t be verbose\n".
      "\t -d:\t debug\n".
      "Usage:\n\n".
      "\t./modsec2modsec.pl -t 2.6 -f .\n\n";
    exit 1;
}
unless ($target_version eq '2.6') {
  print "Unknown target version $target_version. Use one of: 2.6.\n";
  exit 1;
}
my @target_version  = split( /\./, $target_version );

# Suffixes
my $bck = '.old'; # Backup suffix
my $tmp = '.tmp'; # Tempfile suffix

# Traverse directory
File::Find::find({wanted => \&process, no_chdir => 1}, $filename);

exit 0;

sub target_version_below {
  # Caveats: Only versions X.Y are supported
  my @ver  = split( /\./, shift );
  return ( $target_version[0] < $ver[0]
          || $target_version[1] < $ver[1] );
}

sub process {
    my ($dev,$ino,$mode,$nlink,$uid,$gid);

    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
    -f _ &&
    /^.*\.conf\z/s
    && process_file($File::Find::name);
}

sub process_file {
  my $filename = shift;
  print "Processing $filename\n" if $verbose;
  # Clean up any remaining tempfile
  if (-f "$filename$tmp") {
    print "Deleting $filename$tmp\n" if $debug;
    unlink "$filename$tmp" or die "Unable to delete $filename$tmp: $!";
  }
  # Open both input and output
  open(my $input, '<', $filename) or die "Unable to open $filename: $!";
  open(my $output, '>', "$filename$tmp") or die "Unable to open $filename$tmp: $!";
  # Read input line by line
  while (<$input>) {
    if (target_version_below('2.7')) {
      s/ver:'[^']+',//;
      s/maturity:'[^']+',//;
      s/accuracy:'[^']+',//;
    }
    print $output $_;
  }
  close($input);
  close($output);
  if (!$no_backup && -f "$filename$bck") {
    print "Deleting $filename$bck\n" if $debug;
    unlink "$filename$bck" or die "Unable to delete $filename$bck: $!";
  }
  if (!$no_backup) {
    print "Moving $filename to $filename$bck\n" if $debug;
    move($filename, "$filename$bck") or die "Unable to move $filename to $filename$bck: $!";
  }
  print "Moving $filename$tmp to $filename\n" if $debug;
  move("$filename$tmp", $filename) or die "Unable to open $filename$tmp to $filename: $!";
}