해당 취약점은 사용자의 IP 주소와 User-Agent 값이 저장되는 게시판 구조이다. User-Agent는 서버에서 사용하는 웹 브라우저 버전을 알려주는 HTTP 헤더값 종류 중에 하나다.

 

 

이제 여기서 새로고침을 누르고, 버프 스위트를 이용해 패킷을 캡처했다.

 

 

위와 같이 GET 메소드를 사용하여 정보를 가져온다. 문제가 User-Agent인 만큼 User-Agent에 SQL문을 삽입하기 전에 '(싱글쿼터)를 넣고 에러 유무를 확인했다.

 

 

패킷 전송 결과 200 OK 응답 코드가 왔으나 아래 SQL 에러가 발생했다. 저 결과를 바탕으로 1','2')# SQL문을 User-Agent에 넣었다.

 

 

위와 같이 IP 주소와 User-Agent값이 1과 2로 변경되었다. 이제 버전을 확인하기 위해 2',(select @@version))#을 넣었다.

 

위와 같이 넣고 전송한 결과 아래와 같이 IP 주소 값에 버전을 확인할 수 있었다.

 

 

블로그 이미지

꼴통보안인

,

해당 취약점은 SQLite로 DB를 구성한 게시판에 게시물을 올릴 때, 올린 게시물에 DB의 중요 정보가 입력되어 게시물에 출력되게 만드는 취약점이다.

 

 

'(싱글쿼터)를 입력하면 글이 저장되었다는 말은 나오지만 실제로 웹상에 출력되진 않는다.

 

 

그 외 나머지는 모두 게시물로 저장된다.

 

 

그래서 '(싱글쿼터) 이후에 SQLite에서 사용하는 sql문을 작성했다. 앞서 풀었던 Stored (blog)와 SQL문이 같을거라 생각했다. 그래서 ',(select sqlite_version()))-- 를 넣어서 SQLite의 버전을 확인했다. 확인 결과 아래와 같이 버전이 출력되었다.

 

 

블로그 이미지

꼴통보안인

,

해당 취약점은 블로그 같은 곳에 글을 저장할때 발생하는 sql injection 취약점에 관한 내용이다.

 

 

'(싱글쿼터)를 입력하여 저장하면 에러가 나온다.

 

 

에러가 지금까지 보던 것들과는 다르다. db에 insert문을 이용하여 게시물을 저장하는 방식인데 이미 bee라는 사용자는 지정이 되어있다. date도 글 올리면 올라가는 것으로 보아서는 insert문에 함수로 자동 지정 되어있는것 같다. 그렇다면 insert into (x,x,x) values (date, x, owner)같은 방식으로 구문이 구성되어 있는것 같다. 에러에 나온 'bee')를 지워야 insert문을 알맞게 넣으면서 원하는 정보를 얻을수 있을 것 같다. 그래서 union이 아닌 select문을 이용했다. 우리가 넣는 값이 entry로 들어가기 때문에 ,(콤마)를 이용해서 entry값을 넣고 그 뒤에 owner 컬럼에 select문과 함수를 이용해서 버전을 확인했다. (구문 : ',(select @@version))#)

 

해당 구문을 넣은 결과 owner에 버전이 입력된걸 확인했다.

 

 

 

블로그 이미지

꼴통보안인

,

해당 취약점은 실제 CVE-2014-3704에 등록된 취약점이다. Drupal은 블로그 서비스의 한 종류이다. Drupal에서 확인된 SQL Injection 취약점으로 bWAPP를 통해 가상 페이지를 만들었다.

 

 

위와 같이 Drupal을 누르면 아래와 같이 Drupal 블로그로 접속된다.

 

 

username과 password를 통해 로그인하는 로그인 페이지가 나온다. 하지만 직접 가입하지 않는 이상 로그인이 불가능하다. 그래서 아까 bWAPP 페이지에서 HINT를 준 CVE-2014-3704를 눌러서 CVE에 등록된 해당 취약점 정보를 확인한다.

 

 

여기서 exploit-db:34993에 해당하는 링크로 들어간다. 링크를 들어가게 되면 php로 작성된 exploit 코드가 나온다.

 

 

이것을 칼리 리눅스로 다운로드 받는다. 코드를 받은 후 url을 본인의 bWAPP의 drupal 서비스 url로 바꾼다.

 

 

이제 php파일로 해당 파일을 실행한다. 실행하면 username과 비밀번호가 나온다. username과 비밀번호 모두 admin이다.

 

 

이제 맞는지 로그인을 시도한다. 로그인이 되는걸 확인할 수 있다.

 

 

 

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SQL Injection Stored(SQLite)  (0) 2017.11.19
[LOW] SQL Injection -Stored (Blog)  (0) 2017.11.14
[LOW] SQL Injection (SQLite)  (0) 2017.11.14
[LOW] SQL Injection (Login Form/Hero)  (0) 2017.10.29
[LOW] SQL Injection (AJAX/JSON/jQuery)  (0) 2017.10.29
블로그 이미지

꼴통보안인

,

해당 취약점으로 들어가면 아래와 같이 영화 검색하는 게시판이 나온다. 그냥 search 버튼을 누르면 모든 영화 목록이 나온다.

 

 

그전에 했던 get/search와 post/search와 비슷한 구조인듯 하다. 하지만 사용하는 db가 다르다. get/search와 post/search는 mysql을 사용하지만 해당 문제는 sqlite를 사용한다. sqlite는 요즘 안드로이드에서 많이 사용하는 db이다. 그래서 일반 db에서 사용하는 version, databases등의 함수가 아닌 다른 함수명을 사용한다.

(참조 : https://www.sqlite.org/lang_corefunc.html#sqlite_version)

여기서 많은 목록중에 db버전을 확인하는 함수를 union 쿼리문을 이용해 대입했다.

(' union select all 1,sqlite_version(),3,4,5,6--)

 

 

위와 같이 3.4.2라는 sqlite 버전이 확인되었다.

블로그 이미지

꼴통보안인

,

해당 취약점으로 들어가면 아래와 같이 superhero로 로그인하라는 문장과 함께 로그인 폼이 나온다.

 

 

우선 superhero로 로그인 시도를 하기 위해 비밀번호를 1234로 하고 로그인을 시도했다. 시도 결과 아래와 같이 Invalid credentials!라는 문장이 나온다.

 

 

그래서 아이디 값에 '(싱글쿼터)를 넣어서 sql 에러 메시지를 유도했다. 유도 결과 아래와 같이 나왔다.

 

 

id값과 함께 비밀번호 값도 같이 받는 구문으로 되어있는것 같다. 그러면 superhero를 아이디로 입력하고 비밀번호에 참이 되는 블라인드 sql 문(' or 1=1#)을 넣었다. 결과 아래와 같이 Neo를 환영한다는 메시지와 비밀이라고 하는 문장이 나온다.

 

 

 

 

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] Drupal SQL Injection (Drupageddon)  (0) 2017.11.14
[LOW] SQL Injection (SQLite)  (0) 2017.11.14
[LOW] SQL Injection (AJAX/JSON/jQuery)  (0) 2017.10.29
[LOW] SQL Injection (POST/Select)  (0) 2017.10.29
[LOW] SQL Injection (POST/Search)  (0) 2017.10.29
블로그 이미지

꼴통보안인

,

해당 취약점을 들어가보면 검색창에 한글자만 써도 검색한 글자가 존재하는 검색 내용이 모두 나온다.

 

 

그래서 블라인드 sql 구문을 통해 같은 검색어가 나오나 확인했다. 검색 결과 아래와 같이 모든 영화 목록이 나오는 것을 확인 했다.

 

 

이제 union sql 구문을 통해 컬럼 정보를 확인한다. 아래와 같이 컬럼 갯수를 확인했다.

 

 

이제 위에 구문을 바탕으로 버전 정보를 확인한다.

 

 

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SQL Injection (SQLite)  (0) 2017.11.14
[LOW] SQL Injection (Login Form/Hero)  (0) 2017.10.29
[LOW] SQL Injection (POST/Select)  (0) 2017.10.29
[LOW] SQL Injection (POST/Search)  (0) 2017.10.29
[LOW] SQL Injection (GET/Select)  (0) 2017.10.29
블로그 이미지

꼴통보안인

,

해당 취약점으로 들어가면 GET/Select와 같은 화면이 나온다. 하지만 POST/Search와 마찬가지로 POST 요청이기 때문에 url에 파라미터 값이 존재하지 않는다.

 

 

버프스위트로 패킷을 잡아서 패킷 요청이 어떤식으로 이루어지는지 확인한다.

 

 

요청 바디 부분에 movie를 이용하여 요청한다. 그렇다면 movie에 블라인드 sql 구문을 넣어 확인한다.

 

 

 

위와 같이 넣으면 아래와 같이 같은 화면이 나온다.

 

 

이제 아래와 같이 union sql 구문을 넣어서 컬럼 정보를 확인한다.

 

 

요청 결과 아래와 같이 나온다. 이제 버전 정보를 확인해본다.

 

 

아래와 같이 union sql 구문을 삽입했다.

 

 

요청 결과 아래와 같이 버전 정보가 나오는 것을 확인했다.

 

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SQL Injection (Login Form/Hero)  (0) 2017.10.29
[LOW] SQL Injection (AJAX/JSON/jQuery)  (0) 2017.10.29
[LOW] SQL Injection (POST/Search)  (0) 2017.10.29
[LOW] SQL Injection (GET/Select)  (0) 2017.10.29
[LOW] SQL Injection (GET/Search)  (0) 2017.09.29
블로그 이미지

꼴통보안인

,

해당 취약점을 들어가면 GET/Search와 마찬가지로 영화 목록을 볼 수 있다. 하지만 POST로 받아오기 때문에 url에 파라미터 값이 존재하지 않는다.

 

 

그렇기 때문에 프록시 도구인 버프스위트를 이용하여 패킷을 가로챈다. 패킷을 가로채면 아래와 같이 요청 메시지 바디 부분에 title과 action 파라미터를 볼 수 있다.

 

 

이제 title에 블라인드 sql 구문을 삽입하여 어떻게 나오는지 확인한다.

 

 

아래와 같이 원래 나오던 영화 목록들이 나온다. 이제 다시 패킷을 가로채서 union 구문을 통해 컬럼 정보를 확인한다.

 

 

아래와 같이 union 구문을 요청한다.

 

 

요청결과 아래와 같이 리스트 목록 외에 직접 작성한 union 구문이 들어간 것을 알 수 있다.

 

 

이제 기존에 사용했던 union 구문을 이용하여 버전 정보를 확인한다.

 

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SQL Injection (AJAX/JSON/jQuery)  (0) 2017.10.29
[LOW] SQL Injection (POST/Select)  (0) 2017.10.29
[LOW] SQL Injection (GET/Select)  (0) 2017.10.29
[LOW] SQL Injection (GET/Search)  (0) 2017.09.29
[MEDIUM] HTML Injection - Reflected (GET)  (0) 2017.09.29
블로그 이미지

꼴통보안인

,

해당 취약점을 들어가면 아래와 같이 영화 정보를 선택해서 보여주는 메뉴가 나온다.

 

 

GET/SEARCH 문제와 다르게 텍스트 박스가 없다. 하지만 url을 통해 요청이 가능하다. url에 sql 쿼리문을 넣어본다.

 

 

위와 같이 블라인드 sql 인젝션 구문인 or 1=1#을 대입한 결과 원래 선택헀던 영화 정보가 그대로 나온다. 이제 union sql 인젝션을 이용하여 컬럼 갯수를 파악한다.

 

 

union select all 1,2,3,4,5,6,7# 구문을 대입해본 결과 컬럼갯수는 7개고, title이 두번쨰, release가 3번째, character가 5번째, genre가 4번째인 것을 확인했다. 이제 해당 구문을 토대로 웹 서버 버전 정보를 확인해본다.

 

 

2번째 컬럼인 title에 버전정보가 뜨는것을 확인했다.

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SQL Injection (POST/Select)  (0) 2017.10.29
[LOW] SQL Injection (POST/Search)  (0) 2017.10.29
[LOW] SQL Injection (GET/Search)  (0) 2017.09.29
[MEDIUM] HTML Injection - Reflected (GET)  (0) 2017.09.29
[LOW] HTML Injection - Reflected (GET)  (0) 2017.09.29
블로그 이미지

꼴통보안인

,