본문 바로가기

정보보안/화이트 해커를 위한 웹해킹의 기술

실전 모의해킹 https://pentesterlab.com/exercises/from_sqli_to_shell/attachments 위의 사이트에서 sql 취약점이 있는 가상환경을 가져온다. 칼리리눅스에서 해당 ip에 접속하면 다음과 같은 사이트가 나온다. 먼저 해당 ip를 nikto로 조사해보면 XSS와 SQL injection에 취약하다고 나와있다. 사이트를 먼저 돌아본다 특징을 보면 들어간 사이트가 id로 전달 되는것 같다. SQL injection의 여부를 확인하기 위해 id에 1' 넣어봤더니 SQL오류가 나오므로 SQL injection 취약점이 있을 것이다. XSS에 취약한 것을 확인했다. sqlmap을 이용해서 조사해보았다. 조사해 보니 id 파라미터가 취약하다고 한다. --current-db를 이용해서 ..
Known Vulnerability 오픈소스, 라이브러리에 알려진 취약점을 활용하는 것 Heart Bleed 취약점 HTTPS 웹에서 SSL/TLS 하트비트라는 확장기능에서 발견되어 명명됬다고 함. BWAPP에서 실습을 해보았다. 먼저 attack script를 다운받고 8443포트로 접속한후 사용법을 보고 실행하면 된다. python heartbleed.py 192.168.109.134 비밀번호도 노출되는 모습을 볼 수 있다. Shell Shock () { : ;}; 시스템환경변수에 다음과같은 패턴의 명령어가 있을때 명령어가 실행됨 env x='() { :;}; echo vulnerable' bash -c 'asdf' 이런 방식으로 체크 가능 오른쪽과 같이 취약한 쉘은 vulnerable이 출력된 모습이다. BWAPP에서 실습 해보았다...
XML eXternal Entity XXE XML 타입 데이터를 웹에서 요청할때 서버에서 외부 엔티티를 처리할 수 있게 할때 나타낼 수 있는 취약점이다. XML은 다목적 마크업 단어라고 한다. BWAPP에서 실습해 보았다. Burp Suite로 가운데 있는 Any bugs를 입력했을때 전송되는 요청을 보면 Content-Type : text/xml 이 부분을 볼 수 있다. 이에 대해 response에 bee's secret~~ 라고 오는 부분을 보고 bee를 다른걸로 바꾸면 어떻게 될까 추측할 수 있다고한다. Repeater 로 요청을 옮겨서 bee를 asdf로 바꾸니 asdf로 바뀐 응답이 돌아왔다. 이를 활용하여 다음과 같이 요청을 보내서 이에대한 응답을 얻는 것이다. 이를 방지하기 위해서는 외부 엔티티 참조 기능이 필요하지 않을때 이..
접근 통제 취약점 공격 - URL이나 파라미터 조작 - 관리자 페이지에 접근 - 웹 디렉터리 경로를 벗어나 접근 Insecure Direct Object Reference(IDOR) 안전하지 않은 직접 객체 참조 공격 BWAPP 에서 실습을 해보았다. Confirm 하면 15EUR에 티켓 1개를 구매한것이다. 이를 버프스위트에서 intercept 해서 다음과 같이 수정한뒤 Forward로 보내면 1000개 티켓을 0원해 구매할 수 있다. 이를 방지하기 위해 입력된 값을 클라이언트한테 받지 않는다. 관리자페이지 bWAPP은 bWAPP/admin/ 으로 쉽게 접근이 가능하다. DVWA 역시 /setup.php로 접근 가능하다. 이는 이를 방지하기위해 관리자 메뉴를 별도의 포트번호에 제공하거나 HTTPS프로토콜을 이용한다. 관리자 ..
민감한 데이터 노출 민감한 데이터 - 개인정보 - 로그인에 필요한 정보 ex) pw, session ID HTTP - 네트워크 스니핑 당할 위험이 있음 ex) tcpdump, wireshark 웹스토리지 사용 - 웹스토리지에 저장된 데이터를 자바스크립트로 읽을 수 있음 BWAPP의 웹 스토리지에서 실습을 해봤다. XSS를 이용해서 web storage에 저장된 login name 을 가져올 수 있다는것 같으네 확인해보면 login : BEE, secret : Any bug? 이를 BWAPP의 XSS-Reflected에서 아래와 같은 코드를 넣으면 secret에 해당하는 Any bugs가 나온다. 패스워드 노출 - 보안이 고려된 사이트에 패스워드 분실 신고를 하면 패스워드 초기화 방법을 주는 이유가 패스워드를 암호화해서 저장..
File Upload 게시판에 파일을 올리는 등을 이용해서 웹쉘을 업로드 해서 시스템 명령을 실행 하는 것이다. 이번에도 DVWA에 File Upload를 보았다. 책에서 준비해준 코드를 보면 system함수를 실행하게 하는 웹쉘 인것 같다. 이 파일을 올리면 파일이 올라간 주소가 나오는데 이 주소에 접근하면 원하는 대로 실행 할 수 있다. 이를 막기 위해서는 -파일의 확장자, 내용 검사 - 파일 저장 경로 설정/ 서버를 따로 구축 - 파일 업로드 디렉터리 실행 권한 제거 - 다른 확장자로 변경 등의 여러가지 방법이 있지만 어줍잖게 하면 우회해서 공격할 수 있다고 하는 것 같다.
File Inclusion File inclusion : php에서 include라는 함수를 이용해 소스코드에 포함하는 기능을 이용해서 공격자가 원하는 파일을 include 하는 취약점 LFI(Local File Inclusion) : 내부 파일 include ex) ../../ 이용하는 디렉터리 트래버설 공격 RFI(Remote File Inclusion) : 외부 파일 include DVWA에서 실습을 해 보았습니다. CSRF처럼 작성해 놓은 코드를 보니 etc/passwd를 보는 코드 File1에 들어가면 다음과 같이 나오고 url이 page=file1 이렇게 되있어서 이렇게 바꿔주면 host의 /etc/passwd를 볼수 있어야되는데 잘 안됬다;
Cross Site Request Forgery CSRF 공격은 원하지 않는 요청을 웹사이트에 보내는 것이다. 1번 이라는 조건이 되있어야 나머지가 다 실행가능함. DVWA에서 CSRF 취약점에 대해서 실습을 해보았다. 새로운 비밀번호를 넣어서 바꾸는 프로그램이다. 버프수트로 확인해보면 다음과 같이 변경 요청을 보낸다. 실습을 위해 책에서 준비한 xml 코드를 이용했다. 이를 웹서버로 실행을 하면 다음과 같이 나온다. Click을 누르면 비밀번호가 hacker로 바뀐다. 보시다시피 로컬에서 새로운 요청을 보낸것을 알 수 있다. 이를 방어하기 위해서는 1. 요청메시지의 헤더를 검사하여 다른 사이트의 요청을 받지 않는 방법이 있다. 2. CSRF 토큰을 사용하는 방법이 있다.