[SQL Injection] Prepared Statement 적용이 불가한 구문일 때
·
Security/Application
보통 SQL 인젝션을 막기 위한 가장 효과적인 방법 중 하나로 Prepared Statement가 널리 알려져 있습니다. 저 역시 이렇게 알고 있었지만, 모든 것을 막을 순 없었습니다. 쿼리 구조를 동적으로 변경해야 하는 특정 구문에는 적용할 수 없다는 한계가 있습니다. 특히, ORDER BY 절이 그 대표적인 예시인데요. 이번 글에서는 Prepared Statement로 막을 수 없는 ORDER BY 절 SQL 인젝션의 원인과 안전한 방어 대책에 대해서 작성해 보려고 합니다. 1. 취약 원인ORDER BY 절은 정렬 기준 컬럼(식별자)을 지정하는 구문입니다. 이 컬럼명은 실행 시점에 동적으로 결정되므로, Prepared Statement(이하 PS)의 *리터럴 바인딩 방식을 적용할 수 없습니다. PS..
[AWS] 오픈소스 도구를 통한 취약점 진단 (with ScoutSuite)
·
Security/Cloud
클라우드 오픈소스 도구를 통한 취약점 진단 파이썬, 깃 설치aws cli 설치액세스 키 생성 그 다음 C드라이브 밑에 ScoutSuite 폴더를 생성합니다. 그리고 깃배쉬에서 아래 명령어 입력해서 깃 클론을 한다.git clone https://github.com/nccgroup/ScoutSuite 해당 폴더의 경로로 cmd를 이동한다. ScoutSuite 도구 설치 및 사용가상환경 설치 및 실행C:\ScoutSuite\ScoutSuite>python -m venv aws_venvC:\ScoutSuite\ScoutSuite>cd aws_venvC:\ScoutSuite\ScoutSuite\aws_venv>cd ScriptsC:\ScoutSuite\ScoutSuite\aws_venv\Scripts>actia..
[Docker] 컨테이너 기반의 로드밸런싱 구축
·
Security
이번 실습에서는 Docker 컨테이너를 활용하여 3개의 웹 서버를 구축하고, Kali Linux에 Nginx를 설치해 로드 밸런싱을 구현하는 과정을 정리해 보겠습니다. 각 웹 서버는 서로 다른 index.html을 제공하고, 이를 로드 밸런서를 통해 순차적으로 접속할 수 있도록 설정합니다.1. 목표Docker로 웹 서버 컨테이너 3개 생성 (web01, web02, web03)각 웹 서버는 서로 다른 index.html 페이지를 가짐Kali Linux에 Nginx 설치 후 로드 밸런서 역할 수행Nginx의 nginx.conf를 수정하여 로드 밸런싱 구현볼륨 마운트를 이용하여 컨테이너에 HTML 파일 연결 2. 웹 서버 구성 방법 (호스트 디렉터리를 마운트)* 웹 서버를 구성할 때 호스트 디렉터리를 마운트..
[Docker] 도커 컨테이너 자원 제한(보안 관점에서의 최적화)
·
Security
도커 컨테이너를 운영할 때, 시스템 자원을 적절히 제한하는 것은 리소스 낭비를 방지하고, 보안성을 높이며, 전체 시스템의 안정성을 유지하는 데 매우 중요합니다. 이번 포스트에서는 CPU, 메모리, 프로세스 수를 제한하는 방법과 그 의미를 보안과 연계하여 설명하고, 실제 부하 테스트 방법까지 실습해 보겠습니다.1. 자원 제한을 위한 Docker 실행 예시sudo docker run -itd --name nginx-8001 -p 8001:80 --cpus="0.5" --memory="256m" --pids-limit=100 nginx:latestsudo docker run -itd --name nginx-8002 -p 8002:80 --cpus="0.5" --memory="256m" --pids-limit=..
[Docker] 도커 컨테이너 전체 삭제 방법
·
Security
동작하고 있는 모든 컨테이너 종료sudo docker stop $(sudo docker ps -q -f status=running)┌──(kali㉿kali)-[~]└─$ sudo docker stop $(sudo docker ps -q -f status=running)ae7e9b63be25ffbe3bfb851517e9e744161f7250fc79aaf1 종료된 모든 컨테이너 삭제sudo docker rm $(sudo docker ps -q -f status=exited)┌──(kali㉿kali)-[~]└─$ sudo docker rm $(sudo docker ps -q -f status=exited)ae7e9b63be25ffbe3bfb851517e9e744161f7250fc79aaf1 연결되지 않은 컨테..
[Docker] 도커 이미지를 생성해서 배포 (보안 고려)
·
Security
이번 글에서는 Nginx 도커 컨테이너를 기반으로 웹 서버를 실행하고, 수정한 index 페이지를 포함한 새로운 이미지를 생성해 Docker Hub에 배포하는 과정을 정리해 보았습니다.보안 관점에서의 고려사항도 함께 포함하여 안전한 웹 서비스 운영에 초점을 맞췄습니다.목표 Nginx 컨테이너 이미지를 사용해 웹 서버 실행index.html 수정 (개발 단계)수정된 컨테이너를 새로운 이미지로 커밋Docker Hub에 배포(보안) 주요 정보통신기반시설 리눅스 서버 진단 → 보안 패치, 모의해킹 → 안전한 컨테이너 환경 구축 1. Ngninx 컨테이너 이미지를 이용하여 웹 서버 실행우선 Nginx 공식 이미지를 사용하여 컨테이너를 실행합니다.docker run -itd --name web01 -p 8080:8..
[Splunk] Splunk DB Connect 추가 방법
·
Security
Splunk DB Connect재시작하면 추가된거 확인가능jdk가 설치된 경로를 작성하고 저장 버튼 클릭에러가 뜨는게 정상적?이다. 설정>서버 컨트롤 로 이동해서 스플렁크 다시 시작 버튼으로 재시작 한다.재시작 후에 다시 splunk db connect로 이동하면?정상적으로 작동하는 것을 볼 수 있다.mysql connector 드라이버 설치설정>Settings>Drivers현재는 mysql 드라이버가 설정되어 있지 않다.위 폴더에 해당 파일 붙여넣고다시로드 클릭MySQL 연동 완료DB 계정 정보 등록설정>Databases>Idnetites>New Identity>Basic IdentityIdentity Name: snort_id사용자 이름: root암호: no1idsDB 연결 정보 등록이제는 연결 정책..
[Splunk] Splunk 설치 및 Splunk Forwarder와 Indexer 연동
·
Security
adminadminadminSplunk 데이터 연동 방법Splunk에서 데이터 연동 방법은 파일 업로드/실시간 모니터/포워더 연동 총 3가지 방법이 있다.1. 파일 업로드데이터 삭제추가한 데이터를 삭제해 보겠다.설정>인덱스추가한 데이터 apachelog 삭제 클릭2. 실시간 모니터이번 실습에서는 지정한 폴더가 실시간으로 연동되고 있다고 가정함.설정>데이터 추가모니터 선택파일 및 디렉터리 선택경로 지정임의의 파일 선택파일 업로드와 차이점은 일회성으로 업로드하는가 실시간으로 연동되어 모니터링하는가의 차이뿐3. 포워더 연동Splunkforwarder를 이용하여 데이터를 연동하는 방법이다. 먼저 forwarder를 설치하겠다.Splunkforwarder 설치 adminadminadminps. 컴퓨터 관리에서 윈..