[보안 해킹] 홈페이지 개발 보안 - URL/파라미터 변조
·
Security/Hacking & Security
[보안 해킹] 홈페이지 개발 보안 - URL/파라미터 변조 ■ 취약점 설명 - 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 구현하여 공격자로 하여금 값을 변조하여 중요정보에 접근 가능해지는 취약점 ■ 보안대책 ⑴ 중요한 정보가 있는 페이지(계좌이체 등)는 재 인증 적용 ⑵ 안전하다고 확인된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용 ⑶ 응용프로그램이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격노출면(attack surface) 최소화 ⑷ 사용자의 권한에 따른 ACL(Access Control List) 관리 ■ 코드예제 - 계좌이체 시 사용자 인증을 위한 별도의 접근제어 방법이 사용되지 않고 있으며, 이는 임의 사용자의 정보를 외부..
[보안 해킹] 홈페이지 개발 보안 - 파일 업로드
·
Security/Hacking & Security
[보안 해킹] 홈페이지 개발 보안 - 파일 업로드 ■ 취약점 설명 - 서버사이드에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드가 가능하고, 업로드 된 파일이 웹을 통해 실행될 수 있는 취약점 ■ 보안대책 ⑴ 화이트리스트 방식으로 허용된 확장자만 업로드 허용 ⑵ 업로드 되는 파일을 저장할 때에는 파일명과 확장자를 외부사용자가 추측할 수 없는 문자열로 변경하여 저장 ⑶ 저장 경로는 web document root' 밖에 위치시켜, 웹을 통한 직접 접근 차단 ■ 코드 예제 - 업로드할 파일에 대한 유효성을 검사하지 않아, 공격자에 의해 위험한 유형의 파일이 업로드가 가능한 형태의 코딩 - 미리 정의된 업로드 파일의 확장자만 허용하고 그 외 확장자는 업로드를 제한하고, 저장 시 ..
[보안 해킹] 홈페이지 개발 보안 방안 - 운영체제 명령 실행
·
Security/Hacking & Security
[보안 해킹] 홈페이지 개발 보안 방안 - 운영체제 명령 실행 ■ 취약점 설명 - 적절한 검증절차를 거치지 않은 사용자 입력 값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되는 취약점 ■ 보안대책 ⑴ 웹 인터페이스를 통해 서버내부로 시스템 명령어를 전달시키지 않도록 웹 어플리케이션 구성 ⑵ 외부 입력에 따라 명령어를 생성하거나 선택이 필요한 경우, 명령어 생성에 필요한 값들을 미리 지정해 놓고 외부 입력에 따라 선택하여 사용 ■ 코드 예제 - 다음의 예제는 cmd.exe 명령어를 사용하여 rmanDB.bat 배치 명령어를 수행하며, 외부에서 전달되는 dir_type 값이 manDB.bat 의 인자값으로서 명령어 스트링의 생성에 사용될 수 있는 코딩 -..
[보안 해킹] 홈페이지 개발 보안 방안 - SQL 인젝션
·
Security/Hacking & Security
[보안 해킹] 홈페이지 개발 보안 방안 - SQL 인젝션 ■ 취약점 설명 - 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안 취약점 ■ 보안대책 ⑴ Prepared Statement 객체 등을 이용하여 DB에 컴파일된 쿼리문(상수)을 전달하는 방법 사용 ⑵ Parameterized Statement를 사용하는 경우, 외부 입력데이터에 대하여 특수문자 및 쿼리 예약어 필터링 ⑶ Struts, Spring 등과 같은 프레임워크를 사용하는 경우 외부 입력 값 검증 모듈 사용 ■ 코드예제 - 다음은 안전하지 않은 코드의 예를 나타낸 것으로, 외부로부터 tableName 과 name 의 값을 받아서 SQL 쿼리를 생성하고 있으며, name의 값으로 na..