웹 해킹 & 시큐어 코딩 31

웹 해킹 & 시큐어 코딩 (31)

URL 접근 제한 미흡 취약점이란 무엇인가?인가받지 않은 사용자가 접근 가능하다면 취약점이 발생한다. 인증과 인가에 대한 이해인증(Authentication), 인가(Authorization)로그인 유무 파악 / 권한 있는지 파악공격 원리 분석공격자가 접근만 하면 된다. 공격자가 admin 페이지를 유추해서 접근할 텐데, 제어가 없다면 접근이 가능해질 것이다. 별다른 공격 원리가 없다. 예를 들어http://www.victim.co.kr/page어떤 페이지에 접속하는지 유추를 해야 한다. (수동적 유추)자동화 도구를 사용할 수도 있다. 사전식 대입으로 주로 이루어진다. 대부분 관리자 페이지를 유추한다. [실습10-1] URL 접근 제한 미흡 취약점 공격 실습현재 이런 상태이다. 로그인하지 않은 비회원 상..

웹 해킹 & 시큐어 코딩 (30)

[실습9-2] 파라미터 변조 취약점 공격을 통한 타 사용자 정보 무단 열람 실습해커 계정으로 로그인한 뒤, mypage를 누르면 버프 스위트에서 파라미터 값이 hacker로 뜬다. 만약 저게 뜨지 않는다면 파라미터 변조 취약점은 없을 것이다. 다만, mypage에 접속하려고 할 때 쿠키 세션 값을 확인할 것이다. 그럼 훨씬 안전하다. 지금 환경에선 파라미터 값을 받으면서 조회하는 기능 동작을 하고 있다.우선 원활한 실습 환경을 위해 mypage.php를 이렇게 수정해주었다. 세션값을 받지 않고 파라미터 값으로 회원 정보를 알아내는 방식으로 코드를 바꿔주었다.그럼 파라미터 변조가 가능한지 확인해보자. 임의로 이렇게 변조를 하면존재하지 않는 사용자라고 경고창이 뜬다.  세션을 통해 처리하는 것이 아니라 파라..

웹 해킹 & 시큐어 코딩 (29)

파라미터 변조 취약점이란 무엇인가?정상 요청 : mypage.jsp?id=hacker공격 요청 : mypage.jsp?id=admin이렇게 파라미터 값을 변조하기 때문에 정상 요청인지 공격 요청인지 파악하기 어렵고, 공격하기에는 쉽다. 공격 원리 분석사용자 입력값을 통해서 액션이 이루어지는 기능. 파라미터. mypage.jsp?id=guest여기서 id값을 받을 것이다. 사용자에 대한 레코드가 애플리케이션으로 반환된다. sql에서 select * from member where id='guest'; 이런 식으로 반환될 것이다.  해커 같은 경우, 자신의 id가 hacker인데 admin으로 변조한다. 물론 존재하는 id를 넣어서 조회가 되는지 확인해야 한다. admin에 대한 레코드가 그대로 반환되면 공..

웹 해킹 & 시큐어 코딩 (28)

[실습8-5] 취약 환경 시큐어 코딩 적용 실습우선 저번에 실습할 때 작성해둔 코드는 싹 지워준다 (action.php에서의 검증 로직) 파일을 업로드하는 write 부분과 modify 부분에 시큐어 코딩을 적용해주어야 한다.action.php에서 다음과 같이 코딩한다. 우선 화이트 리스트 방식으로 허용된 확장자만 받도록 한다. (png, jpg, gif)그리고 이 외의 확장자가 들어오면 허용된 확장자가 아니라고 표시하며 종료시킨다.또한, 파일명을 바꿔서 저장할 계획이므로 이를 sha1 해시함수로 변환시켜서 저장하도록 한다. 확장자는 그대로 유지해야 하므로 $final_filename .= ".".$ext; 이렇게 작성해주었다. 이렇게 되면 파일명으로 내부 웹 디렉터리에 혼란을 주는 것을 피할 수 있다...

웹 해킹 & 시큐어 코딩 (27)

[실습8-3] 개발자분들이 자주 실수하는 잘못된 대응 방안 적용Case 1) 검증되지 않는 확장자 사용 => 블랙 리스트 방식Case 2) 빈값 검증 미흡 => 블랙 리스트 방식, 윈도우 서버 환경Case 3) 대문자 검증 미흡 => 블랙 리스트 방식, 윈도우 서버 환경Case 4) 잘못된 확장자 파싱 => 블랙리스트/화이트리스트 모두 해당만약 test.png.php라면? 업로드할 때 우회된다. 우선 Case1에 대해 알아보자. action.php에 검증 로직을 추가로 적용해준다.이렇게 보면, 파일 정보를 가져와서 확장자만 추출해준다. 그 확장자가 php일 때 오류 메시지가 출력되도록 하는 코드이다. php만 안되게 해놨으므로 이는 블랙리스트 방식임을 알 수 있다. 저장해주고 그럼 직접 php 파일을 업..

웹 해킹 & 시큐어 코딩 (26)

파일 업로드 취약점이란 무엇인가?사용자가 파일 업로드할 때 (정상파일) 악의적인 사용자가 비정상 파일을 업로드한다. 비정상 - 정상적인 경로를 벗어난 것. SSS로 작성된 웹셀 코드이냐 아니냐에 따라 정상과 비정상으로 나뉨 (서버 사이드 스크립트)OS command 취약점과 동일한 취약점이 나타난다. (파급력 있는 취약점) 웹 방화벽, 웹쉘 모니터링 솔루션 등으로 방지할 수 있다. 공격자가 웹 서버에 침투하여 제어권을 얻는다. 중요 정보, 설정 파일 등을 열람할 수 있다. 인근 동일 네트워크 서버의 정보 획득이 가능해진다. 공격자가 원하는 행위를 할 수 있는 수단으로 이용하는 파일 업로드 취약점. 공격 원리 분석악성 스크립트 업로드를 시도. 업로드가 진행될 때 파일 명을 받는다. 기존의 경로와 합쳐진다...

웹 해킹 & 시큐어 코딩 (25)

파일 다운로드 취약점이란 무엇인가?정상적인 파일이 아닌 비정상적인 파일을 다운로드받는 취약점. 공격 대상은 파일 다운로드 기능. 정상적인 파일과 비정상적인 파일 기준은 무엇일까?사용자는 정상적으로 파일을 다운로드 받는다. 기준은 파일 다운로드 기능에 제한되어 있는 곳에서 다운로드를 실행하느냐, 아니면 벗어나느냐에 따라 구분된다.기존에 다운로드 기능은 특정 경로를 지정해둔다. 예를 들어, /web/root/A/upload/이렇게 사용자가 업로드하는 경로가 있고, 여기서 다운로드받을 수 있게 지정된 경로를 통해 받을 것이다. 그러나 공격자는 이 경로를 변조한다. 전체 경로를 사용자로부터 입력받는다면 쉽게 경로를 바꿀 수 있다. 일부 경로만 받는 경우도 있지만, 공격자가 경로 이동 문자를 삽입하면, 경로 이동..

웹 해킹 & 시큐어 코딩 (24)

[실습6-3] Ajax를 활용한 Stealth CSRF 공격 true: 비동기화. 요청이 올 때까지 기다리는 게 아니라 다른 작업도 가능하게끔 만들기. 효율적이다.챗지피티 참고.해커 계정으로 이렇게 글을 작성한다.관리자 계정으로 이 글을 클릭하면 어떻게 되는지 실습해보자.변화를 알 수 없다. 그런데 요청이 이루어졌을 것이다.이렇게 마이페이지도 바뀌어졌고패스워드도 바뀌었는지 확인해보면 바뀌었음을 확인할 수 있다. 참고. 게시글을 모두 삭제하고 싶을 때 이렇게 삭제하면 된다.mysql 부르는 건 mysql -u root -p 입력하고 패스워드를 입력하면 된다.use pentest;delete from insecure_board; 대응 방안1. Referer 값 검증회원 정보 수정 요청을 홈페이지 내에서 요청..

웹 해킹 & 시큐어 코딩 (23)

[실습6-1] CSRF 공격을 통한 게시글 무단 작성, 수정, 삭제 실습우선 악성 스크립트를 저장하고, 그 웹 서비스에 접근했을 때 요청 변조가 되도록 해보자.xss 공격에 취약해야 된다.우선 저번 실습에 xss 공격이 불가하도록 시큐어 코딩을 했기 때문에 이번 실습을 위해 취약한 소스코드로 수정해보자.action.php에서 content 변수만 이렇게 시큐어 코딩을 하기 전으로 돌려주자.공격 페이로드를 만들어주어야 한다.공격자 계정으로 게시글을 작성해서, 그 게시글을 열람한 사람이 의도하지 않은 방식으로 게시글을 작성하게끔 만들어보자.우선 이런 글을 써서 등록한 후에, burp suite를 통해 request 값을 보자.공격 페이로드를 만들 것이기 때문이다.copy url을 눌러 일단 복사해주고 con..

웹 해킹 & 시큐어 코딩 (22)

CSRF란 무엇인가?Cross-Site Request Forgery사이트 간 요청 위조라는 뜻.사용자가 의도하지 않은 요청을 공격자에 의해 강제적으로 시도될 수 있다.대표적으로 사용자 정보 수정을 무단으로 하는 것, 패스워드 변경, 탈퇴, 게시글 작성/수정/삭제 등이 있다. 원래 사용자가 회원 정보를 수정하기 위해서, 의도적으로 정상적인 요청을 사용자가 보낼 것이다. 그러나 CSRF 공격 시, 공격자에 의해 사용자에게 스크립트가 발생되고 의도하지 않은 요청으로 회원 정보가 수정될 수 있다. 공격 원리 분석예시 1)공격자가 패스워드를 수정하는 악성 스크립트를 만들었다고 가정해보자. 공격자는 웹 서비스 특정 게시글에 이 스크립트를 작성한다. DB에 저장이 되고, 인증된 사용자가 그 게시글을 읽게 된다. 사용..