QTcp를 사용하여 서버 - 클라이언트 연결을 설정할 수있는 응용 프로그램을 개발 중입니다. *TCP 네트워크 통신 보안 위험
클라이언트가 서버에 번호를 보냅니다.
수신 된 문자열의 길이와 품질 (이 숫자 정말?) 모든 것이 정상이면
, 서버가 다시 (전송 된 수에 따라 달라집니다) 파일 경로와 응답에 확인됩니다.
클라이언트는 파일이 존재하고 유효한 이미지인지 확인합니다. 파일이 규칙을 준수하면 파일 ()을 실행합니다.
이 연결 유형에는 어떤 보안 문제가 있습니까?
이 프로그램은 Linux 시스템 용으로 설계되었으며 외부 명령 은에 Qprocess를 사용하여 이미지 파일이 실행됩니다. 전송 된 문자열 (다음 명령을 실행하지 않음)과 같은이 포함 된 경우 : 다음
; rm -rf/
을 그것은 (이 파일 경로가 아니기 때문에) 보안 검사를 찾을 수없는 파일에 차단 될 것입니다. 보낸 문자열의 유효성에 대한 검사가 없으면 다음 명령이 실행됩니다.
command_to_run_on_image ; rm -rf/
패닉이 발생할 수 있습니다! 그러나 이것은 일어날 수 없다.
그래서 고려해야 할 사항이 있습니까?
어쨌든 설명이 불완전하다고 생각합니다. 클라이언트가 번호를 보내면됩니다. 서버가이 번호로 무엇을하고 있습니까? 서버가 파일 경로를 보냅니 까? 당신의 클라이언트 컴퓨터에? 그리고 갑자기 어떤 명령이 실행됩니까? 무슨 명령이야? 그거 어디서 났어? 서버는 설명에 따라 이미지의 경로 만 보냅니다. – Greenflow
질문을 편집했습니다. 클라이언트가 번호를 보내면 서버는이 번호에 의존하는 파일 경로로 응답합니다 (이미지는 클라이언트에 있지만 서버는 경로를 알고 있습니다). 클라이언트는 경로를 사용하여 이미지에서 명령을 실행합니다 . 이미지에서 실행 된 명령은 서버에 의해 보내지지 않습니다. 클라이언트는 이미 수신 된 경로에서 실행할 명령을 알고 있습니다. – hakermania
나는 어떤 위험도 보이지 않는다. 충분히 불안한 환경에서 나는 너의 숫자와 길을 냄새로 알 수 있었다. 어쩌면 서버에 대한 클라이언트 요청을 스푸핑 할 수 있으므로 요청하지 않은 '응답'을 받게됩니다. 하지만 명령을 바꿀 수는 없습니다. 클라이언트가 존재하지 않는 경로를 수신하면 어떻게됩니까?기대하지 않는 것은 무엇입니까? 또는/etc/passwd를 가리키는 하나입니까? – Greenflow