PenetrationTest For CTF
O 개요
- 공격자가 시스템의 정보 보증을 낮추는데 사용되는 약점. 취약점은 세 요소의 교집합. 1)시스템 민감성 또는 결함, 2)공격자가 결함에 대한 접근 3) 공격자가 결함에 대한 익스플로잇 가능성.
<OWASP TOP 10>
O SW취약점의 증명
- 통상적인 웹서비스 구조 WAS-WEB-(Interlink)-DB
- 외부 값의 입력->처리->저장 시 각 영역별 Procedure에서 발생
- CTF의 경우, 공격성 기법의 조합 및 최신 기법 요구
O SW취약점의 종류
- SQL Injection
공격벡터 |
ID/PW 로그인폼, 검색폼, URL의 인덱스파라미터, 쿠키 또는 히든필드 |
설명 |
신뢰할 수 없는 데이터가 명령어나 질의문의 일부분으로서 인터프리터로 보내질 때 발생(‘, ‘’, --) |
취약점 원인 |
String vul=”select * from test_table” + “where id=” + response.get Parameter(“user”) + “ and password = “ + response.getParameter(“password”); |
- Xquery Injection(XPATH 유사)
공격벡터 |
XML Document |
설명 |
XML 에 대한 동적 쿼리문(Xquery) 생성 시 외부 입력값에 대한 검증절차 부재로 빌생 |
취약점 원인 |
"for \$user in doc(users.xml)//user[username='" . $_GET["username"] . "'and pass='" . $_GET["password"] . "'] return \$user" |
- LDAP injection
공격벡터 |
외부 입력 값에 (=,+,<,>,#,\,*+,*)를 필터링 핮 않으면 LDAP 명령어 실행 |
설명 |
|
취약점 원인 |
DirectorySearcher src = new DirectorySearcher("(manager=" + managerName.Text + ")"); src.SearchRoot = de; src.SearchScope = SearchScope.Subtree; |
n XSS
공격벡터 |
Javascript |
설명 |
자바스크립트 처럼 클라이언트 측에서 실행되는 언어로 작성된 악성스크립트 공격. <script>, <? 등의 특수문자 필터링 없음. |
취약점 원인 |
String memo = rs.getString(1); Out.print(“text:” + textbox + “<br>”); |
n BOF
공격벡터 |
인자 값, 파일 |
설명 |
정해진 버퍼의 크기보다 큰 데이터를 저장함으로써 실행 시 오류 발생 |
취약점 원인 |
Void func(char *str) { Char buf[4]; Strcpy(buffer,str); Return ; } … strcat, sprinf, gets, scanf()…. |
n Command execute
공격벡터 |
Parameter |
설명 |
적절한 검증절차를 거치지 않른 사용자 입력값이 OS에서 실행 |
취약점 원인 |
String argu=props.getproperty(“type”) Strig gogogo= new string(“cmda.exe /k \”test.bat \””); Runtime.getruntime().exec(gogogo+”c:\\prog\\ + type); |
n File upload
공격벡터 |
File Upload |
설명 |
첨부파일 업로드 기능을 악용하여 웹 서버 권한 획득 |
취약점 원인 |
String fnaa=file.getoriginalfilename() File updir= new file(‘/app”); String filepath=uploaddir.getabsolutepath()+’/’+fnaa); |
n File Download
공격벡터 |
File Respo |
설명 |
첨부파일 다운로드 기능을 악용하여 웹 서버 권한 획득 |
취약점 원인 |
String fpathaa= UpPath+ filename; |
n Form Field 조작방지
공격벡터 |
Form |
설명 |
Hidden Field 값을 조작하여 악서기능 수행 |
취약점 원인 |
<input type=”hidden” name=”password” value=”1234”> |
n 신뢰되지 않는 URL 주소
설명 |
URL 파라미터 값에 페이지를 입력하여 피싱 등에 악용 |
취약점 원인 |
String fakeurl=request.getparameter(“fakeurl”); Response.sendredirect(fakeurl); |
n CSRF
설명 |
로그인한 피해자의 브라우저가 취약함 웹 애플리케이션에 의도하지 요청 수행 |
취약점 원인 |
<form name=”fform” method=”get” action=”gogo.do”> |
n 쿠키변조
설명 |
사용자 인증 등에 사용되는 쿠키의 인증 |
취약점 원인 |
Cookie c = new Cookie(id, realaccount) |
n 안정하지 않은 암호화 사용
설명 |
사용자 인증 등에 사용되는 쿠키의 인증 |
취약점 원인 |
Cipher c = cipher.getinstance(“base64”) |
O 보안설정
n 미 사용 CGI 제거 및 검색엔진 노출 방지
사용하지 않는 CGI 제거 및 rotbots.txt 설정 |
Php, cgi 제거 - User-agent: * Disallow: / - |
n 불충분한 전송 계층 보호
서버/클라이언트간의 통신시 암호화 |
SSL 적용 |
n 디렉토리 리스팅 및 심볼릭 링크 방지
현재 브라우징 하는 디렉토리의 모든 파일을 사용자에게 보여줌 |
Apache의 경우, httpd.conf의 Options 인자에 indexs 포함 Httpd.conf 의 options followsymlinks 제거 |
n CGI 스크립트 실행 디렉토리 제한
CGI 업로드 후 임의의 명령 실행 |
ExecCGI |
n 에러메시지 관리
에러메시지를 통한 정보 획득 |
별도의 에러페이지 작성후 redirection |
n 관리자페이지
모든 권한을 가지고 있는 관리자메뉴를 제공 |
제거 |
'잡다' 카테고리의 다른 글
용기, 삶 (0) | 2021.02.03 |
---|---|
ReverseEngineering For CTF (0) | 2021.01.18 |
ltrace (0) | 2021.01.18 |
Digital Forensic For CTF (0) | 2021.01.18 |
CTF 문제 (0) | 2021.01.18 |