From f944b2592d581ddb7e6c7614ea3766328084b682 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 23 Apr 2021 00:29:32 +0000 Subject: First commit --- Inject.pm | 25 +++++++++++++++++++++++++ Inject/Handler.pm | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 Inject.pm create mode 100644 Inject/Handler.pm diff --git a/Inject.pm b/Inject.pm new file mode 100644 index 0000000..5b6df8d --- /dev/null +++ b/Inject.pm @@ -0,0 +1,25 @@ +package Apache::Inject; + +use strict; +use warnings; + +use Apache2::CmdParms (); +use Apache2::Module (); +use Apache2::Const qw/OR_LIMIT TAKE12/; + +my @directives = ( + { name => 'Inject', + func => __PACKAGE__.'::Inject', + req_override => OR_LIMIT, + args_how => TAKE12, + errmsg => 'Inject HeadFile[!] FootFile[!]' } +); +Apache2::Module::add(__PACKAGE__, \@directives); + +sub Inject { + my ($self, $parms, @args) = @_; + $parms->add_config(['SetHandler perl-script', + 'PerlHandler Apache::Inject::Handler']); +} + +1; diff --git a/Inject/Handler.pm b/Inject/Handler.pm new file mode 100644 index 0000000..adeec57 --- /dev/null +++ b/Inject/Handler.pm @@ -0,0 +1,40 @@ +package Apache::Inject::Handler; + +use strict; +use warnings; + +use Apache2::RequestRec (); +use Apache2::RequestUtil (); +use Apache2::Const qw/OK DECLINED/; + +my $doc = qr{ + (? *]>.*? + | + ( ]*>.*? + | ]*> + | ]*> + | ]*> + | ]*>.*? + | ]*>.*? # n.b. + | ]*>.*? # n.b. + | ]*>.*? # n.b.! + )+ ) + (? .* ) +}xms; + +sub handler { + my $r = shift; + + return DECLINED if not $r->content_type eq 'text/html'; + + my $content = ${$r->slurp_filename}; + return DECLINED if not $content =~ /$doc/; + print $+{head}; + print "Injection 1\n"; + print $+{body}; + print "Injection 2\n"; + + return OK; +} + +1; -- cgit v1.2.3