본문 바로가기

3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단62

[비박스를 활용한 웹 취약점 진단] 3-1.Blind SQL 인젝션 [Boolean-Based] Blind SQL 인젝션이란? - 쿼리의 결과를 참과 거짓만으로 출력하는 페이지에서 사용하는 공격으로 참과 거짓을 통해 판별하는 추측 공격이다. 블라인드 SQL 인젝션에서 사용하는 함수는 substr, ascii, limit 등이 있다. substr - 첫번째 인자로 받은 문자열을 지정한 길이만큼 출력, 문자 하나씩 출력하여 이름을 알아낸다. ascii - 문자를 아스키코드로 변환하는데 ' 를 우회하는 변수일 때 문자를 입력하기 위해 사용 limit - 문자열의 길이를 반환한다, 문자열의 길이를 알아내면 substr으로 문자열 추측하기가 쉬워진다. Boolean Based 인젝션은 공격 쿼리로 인해 DB 내용을 노출하는 취약점이다. 쿼리는 DB내용이 일치하여 웹페이지에서 참을 출력할 때 까지 임의의 값을.. 2023. 12. 12.
[비박스를 활용한 웹 취약점 진단] 2-7.SQL 인젝션 [Stored (Blog)] 이 페이지는 사용자가 입력한 내용을 저장하고 테이블 형태로 출력한다. 빈칸에 ' 를 입력 후 버튼을 눌러 SQL 에러가 나는지 확인하자. 에러 발생 시 SQL 인젝션에 취약하다. 또한, MySQL을 쓰는 서버인것을 확인한다. 또한, ​bee') 라는 오류 내용을 보고 사용자의 아이디를 가장 마지막에 저장한다는 점도 유추할 수 있다. bee는 표에서 가장 왼쪽에 계속 표시되었으므로 이 칸에 SQL 쿼리를 넣는다면 값을 노출시킬 수도 있을것이다. 버프슈트로 확인해보니 변수는 entry와 blog를 사용하는듯 하다. 텍스트 입력 공간에 입력한 값이 entry로 넘어간다. 오류 메시지를 살펴보기 위해 '1 이라는 값을 entry 변수에 넣고 forward 해보자. 그랬더니 '1','bee')' 라는 오류 메시지.. 2023. 12. 12.
[비박스를 활용한 웹 취약점 진단] 2-6.SQL 인젝션 [Login Form/Hero] 이번 페이지는 'hero' 그룹에 속하는 사용자들이 로그인하면 로그인한 사용자의 비밀번호 힌트를 출력한다. [난이도 하] 우선 login 폼이나 Password 폼 둘중 하나에 '를 넣고 Login 버튼을 누른다. 위처럼 SQL 에러가 나오면 SQL인젝션에 취약한 것이다. 오류 메시지를 통해 데이터베이스 서버 종류를 파악할 수 있다. 이번 페이지는 MySQL DB를 사용중인것 같다. 이제 아이디 폼에 ' or 1=1# 을 입력해보자. 그랬더니 비밀번호를 입력하지 않고도 로그인이 되었다. Neo라는 아이디로 접속이 되었다. 아래에는 비밀번호에 대한 힌트가 나왔다. 이는 변수를 따로 입력받지 않고 AND 연산자를 사용, 한줄로 DB의 아이디와 비밀번호를 출력하기 때문에 발생하는 취약점이다. 페이지에서 사용하.. 2023. 12. 12.
[비박스를 활용한 웹 취약점 진단] 2-5.SQL 인젝션 [AJAX/JSON/jQuery] AJAX 란? - Asynchronous Javascript and XML 으로 HTML, 자바스크립트, JSON을 혼합해서 쓰는 기술을 말한다. JSON 이란? - Javascript Object Notation으로 웹서버와 데이터를 주고받을때 데이터를 표현하는 방법을 뜻하는데, 자바스크립트 형식으로 객체를 표현한다. JQuery 란? - 자바스크립트 라이브러리중 하나로 클라이언트에서 스크립트 언어를 쓸때 이를 단순화하며, AJAX 기능도 제공한다. ​ [난이도 하] 이번 페이지는 AJAX 기술을 활용하여 검색 버튼을 누르지 않아도 글자만 입력하면 알아서 검색 결과를 보여준다. 이럴 때에는 개발자 도구를 활용하여 검색에 사용하는 변수가 무엇인지 알아볼 수 있다. 보아하니 title 변수를 사용하는것 같.. 2023. 12. 12.