Перемещение каталога по URL-адресу root в Python - PullRequest
0 голосов
/ 06 апреля 2020

Как пройти через каталог, чтобы добраться до root в Python? Я написал некоторый код, используя BeautifulSoup, но там написано «модуль не найден». Итак, у меня есть это:

#
# There is a directory traversal vulnerability in the
# following page http://127.0.0.1:8082/humantechconfig?file=human.conf
# Write a script which will attempt various levels of directory
# traversal to find the right amount that will give access
# to the root directory. Inside will be a human.conf with the flag.
#
# Note: The script can timeout if this occurs try narrowing
# down your search


import urllib.request
import os

req = urllib.request.urlopen("http://127.0.0.1:8082/humantechconfig?file=human.conf")
dirName = "/tmp"
def getListOfFiles(dirName):

    listOfFile = os.listdir(dirName)
    allFiles = list()

    for entry in listOfFile:
        # Create full path
        fullPath = os.path.join(dirName, entry)

        if os.path.isdir(fullPath):
            allFiles = allFiles + getListOfFiles(fullPath)
        else:
            allFiles.append(fullPath)

    return allFiles
listOfFiles = getListOfFiles(dirName)
print(listOfFiles)

for file in listOfFiles:
 if file.endswith(".conf"):
 f = open(file, "r")
 print(f.read())

Это выводит:

/tmp/level-0/level-1/level-2/human.conf

User : Human 66

Flag: Not-Set (Must be Root Human)

Однако. Если я изменю URL-адрес на «http://127.0.0.1: 8082 / humantechconfig? File = .. / .. / .. / human.conf », он выдаст мне вывод:

User : Human 66

Flag: Not-Set (Must be Root Human)




User : Root Human

Flag: Well done the flag is: {}

Уровень обхода каталога, на котором он находится, колеблется в широких пределах, от /tmp/level-2 до /tmp/level-15; если это тот, который я написал, то он говорит, что я «Root Человек». Но это не даст мне флаг, несмотря на то, что я внезапно стал «Root Человеком». Что-то не так с тем, как я пересекаю каталог?

Спасибо!

...