일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker
- CD
- GitLab
- opentelemetry
- Crawling
- ECR
- linkerd
- 웹 해킹
- helm
- CI/CD
- CI
- Resource
- argocd
- Kubernetes
- Monitoring
- deploy
- eks
- gitlab cd
- Jenkins
- 스크레이핑
- 크롤링
- Service Mesh
- 모의해킹
- sonarqube
- Prometheus
- gitlab ci
- 웹 취약점
- scraping
- Grafana
- DevOps
- Today
- Total
목록분류 전체보기 (57)
ㅡ.ㅡ
※ 검증되지 않은 리다이렉트 취약점 다른 페이지로 연결(리다이렉트, 포워드)하기 위한 목적 페이지를 결정하기 위해 신뢰되지 않은 데이터를 사용하는데 이에 대한 적절한 검증이 없다면 공격자는 리다이렉트되는 파라미터 값을 변조 후 해당 링크를 통해 사용자를 피싱, 악성코드 사이트로 연결시키며 권한이 없는 페이지에 접근하는데 사용할 수 있는 취약점이다. ※ 실습 url파라미터를 통해 외부 페이지로 이동하는 웹 페이지의 기능과 소스코드를 확인할 수 있다. ▼ 리다이렉트 되는 URL 파라미터 값을 네이버 페이지로 변경 후 요청 후 OK 버튼을 클릭한 결과로 로그를 확인해 보면 네이버 페이지로 이동되는것을 확인할 수 있다. ▼ ※ 대응방안 리다이렉트되는 파라미터의 입력 값을 안전한 URL목록을 생성 후 화이트리스트..
X-FRAME-OPTION HTML 인젝션을 통해 클릭 재킹 공격에 활용되는 , , 태그를 통해 외부 페이지를 삽입하였을 때 외부 페이지가 렌더링되지 않도록 방지하는 HTTP 응답 헤더 이다. 속성 내용 DENY 프레임을 표시 하지 않음 SAMEORIGIN 동일한 도메인의 프레임만 표시 ALLOW-FROM 지정한 도메인의 프레임만 표시 X-XSS-Protection 브라우저에서 제공하는 기능으로 XSS 공격을 감지 할 때 페이지 로드를 중지시키는 헤더이다. 속성 내용 0; XSS 필터링 비활성화 1; XSS 필터링 활성화 1; mode=block XSS 필터링 활성화 후 XSS 공격 감지 시 렌더링 중단 1; report= XSS 필터링 활성화 후 XSS 공격 감지 시 렌더링 중단 후 보고
세션 아래 코드는 세션을 사용하여 페이지를 요청할 때 쿠키를 따로 전송하지 않고 세션에 저장된 쿠키를 사용하여 페이지를 요청하는 코드이다. import requests # 세션 생성 session = requests.Session() # 폼에 데이터 입력 + 세션 사용하여 요청하기 params = {"username":"ekwkqk12", "password":"password"} req_s = session.post("http://pythonscraping.com/pages/cookies/welcome.php", data=params) # 세션에 저장된 쿠키 데이터 확인 print("[+] 쿠키에 저장된 데이터 ") print(req_s.cookies.get_dict()) # 쿠키 값이 포함된 세션을 사..
쿠키 사용 흐름 아래 그림은 웹 페이지에 로그인시 입력된 데이터를 쿠키에 저장하여 프로필 페이지에 사용자의 정보를 출력하는 페이지에 흐름을 보여준다. ▼ ▼ ▼ 쿠키 사용 코드 아래 코드는 이전에 쿠키를 사용하여 사용자 정보를 출력하는 것을 코드로 작성한 것이다. 로그인 데이터를 지정하여 다음 페이지를 요청하고 쿠키에 저장된 데이터를 확인 후 프로파일 페이지를 쿠키와 함께 요청한다. import requests # 폼에 데이터 입력하여 페이지 요청하기 params = { "username": "ekwkqk12", "password": "password" } req = requests.post("http://pythonscraping.com/pages/cookies/welcome.php", data=par..
폼 아래 그림을 보면 실제 웹사이트 HTML 코드로 form태그의 action속성 값은 입력된 값이 실제로 처리될 페이지를 의미한다. Input태그에 Name속성의 값을 활용하여 데이터를 추가하여 전송 할 수 있다. 폼 사용 코드 아래 코드는 requests모듈의 post함수를 사용하여 웹 페이지의 폼에 데이터를 추가하여 요청하는 코드이다. import requests # 폼에 데이터 입력하여 전송하기 params = { "firstname": "김", "lastname": "현우" } req = requests.post("http://pythonscraping.com/pages/files/processing.php", data=params) print("[+] 응답 상태 : ", req) print("..
Requests 라이브러리란? urllib과 같이 HTTP 요청을 처리하나 좀더 세부적인(헤더, 쿠키, 폼, 세션 등) HTTP 요청처리를 하는 라이브러리이다. 요청과 응답 requests모듈을 사용하여 웹페이지에 요청하고 요청한 응답에 대한 데이터 아래 그림과 같이 볼 수 있다. import requests # 요청 하기 r = requests.get("https://www.google.com") print("[+] 요청 결과 : ", r) # 응답 HTTP 헤더 추출 r2 = r.headers print("[+] 응답 헤더 : ", r2) # 인코딩 추출 r3 = r.encoding print("[+] 인코딩 : ", r3) # str 자료형으로 디코딩된 응답 본문 추출 r4 = r.text prin..
※ DB 파일로 데이터 저장하기 sqlite3모듈을 사용하여 책 목록 페이지에서 책에 이름과 상세정보가 담긴 링크를 추출하여 DB파일에 저장하는 코드이다. 코드에 사용된 중요 함수는 아래 표와 같다. from urllib.request import urlopen import re, sqlite3 from html import unescape # 웹 페이지 요청 req = urlopen("http://www.hanbit.co.kr/store/books/full_book_list.html") encoding = req.info().get_content_charset(failobj="utf-8") html = req.read().decode(encoding) # DB 설정 conn = sqlite3.conne..
※ CSV 파일로 데이터 저장하기 json모듈을 사용하여 책 목록 페이지의 책에 이름과 상세정보가 담긴 링크를 추출하여 Json파일로 저장하는 코드이다. 코드에 사용된 중요 함수는 표와 같다. import json,re from urllib.request import urlopen from html import unescape # 웹 페이지 읽어오기 req = urlopen("http://www.hanbit.co.kr/store/books/full_book_list.html") encoding = req.info().get_content_charset(failobj="utf-8") html = req.read().decode(encoding) # 파일 생성 with open("booklist.json",..
CSV 파일로 데이터 저장하기 CSV모듈과 re모듈을 사용하여 한빛 미디어 책 목록 페이지에서 정규표현식을 활용하여 책에 이름과 상세정보가 담긴 링크를 추출하여 CSV파일에 저장하는 코드이다. 해당 코드에 사용된 중요한 함수와 정규표현식에 대한 설명은 아래 표와 같다. from urllib.request import urlopen import re, csv from html import unescape # 웹 페이지 읽어오기 req = urlopen("http://www.hanbit.co.kr/store/books/full_book_list.html") encoding = req.info().get_content_charset(failobj="utf-8") html = req.read().decode(e..