demo.testfire.net이라는 사이트는 ibm에서 제공하는 사이트로 왠만한 취약점들을 점검할 수 있도록 설계한 사이트이다.
1. sql injection |
1)로그인 sql injection |
제일 간단히 사용되고 있는 로그인 sql injection방식이다. 아이디와 비밀번호 값을 ' or 1=1--로 채워넣고 로그인 인증을 하면 사진 처럼 로그인 과정을 무력화 시킬 수 있다. 해당공격의 원리는 이렇다. 보통 웹사이트의 동작원리를 살펴볼 때 ID와 password를 입력받아서 db에 저장된 내용과 비교해 일치하면 해당 사용자의 정보를 가져오는 식이다. select * from table_name where id='입력한 id' and password='입력한 비밀번호';와 같이 구성하는데 ' or 1=1-- 를 입력한 id부분으로 치환하게 되면 싱글쿼터를 통해 앞에 값과는 상관없이 or로 연결해서 뒤에값(1=1)이 참이 되고 전체적으로 쿼리는 참값을 조사하게 된다. 그리고 --를 통해 뒤에 오는 password를 묻는 거나 기타 쿼리내용을 무력화 시킨다. 무튼 전체적으로 조건이 참이되므로 쿼리를 가져오는 것이 가능해지는 것이다. |
2. 최근거래 내역 페이지 |
admin계정에서 고객들의 정보를 볼수 있는 페이지이다. 이부분에서 날짜를 적는 부분이 있는데 현재 본인은 관리자 계정밖에 모르는 상황이다. 날짜입력폼에 'union select 1 limit 1,1%23부분을 넣어봤다. 에러쿼리라는 페이지가 발생한 것을 확인 할 수 있었고, 사용자의 id가 디폴트로 정의하며 로그인한 id에 대한 정보들 만을 볼수 있 다. 이부분에서 사용자 id도 빼오고 %23이후부분은 주석처리 되니 모든 사용자의 거래현황을 알 수 있을 것 같다. |
3. XSS |
검색하는 부분에서 검색 결과가 없다면 그대로 입력값을 출력하는 것을 확인하고, php를 배울 당시 echo를 통해 입력받은 경험들이 있어 스크립트 언어를 출력해주는 결과를 낼것이라 생각했다. 일단 <script> alert(hi)</script>문을 삽입해보았다. 다음으로 로그인한 관리자 계정의 쿠키값을 확인할 결과 아래와 같이 그 값을 구할 수 있었다. |
기타 |
서버의 파일이 담긴 디렉토리 내용을 확인 할 수 가 있다. |