SQL injection으로 DB를 추출할 수 있는 것은 기본적으로 다 알고있다.
하지만 이 SQL 인젝션 취약점이 진짜 위험한 이유는 DB가 털리는 것도 물론 굉장히 위험하지만
SQL injection으로 파일 다운로드, 파일 업로드, 명령쉘 실행 등 정말 다양한 추가적인 공격이 가능해서이다.
1편과 2편으로 포스팅을 나눠서할 예정이고
1편은 sqlmap을 사용해서 동작하는 방법이나 어떤 결과가 나오는지, 2편은 도대체 어떻게 추가 공격이 가능한지 공격쿼리를 볼 예정이다.
일단 sqlmap은 기본적으로 알다시피 공격자가 일일히 하나하나 DB명 테이블명 컬럼명 엔티티 등을 추출하는데 너무 오랜 시간이 걸리기 때문에 아래 사진처럼 자동화 도구로써 db를 추출해준다.
하지만 sqlmap에 내장되어있는 옵션을 이용하면 여러가지 기능을 볼 수 있다.
1. --sql-shell
취약한 파라미터가 발견되었을 때 --sql-shell 옵션을 주면 아래 사진처럼 프롬포트가 출력되는것을 확인할 수 있다.
아래 sql-shell> 프롬포트는 정말 sql 쉘이다.
select 문이나 insert 등 다양한 sql 쿼리를 이용하여 DB를 열람하고 수정하고 삭제할 수 있다.
명령어
sqlmap -u "취약한URL" --sql-shell
2. --file-read
파일 리드 옵션은 흔히 파일 다운로드 취약점으로 발견되는 공격과 비슷하다.
sql 쿼리문을 통해 시스템의 특정 파일을 읽어오면 그 파일의 내용을 로컬에 저장할 수 있다.
--file-read 옵션으로 리눅스 파일시스템 내 /etc/passwd 파일을 읽어오라 옵션을 주었을 때
sqlmap은 공격을 시도한 후 아래 하얀글 씨로 성공했다고 다운로드가 되었는지 확인할거냐고 물어본다 Y를 주면
저장된 경로를 알려주고
해당 경로로 가보면 passwd파일이 읽어와진 것을 볼 수 있다.
명령어
sqlmap -u "취약한URL" --file-read "타겟파일"
3. --os-shell
os-shell은 시스템쉘을 가져오는 명령어이다.
원리는 Webshell 업로드와 같은 방법인데 아래 사진과 같이 --os-shell 옵션을 주게되면
웹이 어떤 언어를 지원하는지 묻는다. 해당하는 언어를 선택해주고 추가적으로 sqlmap으로 경로공개에 대해서 더 공격할 것인지 묻는다.
그리고 어떤 디렉터리에 파일 쓰기를 할 것인지 묻는데 보통은 권한이 허용되어있는 tmp 디렉터리나 다른 디렉터리를 찾아서 추가적인 공격을 하지만 나는 테스트를 위하여 아예 다 권한을 열어주었다.
어쨌든 dashboard 디렉터리를 지정해주면 os-shell 프롬포트가 생성되고 명령어가 동작하는 것을 볼 수 있다.
사진을 보면 파일 tmpuqxlw.php 와 tmpbqnmc.php가 업로드된 것을 볼 수 있다.
이 업로드한 쉘 파일 php를 통해 명령어를 실행하는 방법이다.
쉘에 직접 URL 접근을 해보면 또 다른 더 편한 웹쉘을 업로드할 수 있도록 업로더 기능을 이용할 수 있다.
다른 쉘 업로드
이 후에 os-shell을 종료하게 되면
tmp php파일도 삭제되게된다.
명령어
sqlmap -u "취약한URL" --os-shell
4. --file-write
file-write 옵션은 파일 업로드 취약점과 동일한 방법으로 쉘 파일을 디렉터리 내 쓸 수 있다.
file-write 단독으로 사용하지않고 --file-dest 옵션과 같이 사용한다.
file-write = 쓰기를 할 파일
file-dest = 목적지 경로 (쓰기를 할 경로)
아래 그림과 같이 파일과 경로를 지정해주면
하얀 글 씨로 파일 쓰기가 성공했는지 확인하겠냐고 묻는다 Y를 해주면 성공했다는 INFO 로그를 확인할 수있다.
해당 php 파일로 접근해서 웹쉘 처럼 명령어를 실행할 수 있다.
명령어
sqlmap -u "취약한URL" --file-write "쓰기 할 파일(경로포함)" --file-dest "목적지 경로)
2022.07.26 - [웹] - [웹] SQL Injection을 이용한 다양한 공격 기법 (Feat. sqlmap) - 2
'웹' 카테고리의 다른 글
[Web] 크로스 사이트 스크립트(XSS) 정리 - 1 (1) | 2022.08.24 |
---|---|
[웹] SQL Injection을 이용한 다양한 공격 기법 (Feat. sqlmap) - 2 (0) | 2022.07.26 |
[웹] JWT(JSON Web Token)에 대한 다양한 공격 기법 - 3 (0) | 2022.07.14 |
[웹] JWT(JSON Web Token)에 대한 다양한 공격 기법 - 2 (Feat. Hashcat) (0) | 2022.07.14 |