/
192-RedirDocumentRoot.py
53 lines (42 loc) · 1.44 KB
/
192-RedirDocumentRoot.py
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
from base import *
HOST = "192_test"
DIR = "192_dir"
FILE = "test_file"
MAGIC = "something"
CONF = """
vserver!192!nick = %s
vserver!192!document_root = %s
vserver!192!rule!300!match = request
vserver!192!rule!300!match!final = 0
vserver!192!rule!300!match!request = /%s/(.*)$
vserver!192!rule!300!handler = redir
vserver!192!rule!300!handler!rewrite!1!show = 0
vserver!192!rule!300!handler!rewrite!1!substring = /cgi-bin/program.cgi?param=$1
vserver!192!rule!200!match = directory
vserver!192!rule!200!match!directory = /cgi-bin
vserver!192!rule!200!match!final = 1
vserver!192!rule!200!handler = cgi
vserver!192!rule!200!document_root = %s
vserver!192!rule!100!match = default
vserver!192!rule!100!match!final = 1
vserver!192!rule!100!handler = file
"""
CGI_BASE = """#!/bin/sh
echo "Content-type: text/html"
echo
echo "%s"
""" % (MAGIC)
class Test (TestBase):
def __init__ (self):
TestBase.__init__ (self, __file__)
self.name = "Hiden Redir: DocumentRoot change"
self.request = "GET /%s/%s HTTP/1.0\r\n" % (DIR, FILE) + \
"Host: %s\r\n" % (HOST)
self.expected_error = 200
self.expected_content = MAGIC
self.forbidden_content = "/bin/sh"
def Prepare (self, www):
d = self.Mkdir (www, HOST)
c = self.Mkdir (d, "cgi-bin_root")
self.WriteFile (c, "program.cgi", 0555, CGI_BASE)
self.conf = CONF % (HOST, d, DIR, c)