공부/Application Security

9월7일 웹해킹 4

마준123 2022. 9. 7. 09:38

지난시간 돌아보기

공격자가 공격대상과 연결하는 방법

1.백도어

 공격자가 공격 대상에 접근하는 방식

 미리 공격대상(victim)에 백도어를 설치하거나 취약한 application을 사용하는 경우

 하지만 방화벽에 의해 대부분 차단됨

2.리버스 커넥션

 공격대상이 공격자 쪽에서 접근하는 방식

 공격대상에 RAT(remote access trojan)을 침투시켜서 실행될 경우 공격자가 미리 준비한 커퓨터로 연결 시도(트로이 목마 방식)

 방화벽을 우회할 수 있음

 이메일을 보내는 방법 ------>Spear Phiching ( 특정인을 겨냥해서 메일을 보냄 )

   사례1) 항공권, 이력서, 초대장, 논문참고 보내서 마우스 클릭 유도

   이력서.hwp                                                                                             .exe // 직접 클릭하는 것은 매우 위험함

 웹서버에 미리 올려놓은 RAT을 실행시키는 방법

 

 

 

 

실습준비) VM켜고 우분투DVWA와 서버2000 둘다 실행

 

중간에 화장실을 다녀와서 부랴부랴 했다

 

성공~

ㅇ------------------------------------------------------------------------------------------------------------------------------------------------------------

Log4j 다시공부하기

 

 

OWASP 는 뭐하는 곳일까?

 일단 비영리 조직으로 회비나 도네이션으로 운영됨

 웹 취약점을 정기적으로 발표하는 조직

 

OWASP의 TOP10 취약점을 왜 알아야 할까?

 가장 최신의 웹 보안 트렌드를 알 수 있음

 전세계 보안 전문가들을 상대로 설문 ---->취합,정리 해서 순위를 정함

 상위 10개의 취약점이 전체의 약 95%에 해당

 

-------------------------------------------------------------------------------------------------------------------------------------------------

A01 : Broken Access Control - 접근 통제 관리 필요성 : 권한을 적절하게 부여 (Least Privilege : 최소한의 특권, Need to Know : 알필요에 근거) - 접근 관리(읽기, 쓰기, 수정, 복사, 삭제, 출력), 사용자에 대한 등급/카테고리 고려, 그룹단위 관리 등등

 한마디로 권한 상승 기법

실습) Argo Club 에서는 ID와 PW를 이용해서 로그인을 해야 글을 쓸 수 있지만, 로그인을 하지 않고도 글을  쓰려면?

 

위에 주소표시줄에 원래

http://192.168.5.141/jsp/cmnt_view02.jsp?num=1

라고 써있는 부분을

http://192.168.5.141/jsp/cmnt_write02.jsp

로 바꿔주니 허무하게 뚫려버렸다

 

추측 할 수 있는 형태로 개발하지 않는게 좋겠다.

 

*대응 방법

 명백한 허용을 제외하고 모두 거부(Deny All philosophy : 모든것을 거부하는 원칙)

 디렉토리 리스팅을 차단

      관리자가 일부러 디렉토리 리스팅을 하는 경우는 상관이 없음(http://ftp.linux.co.kr/SULinux/)

       관리자가 모르는 상태에서 디렉토리가 리스팅 된다면 모든 파일이 인터넷에 노출됨 ---->이런 경우 문제

 자동화된 공격 도구로 인한 피해를 최소화 하기 위한 속도제한 API 및 컨트롤러 액세스

 

실습준비)

 칼리리눅스 설치

 구글에 Beebox 검색해서 다운하기.(https://sourceforge.net/projects/bwapp/files/bee-box/)

  bee-box_v1.6.7z

 

실습)

 일단 우분투랑 서버2000은 끄자 ( 메모리 아깝기 때문에 )

 VM으로 칼리 리눅스 불러오기

 로그인 ID : kali / PW : kail

 화면 잠김 방지 설정 : 왼쪽위 용클릭 > Settings > power manager > security > Automatically lock~~ > Never , 그리고 밑에 체크 해제

 시계에 오른쪽 마우스 클릭 > Properties클릭 >Time Zone에 Asia/Seoul 클릭~~(시간설정)

 

*Kali Linux

 취약점을 제보하는 Exploit - db.com을 운영하는 offensive Security에서 Kali Linux를 무료로 배포

 취약점에 대한 테스트를 위해서 각종 해킹툴 및 취약점 분석도구를 설치해서 배포

 OS는 Debian Linux에 다양한 해킹툴 및 취약점 분석도구를 약 200개 설치되어 있음(추가로 400개 설치 가능)

 원래 이름은 Backtrack 이었는데 어떤 음반사에서 이름에 대한 권리를 주장해서 Kali  Linux로 변경~

 그럼 Kali는 뭐냐? 인도의 전쟁여신, Siba신의 부인이다~

주의사항 Kali는 검색하지 마시오 ( 좀 별로인 사진들이 나옴 ㅋ )

 

*Bee box

 bug : 소프트웨어 코딩 오류

 buggy Web Application ( 모의 웹해킹 연습장 ) ------> Linux + Apache2 + MySQL + PHP(LAMP)에 bWAPP을 동작시키면 웹해킹 연습장이 됨

 VMware용으로 만든 가상서버 이미지 (LAMP + bWAPP)를 Beebox라고 함

 OWASP Top10을 기준으로 만듦

 

비박스)

 player > file > open 해서 beebox 하고 아직 플레이 버추얼 머신은 하면안됨!!

 Edit virtual machine settings을 누른다

 Network Adapter 가 Bridged --->를 NAT로 바꾼다

 아이 카핏 잇!

 뭔 개같은 효과음과 함께 

타란~~

 *Beebox 언어를 바꾸기 ( 벨기에 사람이 만들었기 때문에 한국어로 좀 바꿔주자, 안바꾸면 키보드 자판이 벨기에식이라  멘붕이라함ㅋㅋ)

 System > Preferences > Keyboard > Layouts > Add > Layout 에서 Korea, Republic of 를 선택!

 그리고 Korea, Republic of를 디폴트로 변경하고 벨지움은 리무브 해버리자!

 

 이게 끝이 아니라 로그아웃 한다음에 다시 로그인 해야한다

 bee / bug (아이디 / 비번)

 그럼 개같은 효과음을 다시들으면서 로그인~

Kor로 바뀐모습

 터미널 켜고 ifconfig 하면

 192.168.5.130

이쯤 와서 돌아보는 IP들

 

Ubuntu_DBWA : 192.168.5.128

Kali Linux : 192.168.5.129

beebox : 192.168.5.130

 

192.168.5.130

접속한 모습

bWAPP 접속하면 아이디 패스워드도 적혀있다(bee/bug)

 실습 ) 참고로 실습자료 96page(웹쉘업로드툴)

 오른쪽위에 문제가 약 100개가 준비되어있는데 

 A5 에 있는 Insecure WebDAV Configuration 를 먼저 해보자!

들어갔으면 WebDav를 클릭

 

*WebDav가 뭔데?

 WebDav란 웹을 개발할 때 여러 개발자들이 파일을 업로드 하고 수정 및 삭제 등을 위해 열어놓은 디렉토리

 

WebDav디렉토리 / 마블영화들이 몇개 보인다

여기다가 어제 실습했던 웹쉘을 여기에 올리는거다.

 

*어떻게 올릴까?

 

-------------------------------------------------------------------------------------------------------------------------------------------------

힌트 : 프록시 라고 하신다

 

새로고침을하고 인터셉트를 한다

드래그 한 부분을 변경하고 (GET을 PUT으로 바꾸고 웹데브 뒤에 파일명을 넣어줬음) 밑에 들어갈 내용을 넣어준다

그리고 포워드하면 나오는 모습

그리고 새로고침하면 아까 만든 파일이 생성되었다.

아까 입력한 내용이 써진 모습

 

똑같은 방법으로 웹쉘의 내용을 담아서 포워드 시키면 될거같다!

 

성공~

강사님이 힌트 주시기 전에 성공했다~ 굿 ( 물론 난 메모장으로 열었음 , notepad++는 괜히거부감이 든다..)

 

*어제 c99shell.php가 잘 안됐는데 소스코드를 수정해야 한다고 한다.

 ereg()함수가 최신버전에서 잘 안되나 그래서  Preg_match 로 바꿔야 한다고 한다

노트패드++들어가서 위에 찾기 누르고 바꾸기누르고

모두 바꾸기 클릭

모두바꾸기 하고

53번째 라인을 주석처리 (//) 하면 된다고 한다.

 

그런데 지금 칼리 리눅스의php는 구버전이라 원래꺼도 된다고 한다.

원활한 수업 진행을 위해서 원래꺼로 올리기로 했다.

c99shell

성공~~

이게 c99shell이구나~

 

 

실습2 ) 이번엔 칼리리눅스를 이용해서 업로드를 해보자

 일단 칼리쪽으로 웹쉘 하나를 드래그 앤 드롭으로 옮긴다

r57Shell.php 를 옮겼당

터미널 열고 

 cd Desktop

 ls 하면 내가 넣은 쉘이 보인다

 sudo ls ( 비번 kali)( sudo 비번 물어보에 하려고 그냥 한번 쓰는거)

 

*cadaver를 이용해서 웹쉘 업로드 -  cadaver는 툴 이름

  sudo cadaver http://192.168.5.130/webdav 입력

  put r57shell.php 입력

성공 한 모습

 

* 이러한 방법으로 WebDav 디렉토리에 파일 업로드가 가능한 원인

 ------>PUT이 허용되어 있기 때문 (PUT뿐만 아니라 COPY,DELETE 등등이 허용되어 있기 때문 ( 파일을 공동으로 작업할때 수정, 삭제, 업로드 등을 모두 하기 위해서 다양한 Method가 허용됨, 즉 편리함을 추구하면 보안은 취약해진다)

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------

 

A02. 암호화의 실패

 * 암호화를 잘 못하는 이유?

 암호화 및 복호화 하는데 컴퓨터 연산량이 많아지는 문제   ------> 서버 부하

 오래된 웹사이트, 업데이트 했지만 옛날에 만든 페이지가 그대로 남아있는 경우

 처음에는 안전한 암호화 였으나, 시간이 지남에 따라 컴퓨터의 성능이 엄청나게 발전해서 쉽게 크래킹 될 수 있는 상태가 됨.

 

*안전하지 않은 암호화 (나중에 암호화때 다시 배울것 이므로 그냥 이런게 있다~ 정도)

 - 대칭키 : DES, 3DEX, RC4 등등,      ECB방식

 - 공개키 : RSA1024bit 이하

 - 해시함수 : MD5, SHA1

 

*Salt : 해시함수와 원문이 같으면 해시값도 같아지기 때문에, Salt를 원문에 섞어서 해시값을 게산, 해시값이 다 달라지게 됨

Salt 실습) 

 칼리에서 cadaver 는 exit

 어제 다운받은 사진 옮기기 

 터미널에서 $ md5sum hacker.jpg

바로 나온게 해시값 /a1bd8747~~~~~

 다른 파일은 다른 해시값이 나온다.

 

즉, 원문이 다르면 다른 해시값이 나온다.

 ----------->해시값이 다르다는 것은 원문이 달라졌음을 의미함 ( 무결성 훼손 --->파일이 변조되었음 )

 

테스트법)

$cp hacker.jpg /home/kali

$sudo vi hacker.jpg                         //파일을 살짝 수정
    i를 누르면 편집모드로 변경 (--insert--)

    적당히 변경

    ESC를 누르면 편집모드에서 명령모드로 변경

    :wq           //write and quit ( 저장 후 변경 )

     (만일 저장하지 않고 나오려면  :q! )

 

$md5sum hacker.jpg /home/kali/hacker.jpg        //두개의 파일을 비교해봄

-------->해시값이 서로 다름 (원문이 달라졌음을 알 수 있음)

 

실습 )

 윈도우 서버 2003 켜자   

  *취약한 해시를 사용했을 때의 문제점

 내문서 들어가서 lcp 504 en.exe 선택

 시작버튼 누르고 LCP폴더안에 LCP선택~

 위에 import > import from local computer

 밑에꺼 선택하고 OK

이제 이 계정들의 비밀번호를 크래킹할거

 

 위에 플레이 버튼을 누른다 ( 비밀번호 크래킹이 시작된다)

사실 이런식의 LM해시나 NT해시 암호화는 윈도우 2003에서나 쓰는 구식버전의 취약한 암호화방법이기 때문에 가능한 것이다.

 

크래킹이 된후

강사님이 한 3분이면 어드민까지 다 크래킹 될거라고 하셨는데...

스크린샷을 보면 알겠지만 좀 많은 시간이 흘렀음에도 어드민꺼는 크래킹 되지 않았다 ㅋㅋ

그래도 나머지 슈퍼맨이나 마준 계정은 크래킹 완료된것을 확인 할 수 있다.

 

 

A03 Sql 인젝션 실습)

  다시 beebox가서

 A1에서 SQL Injection (GET/Search) 선택

 단순한 영화이름 검색하면 하나 둘씩 나오는 간단한 화면이다.

 

1) 모든 영화가 나오게 하려면 어떻게 해야할까?

' or 1=1 #

을 입력하면 모든 영화들이 나온다

검색하는 Select 문 에상 : select * from ?? where movie='%               %';

 

*SQL 공격을 위한 3가지 방법

 A)주석

   Oracle, MS-SQL은 주석으로 --(하이픈 두개)를 사용

   MySQL, MariaDB는 주석으로 # 을 사용

 B) 논리적 참

 C) 중첨된 SQL문 사용  Select~~~~; update ~~~;

     Union Select~~~~

 

 

하지만 이딴건 알아봤자 아무 의미 없다.

 

2 ) 공격자가 원하는 것은? 모든 사용자의 ID와 PW입니다.

 

 근데 사실 우리 실습때는 사용자가 1개밖에 없기때문에 일단 Create user로 계정을 몇개 만들자 ㅋㅋㅋㅋㅋ

 

난 blackpink, majun, bts 3개의 아이디를 만들었다.

password 나 Secret 등은 대충 다르게 넣어보았다.

 

*MySQL에서 데이터베이스에 대한 정보는 information_schema 라고 하는 데이터베이스에 저장되어 있음 ( 메타데이터 )

 ---> 테이블 이름은 information_schema.table 의 테이블에 table _name 이라는 컬럼에 저장되어 있음

 ---> 컬럼 이름은 information_schema.columns 라는 테이블에 column_name이라는 컬럼에 저장되어 있음

 ---> DB 이름은 table_schema 라는 컬럼에 저장되어 있음

 ---> 내부함수 

        database() : 데이터베이스 이름을 확인하는 함수

        version() : 버전을 확인하는 함수

        @@version : 버전을 확인하는 함수

        user() : 사용자를 확인하는 함수

'공부 > Application Security' 카테고리의 다른 글

9월13일 웹해킹 6  (2) 2022.09.13
9월 8일 웹해킹 5  (0) 2022.09.08
9월6일 웹해킹 3  (0) 2022.09.06
9월 5일 웹해킹 2  (0) 2022.09.05
9월 2일 웹해킹 1  (2) 2022.09.02