비트(bit)주세요

Web Shell 본문

정보보안/웹보안

Web Shell

yglee730 2021. 5. 27. 17:12
728x90

먼저 보고 오시면 도움이 되는 게시물입니다.

https://standardh.tistory.com/41?category=959650 

 

netcat과 포트포워딩

먼저 보고 오시면 조금이나마 도움이 되는 게시물입니다. https://standardh.tistory.com/40 방화벽 방화벽(firewall) : 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을  모니터링하

standardh.tistory.com

 

Web Shell : 웹사이트를 통해 쉘을 여는 공격

 

Shell : 운영체제의 커널과 사용자 사이를 이어주는 것

 

 

Web shell을 실습해보기 위해 만들어진 소스인 b374k를 다운받겠습니다.

아래 사이트에 접속하여 다운해줍니다.

https://code.google.com/archive/p/b374k-shell/downloads

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

 

버전은 아무거나 상관없습니다.

저는 b374k-2.8.php를 다운했습니다.

DVWA에서 실습해볼 것이니 DVWA에 들어가 File Upload칸을 클릭해줍니다.

보안레벨은 Low입니다.

 

다운받은 파일을 선택해 업로드합니다.

 

업로드가 성공적으로 되면 서버의 어느 경로에 저장되어졌는지 출력됩니다.

URL로 해당 경로에 접속하여 Web Shell 파일을 실행합니다.

 

패스워드는 b374k 입니다.

 

[XPL] : 서버의 디렉토리에 존재하는 파일 등을 조회할 수 있는 곳

 

[PS] : 서버의 프로세스에 대한 정보를 조회할 수 있는 곳

            -> kill 누르면 그 프로세스를 죽일 수 있음

 

[EVAL] : 코드 작성해서 실행하는 곳 같아보임

 

[info] : 서버의 환경 등을 조회할 수 있는 곳

 

[DB] : DB 관련된 곳

 

[RS] : 바인드 쉘, 리버스 쉘을 동작시킬 수 있는 곳

 

Server ip : Web shell 파일을 올린 서버의 ip

Your ip : Windows IP 

 

(칼리는 현재 NAT설정)

 

바인드 쉘 : 서버에서 서버 포트가 열리고, 클라이언트(공격자)가 서버로 접속하여 생성하는 쉘

               일반적인 서버 접속하는 형태

포트는 아무거나 써도 상관없습니다.

사용한 포트 : 3456

 

클라이언트 측의 명령어를 사용하면

서버 측에 접속이 됩니다.

 

IP를 조회하니 서버측의 IP가 출력되었습니다. 

 

서버에 존재하는 모든 계정들의 정보가 있는 파일도 출력해보았습니다.

 

 

리버스쉘 : 클라이언트(공격자)가 리스닝을 하고 서버에서 클라이언트(공격자)쪽으로 접속하는 형태

                 -> 방화벽 우회하려고 사용함

하기 전에, 포트포워딩을 해 줍니다.

호스트 IP는 윈도우의 IP로 입력해줍니다.

 

서버 측에서 사용하는 명령어를 치고

 

Web Shell에서 8181포트로 리버스 쉘을 실행시켜주면 

 

Web Shell을 업로드한 웹서버에 접속이 됩니다.

 

IP를 출력해봤더니 Web Shell을 업로드한 서버에 연결된 것이 맞습니다.

 

모든 계정의 정보가 있는 파일도 출력해보았습니다. 

 

파일 업로드 취약점이 발생한 이유

        : 웹 사이트에서 파일 업로드 시 파일의 확장자 검증을 하지 않았다.

제대로 된 확장자 검증이 이루어지지 않았음

 

파일 업로드 취약점 예방안

           :  점(.) 기준으로 파일의 확장자를 제한

             확장자는 소문자로 치환하고 검사

             몇개의 확장자만 허용하고 나머지 확장자는 모두 차단 

             업로드되는 파일의 실행권한 제거

             업로드되는 파일의 저장경로는 외부에서 직접 접근이 불가하도록 설정

             서버 업로드 폴더에 저장시 파일명과 확장자명은 변경하여 저장

 

 

       

'정보보안 > 웹보안' 카테고리의 다른 글

SQL Injection  (0) 2021.06.03
SQL Injection을 위한 SQL  (0) 2021.06.02
netcat과 포트포워딩  (0) 2021.05.23
방화벽  (0) 2021.05.22
Command Injection  (0) 2021.05.06