공공 정보화사업 대상으로 지침에 의무화 되어있는 소프트웨어 보안약점 기준
유형1. 입력데이터 검증 및 표현: 사용자, 프로그램 입력 데이터에 대한 유효성 검증 체계를 갖추고, 실패 시 처리할 수 있도록 설계 하도록 한다.
*SQL Injection
SQL문이 참이 되도록 만들어서 주입하는 공격
UPDATE: 관리자계정의 패스워드를 변경하는등 악용이 가능하다.
SELECT: 개인정보를 추출해서 따로 저장, 유출이 가능하다
DROP: 고객 테이블을 삭제 할 수 있다.
+ 실제로 LOGIN inputBox에 update 쿼리를 날려서 회원정보 테이블을 날려버린 경우도 있다고함.. SQL Injection
*OS Command Execution
검색창등에 리눅스/윈도우 명령을 실행 시키는 취약점 사물인터넷(IOT)기기에서 많이 발견되고 있다.
EXPLOIT DATABASE(https://www.exploit-db.com/) 에서 Command Execution을 검색해 봅시다.
*경로 조작 및 자원 삽입
웹서버: 웹해킹이 '웹사이트' 에만 국한되지 않고 시스템 전체에 영향을 주면 심각한 문제.
--> 주소표시줄에 경로를 입력해서 파일 내용을 읽어 들이는 공격
Application을 (Apache) Root권한으로 실행하면 안된다.
==> 원격으로 하는 공격은 LAN선을 뽑으면 되지만, cron으로 예약을 걸어놓아서 소용이가 없는 경우도 있다 소오름
*XSS(Cross Site Script)
- 악성 스크립트를 게시판 등에 업로드. (요새는 기존에 사용하는 스크립트 밑에 붙여놓는다.) 게시판을 읽어들인 사용자에게 악성코드를 다운로드 하도록 유도하거나, 쿠키값을 어딘가로 보내도록하는 스크립트를 실행하는 공격.
- 클라이언트를 공격하기 위해 서버를 이용한다고 해서 이름이 XSS임 ㅇㅇ 서버를 건너서 공격한다고 해서.(교차 사이트)
* HTTP 응답 분할
HTTP 요청에 포함된 인자값에 개행문자를 넣어 응답이 분할되어 전송되며, 공격자는 이러한 다중응답을 악용하여 악의적인 코드를 주입할 수 있음.
* XPath 삽입
부적절한 XML 및 XPath 쿼리문을 이용하여 XML 데이터베이스를 조작함
LDAP 부적절한 LDAP쿼리를 삽입해서 서버 및 네트워크 상의 파일, 디렉토리와 같은 자원의 위치를 추출할 수 있음
*인증 (Authentication)
올바른 사용자임을 증명하는것
- 지식기반(What You Know) : 알고있는 것으로 증명. 예) 비밀번호, 암구어, 문답...
- 소유기반(What You Have) : 소유하고 있는 것으로 증명 예) 열쇠, 도장, 공인인증서... OTP.... 휴대폰 인증....
- 생체기반(Who You Are) : 생체적 특징으로 확인 예)지문, 홍채, 손바닥, 얼굴, 손모양, 손등, 목소리 등...
- 위치기반(Where You Are) : 어디에 있는지 확인 예) GPS, 통신사 AP로 삼각측량, Wi-Fi, 등등..
* Two-Factor 인증
반드시 두종류 이상의 방식을 함께 써야 안전하다. 예) 은행 이체: 공인인증서(소유기반) + 비밀번호(지식기반) + 보안카드/OTP(소유기반)
* 휴대폰 뱅킹
휴대폰(소유기반) + 지문인식(생체기반) + 비밀번호(지식기반) -> 계좌 조회 가능 ==> 하지만 3종류는 TooMuch...
휴대폰(소유기반) + 지문인식(생체기반) -> 계좌 조회 (FIDO)
그래서 나온게 FIDO(Fase IDentity Online)! 절차 간소화 할 수 있음.
DVWA (Damn Vulnerable Web Application) 웹해킹 연습장. ISO를 다운받아서 VirtualBox에 설치.
slitaz로그인 root/root 후 ifconfig해서 나오는 IP로 접속하기 HOST의 웹 브라우저에서 접속합니다.
DVWA Security > Low로 바꾸기.
주석처리 방법 : Oracle, MS-SQL : --, MySql(MariaDB) : #
#아래 코드는 학습 목적으로 작성하였습니다. 악용하면 큰일나요!
*SQL Injection
컬럼명 알아내기
'union select column_name, null from
information_schema.columns where table_name='users' #
--> user, password라는 컬럼이 있음을 확인.
'union select user, password from users #
--> 사용자 계정과 패스워드 추출하기.
MD5로 암호화 된 password도 얻을 수 있음.
HashKiller라는 사이트가 있다.MD5에 대한 DataBase를 대량 보유함!
MD5 Cracker에 가서 입력하면 평문 Password를 알 수(도) 있다.
결론: 작은 inputBox로도 정보가 전부 유출 될 수 있다. SecureCoding을 철저하게 하자.
*Command Injection
- ;은 앞명령과 별도로 뒷명령 실행 예) ; ifconfig
- &&는 앞명령을 성공해야 뒷명령을 실행한다. 예) 192.168.200.2 && ifconfig
-- make && make install //make 성공후에 make install을 실행한다.
-netcat 을 실행하면 원격조종이 가능하기 때문에 심각한 문제가 발생할 수 있다.
1. 과제 :D
<script></script> 를 우회 할 수 있는 방법을 찾아보세요!
'Today I learned' 카테고리의 다른 글
20191218 보안 SW 개발 세미나 7일차 (0) | 2019.12.18 |
---|---|
20191213 보안 SW 개발 세미나 4일차 (0) | 2019.12.13 |
20191210 보안 SW 개발 세미나 2일차 (0) | 2019.12.10 |
20191209 보안 SW 개발 세미나 1일차 (0) | 2019.12.09 |
2019-09-26 오늘 만난 코드들 (0) | 2019.09.26 |
댓글