| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- git push -u
- Package
- Linked List
- node.js
- 데이터분포
- 클래스
- sqld
- echo 명령어
- gdgm
- 생성형AI
- 지도학습
- SK쉴더스
- 레이블인코딩
- 루키즈
- 꽉뚝짝 시장
- 성능평가지표
- 루키즈33기
- 패키지
- tunder client
- dropna
- 보안공부
- pandas
- List
- 수업복습
- 예외처리
- 방콕
- 함수
- 태국
- OT후기
- 블록(Block)
- Today
- Total
목록Study/Web Security (7)
개발 블로그
🐢 안녕하세요, 카메입니다.다름이 아니라, 원래 저번 포스트에서 여러 방어 기법을 적용한 후 과제를 마무리 하려고 하였는데요, 제가 만든 예시 이긴 하지만 취약점이라고 여겨졌던 부분이 코드의 일부를 살짝 수정하니까 공격을 차단할 수 있었다는 부분에서 큰 흥미를 느꼈습니다. 해서, 일반적으로 배울 수 있었고 쉽게 접할 수 있었던 앞선 방어 기법들 (Prepared Statement, 입력값 검증/필터링 등등)을 제외한 새로운 방어 기법도 다뤄보고 싶다는 생각을 하게 되었습니다. 결국, 그런 과정 속에서 저는 WAF (ModSecurity) 라는 방어 기법도 포함해 보기로 하였습니다. 실습 전에, WAF (ModSecurity) 가 무엇인지 먼저 알고 넘어가야 겠습니다. WAF (Web Applicati..
🐢 안녕하세요, 카메입니다.저번에 공격 실험을 수행했던 취약한 웹 페이지를 오늘은 여러 방어 기법들을 적용하여 취약점을 막는 실습을 하려고 합니다.방어 1: Prepared Statement 적용 (로그인 페이지) sudo nano /var/www/html/login_secure.php입력한 값:"; echo "아이디: $user"; echo "비밀번호: $pass"; if (mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); echo "로그인 성공! 환영합니다, " . $row['username'] . "님"; } else { echo "로그인 실패! 아이디 또는 비밀번호가..
🐢 안녕하세요, 카메입니다.저번에 마쳤던 간단한 취약 웹 페이지를 통해 오늘은 공격 실험을 해보도록 하겠습니다.단계 1: Basic SQL Injection (로그인 우회)http://localhost/login.php에 접속해서 아래 값들을 입력합니다. 실험 1-1: 정상 로그인 (비교용)아이디: admin비밀번호: admin1234-> 로그인 성공이 뜰 거예요. 이건 정상적인 경우입니다. 실험 1-2: 틀린 비밀번호아이디: admin비밀번호: wrongpass-> 로그인 실패가 뜨는 걸 확인하실 수 있습니다. 실험 1-3: SQL Injection 공격아이디: ' OR 1=1 -- (-- 뒤에 공백 한 칸 있습니다)비밀번호: 아무거나 (예: aaa)-> 비밀번호를 모르는데도 로그인 성공이 뜨면 공격..
🐢 안녕하세요, 카메입니다.오늘은 저번에 만들었던 공격의 대상이 될 데이터베이스가 쓰일 취약한 웹 페이지를 간단하게, 아주 간단하게! 만들어보려고 합니다.Step 1: 로그인 페이지 (Basic SQL Injection용)sudo nano /var/www/html/login.php실행된 쿼리:"; echo "$query"; if (mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); echo "로그인 성공! 환영합니다, " . $row['username'] . "님"; } else { echo "로그인 실패! 아이디 또는 비밀번호가 틀렸습니다."; }}?> 로그인 페이지 ..
🐢 안녕하세요, 카메입니다.저번에 진행하였던 환경 구축과 LAMP 스택 설치에 이어, 이번에는 데이터베이스를 준비해보는 시간을 가지도록 하겠습니다. Step 1: MySQL 접속 sudo mysql 다음 명령어를 접속하면 다음과 같이 mysql > 프롬프트가 뜹니다. Step 2: 데이터베이스 생성간단한 쿼리문을 통해 데이터베이스를 생성합니다.CREATE DATABASE web_security; Step 3: 사용할 사용자 계정 만들기PHP에서 MySQL에 접속할 때 쓸 계정을 만듭니다.CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'webpass123';GRANT ALL PRIVILEGES ON web_security.* TO 'webuser'@'localhos..
🐢 안녕하세요, 카메입니다.앞서 말씀 드렸던 것처럼 웹 보안 수업 때 진행하는 웹 보안 기법을 티스토리에 정리하며 진행을 하려고 합니다. 오늘은 첫 단추로 환경을 구축하도록 하겠습니다.1. VMware과 Ubuntu 설치 상태저는 이미 전에 VMware + Ubuntu 모두 설치를 해 둔 상태입니다. WMware workstation에서 여러 번 실습을 해본 경험도 있습니다. 그래서 이 부분은 넘어가도록 하겠습니다. 2. LAMP 스택 설치그러면 다음으로 LAMP 스택 설치로 넘어가도록 하겠습니다. 우선, Ubuntu 터미널을 열고 다음 순서를 따라가면 됩니다. Step 1: 패키지 목록 업데이트가장 먼저 패키지 목록을 최신으로 업데이트 합니다.sudo apt updatesudo apt upgrade ..
1. 서론SQL Injection은 웹 애플리케이션에서 사용자 입력값을 적절히 검증하지 않을 때 발생하는 대표적인 웹 보안 취약점이다. 공격자가 입력 필드에 악의적인 SQL 구문을 삽입하면 의도하지 않은 데이터베이스 쿼리가 실행되어 인증 우회, 데이터 탈취, 데이터 변조 등의 심각한 보안 사고로 이어질 수 있다. OWASP TOP 10 에서도 Injection 공격은 꾸준히 상위에 랭크되어 있으며 여전히 많은 웹 사이트에서 발견되는 취약점이다. 본 과제에서는 가상 머신 환경에서 Apache, PHP, MySQL 기반의 웹 서버를 직접 구축하고 의도적으로 취약하게 작성된 웹 사이트에 대해 SQL Injection의 세 가지 기법 (Basic, Union-based, Blind)을 단계별로 수행하여 각 공격..