쉘을 획득하는 방법에는 흔히 바인드 쉘과 리버스 쉘이 있다.
바인드 쉘은 서버에서 포트를 OPEN 해주고 클라이언트가 접속하여 쉘을 얻어내는 방법이며,
리버스 쉘은 반대로 클라이언트가 서버를 열고, 서버에서 클라이언트쪽으로 접속하는 형태이다.
실제론 바인드 쉘 보다는 리버스 쉘을 자주 사용한다고 한다.
그 이유는 네트워크에 존재하는 방화벽이 서버에 접속하는 경우에는 많이 막아내지만
반대인 서버에서 나가는 경우는 여유롭기 때문.
이번주에는 지난 번 파일 업로드 취약점을 활용하여 웹 쉘에서 리버스 쉘 기법으로
가상환경의 개인 웹서버(피해자 컴퓨터) 의 쉘을 내 로컬 서버(공격자 컴퓨터)로 연결해주는걸 해보았다.
우선 서버에서 포트를 지정하여 열어주자.


여기에서 리버스 쉘을 연결하는 방법엔 여러가지가 있는데
normaltic님의 영상을 참고하여 nc mkfifo를 활용하였다.
[출처 : https://www.youtube.com/watch?v=S7izO4TOhBs&list=PLilfVAwqeInX21KkW9JwITbY_SpGVg5qp&index=5 ]
그치만 여기서 문제가 생겼다.
웹 쉘에서 nc명령어가 듣질 않는 현상. 실제 다른 성공 사례들과 비교를 하기도 하고, 며칠동안 이런 저런 시도를 해보았지만 정확한 원인을 찾지 못하고 방화벽에 문제가있나..생각하고 웹 서버를 얻어냈다는 가정하에 웹 쉘이 아닌 서버 쉘에서 진행하기로 하였다.
>피해자의 서버에서 리버스 쉘 명령어 입력.

'웹 해킹' 카테고리의 다른 글
| 파일 다운로드 취약점과 실습 문제 풀이 (1) | 2025.07.21 |
|---|---|
| File uplaod와 File Include 취약점 (1) | 2025.07.20 |
| 파일 업로드 취약점, 문제풀이 (1) | 2025.07.13 |
| CSRF 대응방법, SOP와 CORS (2) | 2025.07.09 |
| CSRF와 XSS, 문제풀이 (0) | 2025.06.28 |