본문 바로가기

WEB

demo.testfire.net 웹취약점 진단

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>문을 삽입해보았다.



다음으로 로그인한 관리자 계정의 쿠키값을 확인할 결과 아래와 같이 그 값을 구할 수 있었다.




 기타

 


                                                                             


서버의 파일이 담긴 디렉토리 내용을 확인 할 수 가 있다.