노말틱 모의해킹

[14주차 강의] Web Shell

debugginglog 2025. 7. 16. 21:19

Part.1

CSRF : 피해자가 서버로 공격자 원하는 요청을 보내게 만드는 공격
공격시나리오 : Link, xss, iframe
대응 방안
1. 레퍼럴 검증 : 확장성이 떨어짐. 요즘에는 여러 페이지에서 동일한 api를 보내는 경우가 많음
2. 인증 정보 추가

File Upload : 공격자가 원하는 임의의 파일을 업로드하는 공격
발생원인 : 파일을 업로드 받을 때 검증, 검사를 안한다.
발생위치 : 파일을 업로드할 수 있는 곳. ex) 서류제출, 이미지 업로드, 
burp suite로 확인하는게 좋음

공격 시나리오
1. 서버 측 실행 파일 : 예를 들어 php파일을 업로드하고 GET으로 호출하면 php파일이 웹서버에서 실행됨 / 서버에서 우리가 원하는 코드를 실행할 수 있다. -> 서버에게 우리가 원하는 명령을 내릴 수 있다. -> 그 서버는 내꺼다.
2. Phising : html 파일 업로드해서 해당 도메인에서 실제 서비스인것처럼 피싱 공격
3. Deface 공격 : index 파일(덮어쓰기)
4. xss : Stored XSS 공격
5. Dos

Part.2

Web Shell : 인터넷 상에서 명령어를 내릴 수 있는 것
php Web shell 예시
<?php
    echo system($_GET['cmd']);
?>
cmd에 넣은 명령어가 실행됨 -> 원하는 명렁어를 실행할 수 있기 때문에 컴퓨터를 장악했다고 생각함

웹해킹 영역
웹해킹 : shell의 root 권한을 얻는 방식

생각보다 웹서버를 관리자 권한으로 만드는 경우가 많음

웹쉘 공격의 핵심
0. 웹 서버 측 실행 코드언어를 알아야함
1. 웹 서버 측 실행 코드를 업로드 할 수 있어야함
2. 업로드된 파일의 경로를 알아야함

*경로 확인
업로드한 파일이 출력되는 곳을 확인한다. : 이미지 주소복사, 링크 주소 복사 기능 활용 가능함
업로드한 파일의 경로를 알아야지 요청을 할 수 있고, 요청을해야지 실행할 수 있다.

Part.3

XSS, CSRF : Client 공격
SQL Injection.
web shell.

같은 말은 아니지만 보통 파일 업로드 공격은 웹쉘 공격이라고 한다.

Part.4

백신 : 합법적인 악성코드?
astx : 확인하려고하면 burp를 키면 Burp를 강제종료함 / e2e 암호화가 되어있음
e2e만 리버싱 엔지니어링으로 걷어내면 보안취약점이 많을 수도 있다.
window에 astx를 종료하면 프로세스가 살아있다. 종료가 안된다.
astx는 웹 브라우저를 검사한다. 등록되어있는 것이 크롬, ie, safari가 등록되어있는데 그 당시 웨일이 등록되어있지 않았음. 그래서 웨일로 하면 꺼지지 않았다.

Part.5

파일 업로드 약한 대응?
1. 업로드 되는 파일 검사해서 제한하기 : MIME type, Content-Type : text/php 기준으로 하면 burp suite에서 기본적으로 수정해서 업로드할 수 있음.
2. 실행을 못하게 하는 취지로 만드는 방식을 쓸 수 있다. 웹 서버입장에서 특정폴더에 있는 파일들은 실행권한을 뺄 수 있음. read권한을 빼는게 아니라 php설정에서 해당 폴더의 실행이 안되게 할 수 있다. 그럴때는 파일 명을 ../로 업로드하면 우회할 수도 있음.
3. php 확장자를 못하게 할 수도 있음. 이럴 경우 대소문자로 우회할 수도 있음. PhP pHp이런것으로. 이것도 해결할 수있음 .phtml, .php3, .php5등 jsp는 jspx와 jsw 등으로 다른 확장자를 쓸 수도 있다.
4. 정상적인 normatlic.png로 업로드하고 헥스 에디터를 통해서 뚫을 수도 있다. <?php system($Get['cmd']); ?>
5. 무조건 확장자는 서버에서 실행할 수 있게 해야한다. 확장자는 .php가 되는게 맞다. 하지만 그림 웹쉘, 그림파일 웹셀 등이 있다.  이건 다음주에.

파일 업로드 취약점을 찾을 때 주의할 점(모의 해킹을 할 때 주의할 점)
1. 웹쉘을 올리면 안된다. 매너가 없는 행위? 웹쉘을 올리는 이유는 업로드한 파일을 실행할 수 있는지 체크하는 것. 
2. 업로드한 파일을 실행할 수 있는 지 체크만 한다음 웹쉘을 올려도 되는지 물어보는 것이 매너다.
3. 소스코드를 보면 더 취약점을 찾을 수 있다.
4. 웹쉘 테스트 후, 바로 삭제해야함

Part.6

과제
1. 웹 서버 개발 제출
2. 웹쉘 2개 CTF 문제 풀기
3. 개인 웹 서버에 웹쉘 업로드하고 reverse shell 연결해보기