[웹보안] 웹보안 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. 재전송







+ Recent posts