취약점 점검 자동화 도구 SQL Map, JWT 크랙
SQL Map
SQL Injectiom 취약점을 찾고 테스트하는 데 사용되는 자동화 오픈소스 툴로 MySQL, Oracle, PostgreSQL 등 다양한 DB를 지원한다. 취약점 확인뿐만 아니라 파일 시스템, 쉘 접근 같은 공격도 자동화가 가능
SQL Map 옵션
- 딜레이 Delay: sql 맵이 쿼리를 실행하는 간격을 설정하고 서비스의 부하를 줄이는 역할을 하므로 방화벽이나 CDN 서비스 차단을 방지하는데 사용
- 리스크 Risk: 공격의 위험성을 관리하고 SQL 맵의 동작을 제한하여 서비스에 치명적 영향을 방지하여 운영 서비스 안전을 위한 기능이다, 실제 운영 중인 서비스를 분석할 때 반드시 고려해야 함
- Tor: 탐지 우회를 위해 사용
- R 옵션: 캡쳐된 HTTP 요청을 분석하는 데 사용됨, 특히 JSON 형식을 다룰 때 이 옵션으로 HTTP 덤프 파일을 로드하고 수동으로 조정도 가능
- U 옵션: 테스트 대상이 되는 도메인 정보 입력
GET 방식의 요청을 테스트하기 위해서는 U옵션에 파라미터 포함 전체 URL을 입력해야 한다.
SQL Injection 발생 시 서버 내부의 파일 읽는 방법
SQL injection이 가능한 상태라면 File Read 옵션을 사용하면 된다
sqlmap -u <http://10.0.2.15/sql/Less-9/?id=2 --file-read=c:/xampp/htdocs/index.php
이렇게 하면 sql 맵이 서버 내부에서 해당 파일을 찾아서 읽어오고 서버 내부 정보 파악, 취약점 분석이 가능하다
Remote code execution, RCE 방법도 가능한데 OS Shell 옵션을 사용하면 된다. File Read와 마찬가지로 SQLI 취약점이 존재할 때만 사용가능
sqlmap -u <http://10.0.2.15/sql/Less-9/?id=2 --os-shell
OS shell 옵션으로 시스템의 쉘에 접근하면 백엔드 프레임워크가 무엇인지, 어떤 제어를 할지 선택할 수 있다.
파일 업로드 권한이 있다면 쉘 파일이 업로드되고 인터렉티브한 접근이 가능하며, 이외에도 SQL Map에는 DB 테이블을 자동으로 가져오거나 데이터를 가져오는 기능도 있음
JWT Crack
JWT: 사용자 인증에 필요한 정보를 암호환 JSON 형식 토큰으로, 정보가 변경이나 조작되지 않았음을 보장한다. JSON 데이터는 Base 64 인코딩을 거친 후 데이터에 비밀키/공개키/개인키로 서명을 한다. 요즘 버그헌팅 추세를 보면 하드코딩된 키를 찾거나 브루트 포스로 비밀키를 찾아서 RCE 공격까지 하는 경우가 있다.
JWT 크랙 도구로는 JWT Cracker, JWT Tools 등이 있다. 원하는 도구를 다운로드하고 크랙 하고자 하는 JWT 토큰을 해당 코드랑 실행하면 됨.