본문 바로가기

3. 웹 애플리케이션 취약점 진단136

[비박스를 활용한 웹 취약점 진단] 4-1.XML/Xpath 인젝션 [Search] 이 페이지는 영화를 장르별로 분류해서 영화 제목만 테이블 형태로 출력한다. [난이도 하] 위 URL 주소창에 노출된 genre 변수에 ' 를 넣었더니 XML 에러가 출력되었다. 이제 항상 참인 쿼리를 넣어보자. 정상 쿼리에서 contains 함수를 호출하는 페이지이기 때문에 이번에는 소괄호와 []를 사용해서 정상 쿼리를 강제로 닫는 쿼리를 넣을 것이다. XML 호출 시에는 중간에 주석 문자를 입력하지 못하므로 정상 쿼리의 나머지 부분도 문법 오류가 발생하지 않도록 쿼리를 입력하자. contains 함수의 인자는 두개이며 첫 인자에 입력한 문자열이 두번째 인자에 있으면 true 아니면 false를 반환하는 함수이다. ') or 1=1 ][(' or 쿼리를 넣어서 해결하였다. 이처럼 참을 만드는 쿼리는 여러.. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 4.XML/Xpath 인젝션 [Login Form] XML은 데이터를 트리 구조로 표현하며 사용자 정의로 데이터를 분류한다. XML로 사용자 편의에 맞게 데이터를 분류할 수 있다. ex) 1 matrix 위 예제에서 movies가 최상위 노드, 하위 노드가 action, action의 하위노드에는 id,name 이라고 보면 된다. Xpath는 쿼리의 일종으로 XML 데이터베이스 내용을 선택하고 조작하기 위해 사용한다. '/' 문자를 사용하여 최상위 노드부터 질의할 곳을 정한다. ex) $result = $xml -> Xpath ("/movies/action[id='" . $id . "' and name ='" . $name . "']"); XML 및 Xpath 인젝션은 XML 구조에 악의적인 행위를 일으키는 내용을 삽입하거나 Xpath를 조작해서 XML .. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 3-3.Blind SQL 인젝션 [WS/SOAP] SOAP 란? - Simple Object Access Protocol 으로 애플리케이션 계층의 프로토콜을 전송 계층의 프로토콜로 사용할 수 있도록 하는 프로토콜로 HTTP,HTTPS,SMTP 등을 통해 XML 기반의 메시지가 네트워크에서 교환될 수 있다. 네트워크에 있는 정보를 모아 서비스로 제공하므로 SOAP를 통해 물리적으로 인접하지 않은 서버에 정보를 요청하고 그에대한 응답 값을 확인할 수 있다. 이번 페이지는 영화를 선택하면 남아있는 티켓 수를 출력한다. 티켓 수 출력에 SOAP를 활용하여 티켓 수를 보여준다. SOAP 기능을 통해 Boolean Based SQLI와 Time Based SQLI가 가능하다. [난이도 하] 우선 URL주소에 노출된 title 변수 값에 ' 를 넣었는데 ticket.. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 3-2.Blind SQL 인젝션 [Time-Based] 이번 페이지는 검색 결과를 이메일로 보내는 기능을 한다. 즉, 참과 거짓에 대한 메시지 내용을 화면에 출력하지 않고 동일한 메시지를 출력한다. 따라서 참과 거짓을 구별하기 위해 sleep() 함수를 사용한다. [난이도 하] 검색 결과가 동일하기 때문에 ' 를 넣어도 오류메시지는 보이지 않는다. 그래서 이번엔 sleep() 함수를 써볼 것이다. sleep() 함수는 인자로 정수형 값을 받는데 입력한 숫자의 초 단위로 응답이 지연된다. 이를 이용해보자. ' or 1=1 and sleep(4)# 구문을 넣었더니 로딩이 4초간 멈췄다가 검색이 되는 것을 볼 수 있다. 이는 참이기 때문에 4초간 멈춘거라고 보면 된다. 전과 같은 문제와 같은 쿼리를 사용하되 뒤에 and sleep() 함수만 붙여주면 된다. ' o.. 2023. 12. 13.