티스토리 뷰

개발/PHP

[php] 웹셸(Web-Shell) 제작

Jaeyeon Baek 2016.06.10 09:18

여러가지 이유로 웹셸(Web-Shell)이 필요 했습니다.


보통 Shell을 사용하기 위해서는 terminal에 접속을 해야 하는데, 

이때는 console이나 telnet, ssh등의 서비스를 이용하게 됩니다.

또한 그러한 서비스를 이용하기 위해서는 putty나 Xshell등과 같은 접속 프로그램이 필요하죠.

 - OS가 Linux, Unix같은 계통이면 패스..


또한 80 포트는 열려 있지만 보안상의 이유로 telnet, ssh는 막혀 있는 경우가 종종 있습니다.

그리하여 80으로.. 웹 브라우저에서 사용할 수 있는 Shell을 만들게 됩니다.


단, 일반 bash와는 다르게 모든 명령어를 사용할 수 있을 필요는 없습니다.

어쨌든 보안을 생각해야 하므로 시스템에 장애를 유발할 수 있는 무언가는 안됩니다.

 - rm, reboot, halt, ip, ifconfig, while, 등등 너무나 많습니다.


제한을 걸어야 하는 명령어가 너무 많다 보니.. 생각의 전환이 필요 합니다.

제한해야 하는 명령어가 많다는 이야기는 반대로, 쓸수 있는 명령어를 제한 한다는 의미겠죠.

시스템에 영향을 주지 않는 명령어만 사용할 수 있는 List에 넣도록 했습니다.

 - df, date, find, ls 등. 

 - 단, 명령어는 세미콜론(;)이나 파이브(|)를 포함하면 안됩니다. 명령어 조합으로 새로운 취약점이 발생합니다.


그리하여 만들어진 웹셸입니다.

- 회사 관련 정보를 지우니 너무 지저분하지만.. 어쩔 수 없습니다.


어쨌든 회사를 위해 제작한 내용이니.. 소스코드는 비공개 (웃음)

Javascript, Ajax, php로 제작 되었습니다. 웹 개발자가 아니라서 Javascript, Ajax는 생소했는데

공부할 수 있는 좋은 시간이 되었네요.


예외처리

- key 입력시 커서를 화면 끝으로 자동 이동 (웹이라 마우스 클릭으로 커서를 이동해서 타이핑하는 것 방지)

- 웹 스크롤 autofocus (웹에 내용이 많아져서 스크롤바가 생기면 커서 위치로 스크롤 이동)

- 로그인 개념 처리 (로그인해야 사용할 수 있도록 회사 API 연동)

- 명령 수행은 php로 소스코드 노출 방지





댓글
  • 프로필사진 나그네 문의드립니다 제 pc에서 특정 명령어들이 안먹히거나 작동을 안하는데 무슨 문제가 있는건가요 2019.07.17 22:19
  • 프로필사진 BlogIcon Jaeyeon Baek 내용을 이해하기 어렵네요. 조금 더 구체적으로 말씀해주시면 같이 고민해볼수 있겠습니다. :) 2019.07.17 22:47 신고
댓글쓰기 폼