mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-31 13:00:49 +00:00
Implemented -x option
This commit is contained in:
1 parent
33853cd5de
commit
6619f2edac
3 files changed
+41
-23
No files matched your search
+20
-10
@@ -174,14 +174,20 @@ my $cmd = "$exe ".
|
||||
'-put_delete_passwords_file test/passfile ' .
|
||||
'-access_control_list -0.0.0.0/0,+127.0.0.1 ' .
|
||||
"-document_root $root ".
|
||||
"-hide_files_patterns **exploit.pl ".
|
||||
"-enable_keep_alive yes ".
|
||||
"-url_rewrite_patterns /aiased=/etc/,/ta=$test_dir";
|
||||
$cmd .= ' -cgi_interpreter perl' if on_windows();
|
||||
spawn($cmd);
|
||||
|
||||
my $x = 'x=' . 'A' x (200 * 1024);
|
||||
my $len = length($x);
|
||||
o("POST /env.cgi HTTP/1.0\r\nContent-Length: $len\r\n\r\n$x",
|
||||
'^HTTP/1.1 200 OK', 'Long POST');
|
||||
o("GET /hello.txt HTTP/1.1\n\n GET /hello.txt HTTP/1.0\n\n",
|
||||
'HTTP/1.1 200.+keep-alive.+HTTP/1.1 200.+close',
|
||||
'Request pipelining', 2);
|
||||
|
||||
my $x = 'x=' . 'A' x (200 * 1024);
|
||||
my $len = length($x);
|
||||
o("POST /env.cgi HTTP/1.0\r\nContent-Length: $len\r\n\r\n$x",
|
||||
'^HTTP/1.1 200 OK', 'Long POST');
|
||||
|
||||
# Try to overflow: Send very long request
|
||||
req('POST ' . '/..' x 100 . 'ABCD' x 3000 . "\n\n", 0); # don't log this one
|
||||
@@ -245,7 +251,8 @@ o("GET /$test_dir_uri/x/ HTTP/1.0\n\n",
|
||||
"SCRIPT_FILENAME=test/test_dir/x/index.cgi", 'SCRIPT_FILENAME');
|
||||
o("GET /ta/x/ HTTP/1.0\n\n", "SCRIPT_NAME=/ta/x/index.cgi",
|
||||
'Aliases SCRIPT_NAME');
|
||||
o("GET /hello.txt HTTP/1.1\n\n", 'Connection: close', 'No keep-alive');
|
||||
o("GET /hello.txt HTTP/1.1\nConnection: close\n\n", 'Connection: close',
|
||||
'No keep-alive');
|
||||
|
||||
$path = $test_dir . $dir_separator . 'x' . $dir_separator . 'a.cgi';
|
||||
system("ln -s `which perl` $root/myperl") == 0 or fail("Can't symlink perl");
|
||||
@@ -253,11 +260,6 @@ write_file($path, "#!../../myperl\n" .
|
||||
"print \"Content-Type: text/plain\\n\\nhi\";");
|
||||
chmod(0755, $path);
|
||||
o("GET /$test_dir_uri/x/a.cgi HTTP/1.0\n\n", "hi", 'Relative CGI interp path');
|
||||
|
||||
#o("GET /hello.txt HTTP/1.1\n\n GET /hello.txt HTTP/1.0\n\n",
|
||||
# 'HTTP/1.1 200.+keep-alive.+HTTP/1.1 200.+close',
|
||||
# 'Request pipelining', 2);
|
||||
|
||||
o("GET * HTTP/1.0\n\n", "^HTTP/1.1 404", '* URI');
|
||||
|
||||
my $mime_types = {
|
||||
@@ -343,6 +345,14 @@ unless (scalar(@ARGV) > 0 and $ARGV[0] eq "basic_tests") {
|
||||
"realm=\"mydomain.com\", nonce=\"1291376417\", uri=\"/\",".
|
||||
"response=\"e8dec0c2a1a0c8a7e9a97b4b5ea6a6e6\", qop=auth, nc=00000001, cnonce=\"1a49b53a47a66e82\"";
|
||||
o("GET /hello.txt HTTP/1.0\nAuthorization: $auth_header\n\n", 'HTTP/1.1 200 OK', 'GET regular file with auth');
|
||||
o("GET / HTTP/1.0\nAuthorization: $auth_header\n\n", '^(.(?!(.htpasswd)))*$',
|
||||
'.htpasswd is hidden from the directory list');
|
||||
o("GET / HTTP/1.0\nAuthorization: $auth_header\n\n", '^(.(?!(exploit.pl)))*$',
|
||||
'hidden file is hidden from the directory list');
|
||||
o("GET /.htpasswd HTTP/1.0\nAuthorization: $auth_header\n\n",
|
||||
'^HTTP/1.1 404 ', '.htpasswd must not be shown');
|
||||
o("GET /exploit.pl HTTP/1.0\nAuthorization: $auth_header\n\n",
|
||||
'^HTTP/1.1 404', 'hidden files must not be shown');
|
||||
unlink "$root/.htpasswd";
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user