[웹보안] 웹보안 2일차 - 오후
이 포스팅에서 나오는거 실습은
경찰서나 회사 법무팀에서 연락받기 싫으면
해킹테스트 하라고 오픈한 사이트나
본인 사이트에서만 하도록 하자
http://findbugs.cs.umd.edu.eclipse
이클립스 추가 설치 플러그인
findbug - http://findbugs.cs.umd.edu/eclipse
findsecurity
findbug 이클립스에 설치 하고 써먹어 보도록 하자
설치방법이나 사용법은 대충 구글해서 검색해 보고
사용 한다.
정적분석(static)
findbugs security (사용자 정의 룰 X)
PMD (사용자 정의 룰 xpath query)
동적분석(dynamic)
scanray(paraos)
arachni
static + dynamic => hybrid
xpath
https://www.w3schools.com/xml/xpath_examples.asp
https://www.w3schools.com/xml/tryit.asp?filename=try_xpath_select_cdnodes_first
xml 정보를 가져 올 수도 있다.
juliet (test cases)
=> sink(input form, file ..)
cwe juliet <- 구글에서 검색하면 나옴
https://samate.nist.gov/SRD/testsuite.php
필터링엔
white list
black list가 있다
근데 둘다 짱 귀찮음
화이트 리스트는 허용된 리스트 항목만 전송 시키고
블랙리스트는 작성해놓은 리스트와 일치 하는건 전송 안시키는 것
둘다 개귀찮은데 하긴 해야함
1 2 3 4 5 6 7 8 9 10 | package org.owasp.webgoat.lessons; public class XpathFilter { private String filter(String data) { // TODO Auto-generated method stub data = data.replaceAll("\"", ""); data = data.replaceAll("'", ""); return data; } } | cs |
요런식으로 만들어주자
그리고
1 2 | String expression = "/employees/employee[loginID/text()='" + XpathFilter.Xpath(username) + "' and passwd/text()='" + XpathFilter.Xpath(password) + "']"; | cs |
이렇게 값을 받아 쓰는 곳에 필터를 걸어 주도록 하자.
그럼 역슬래쉬와 싱글쿼테이션은 삭제가 된 문자열을 사용 하도록 하게 된다.
저렇게 바꾸면 실질적으론 차단이 되지만 findbug툴에선 여전히 xpath 취약점으로 나타나게 되는데
이때는 툴에서 예외처리를 해주면 된다.
취약점이 나타난 목록에 오른쪽 클릭 -> 토글 필터 - > this로 시작하는거 클릭
이렇게 하면 해당 리스트는 빠지게 된다.
툴이 아무리 대단해도 사람이 임의로 만든 클래스가 필터링 하는 클래스인지까진 인지하지 못하기 때문에
취약리스트에 그대로 나타나게 되는 것 이다.
툴ㅇ 다 만능이 아님
http(response) splitting
CRLF Injection
http 응답분할
=> CRLF(\r\n)
위의 세가지는 동일한 취약점임
CRLF = Carriage Return , Line Feed
키보드의 엔터키와 동일한 기능을 한다. 그러나 URL 특정 파라미터에 해당 코드를 삽입하는 경우
임의의 헤더 정보를 생성 할 수 있는 취약점이 발생된다.
대충 헤더가 생겨먹은건
get /test.php HTTP/1.1
Accept : image/gif ,
뭐 대충 이렇게 생겨먹은애들인데
URL에 엔터키 기능 하는 걸 넣어서 다른 헤더정보를 삽입이 가능 하게 만드는 것.
url=%0D%0A%20New_Header:New_Header_Value%0D%0A
이런식으로 공격 문자를 넣는다
제대로된 공격 문자는 검색해서 알아서 찾아 보도록 하자
\r 이거랑 \n 이거 필터링 걸면 됨
근데 사례가 겁내 많음 알아서 막자
세상은 넓고 해커는 많다
CSP - Content Security Policy
검색해서 적용시켜 보자
XSS (Cross Site Scripting)
크로스 사이트 스크립팅
텍스트에 스크립트를 넣어서 관리자 정보를 취득한다거나
다른 페이지로 이동시킨다던가 뭐 스크립트로 해먹을 수 있는건 다 할 수 있다
이건 유명하니까 좀만 검색해도 다 나옴
XSS가 먹히는지 확인하는 간단한 방법임
<script> alert("test"); </script>
burp suite(=scan-ray)
버프수트 프록시툴임 사람들이 많이 씀 관련한 글들도 검색하면 잘 나옴
client side : server side
# how to use proxy tool
1. proxy 설정(웹 브라우저 $ burp)
[[ web.brw => burp <요기서 가로챔> ]]<======> www
로컬 브라우저 웹
2. 대상 페이지 호출 및 변조
3. 재전송
'Yame Programmer > 웹보안' 카테고리의 다른 글
[웹보안] 웹보안 3일차 - 오후 (0) | 2017.06.03 |
---|---|
[웹보안] 웹보안 3일차 - 오전 (0) | 2017.06.03 |
[웹보안] 웹보안 2일차 - 오전 (0) | 2017.05.27 |
[웹보안] 웹보안 1일차 - 오후 (0) | 2017.05.20 |
[웹보안] 웹보안 1일차 - 오전 (0) | 2017.05.20 |