본문 바로가기
Today I learned

20191211 보안 SW 개발 세미나 3일차

by soheemon 2019. 12. 11.

공공 정보화사업 대상으로 지침에 의무화 되어있는 소프트웨어 보안약점 기준

유형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의 웹 브라우저에서 접속합니다.

admin/password

 

DVWA Security > Low로 바꾸기.

주석처리 방법 : Oracle, MS-SQL : --, MySql(MariaDB) : #

 

Security -> Low로 변경

 

#아래 코드는 학습 목적으로 작성하였습니다. 악용하면 큰일나요!

*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를 알 수(도) 있다.

https://hashkiller.co.uk 

http://crackstation.net 

 

결론: 작은 inputBox로도 정보가 전부 유출 될 수 있다. SecureCoding을 철저하게 하자.

 

*Command Injection

입력한 IP에 Ping을 날리는 순수한 기능이다.
IP주소 뒤에 ;를 붙여서 명령어를 입력하면 결과가 같이 보여진다.

- ;은 앞명령과 별도로 뒷명령 실행 예) ; ifconfig

- &&는 앞명령을 성공해야 뒷명령을 실행한다. 예) 192.168.200.2 && ifconfig

-- make && make install //make 성공후에 make install을 실행한다.

 

-netcat 을 실행하면 원격조종이 가능하기 때문에 심각한 문제가 발생할 수 있다.

 

View Source를 클릭하면 난이도별로 소스코드도 볼 수 있다. SecureCoding할때 참고하기 좋음! (php)

 

1. 과제 :D

<script></script> 를 우회 할 수 있는 방법을 찾아보세요!

댓글