HackTheBox 에서 제공하는 웹해킹 문제
이번 문제는 PHP Object Injection 과 관련된 문제이다.
PHP Object Injection 은 PHP Serialize 취약점이라고도 불리는데
PHP 에서 unserialize() 함수를 사용할 때,
사용자 입력이 적절하게 필터링 되지 않을 경우 임의이 PHP Object 가 삽입되어
Command Injection, SQL Injection, Path Traversal 등과 같은 공격이 가능하게 되는 취약점이다.
문제 페이지에 들어가면 이런 화면이 나온다.
독개구리를 판매하는(??) 사이트인데
밑에 적혀있는 후기같은걸 보면 아내랑 같이 먹었다는 후기도 있다(???)
아무튼 이게 중요한게 아니고
웹 페이지 자체에는 아무런 기능이 없다.
조금 더 자세히 보기 위해
F12를 눌러 개발자도구의 네트워크 탭을 이용했다.
그 중 요청헤더에 있는 Cookie 값을 봤는데 Base64 인코딩된 긴 문자열을 쓰고 있는게 보였다.
CyberChef(https://gchq.github.io/CyberChef) 에서 Base64 디코딩을 해보니
위와 같은 내용이 나왔다.
file 변수에 /www/index.html 을 담아서 서버에 전달하기 때문에
아까 독개구리 메인 페이지가 사용자에게 보였던것 같다.
문제와 함께 제공되는 소스코드의 index.php 파일을 보면
해당 내용을 확인할 수 있다.
PHPSESSID 라는 쿠기값에 file : /www/index.html 이라는 값을 넣어서
Base64 인코딩해 서버로 전달하고
서버에서는 Base64 디코딩 하고 unserialize() 함수를 이용해 읽어들이는 모습을 볼 수 있다.
쿠키값을 조작하면 Object Injection이 가능할 것으로 보인다.
한가지 테스트를 해봤다.
file 의 값을 /etc/passwd 로 바꾸고,
그 앞에 있는 숫자는 /etc/passwd 의 글자수인 11로 변경해준 뒤
그 값을 Base64 로 인코딩 하였다.
크롬 확장프로그램인 Modheader 를 이용해
Cookie 를 해당 값으로 바꿔주었다.
그리고 새로고침을 해보니 예상대로 /etc/passwd 을 불러올 수가 있었다.
이제 flag 파일을 찾아서 읽어주기만 하면 된다.
flag 파일을 찾는데는 웹서버의 access.log 를 활용하기로 했다.
문제에서 주어진 Dockerfile을 확인해보면
해당 서버는 nginx 를 사용하고 있는데,
nginx 는 기본적으로 access.log 를
/var/log/nginx/access.log 경로에 저장하고 있다.
다시한번 경로와 글자수를 맞춰주고
Base64 인코딩을 해준다.
Modheader 로 요청 헤더를 바꿔서 보내면
access.log 를 잘 불러오는것을 확인할 수 있다.
access.log 를 보면
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
과 같이 User-agent 헤더가 같이 로그에 기록되는데,
이 부분을 활용해 본다.
Modheader 에서 + ADD 버튼을 눌러 헤더를 하나 더 추가해준 뒤
User-Agent 헤더에 <? php phpinfo() ?> 라고 적어준다.
그런다음 새로고침을 누르면
위 처럼 phpinfo() 가 실행되어 출력되는 모습을 볼 수 있다.
명령어 삽입이 가능해진 것이다.
이번엔 User-Agent 를 <?php system('ls / -al'); ?> 라고 입력해본다.
그러면 ls / -al 명령어 수행결과가 아래쪽에 출력되는데,
flag_XXXX 파일이 있는게 보인다.
해당 파일 이름을 넣어서 User-Agent 를 <?php system('cat /flag_XXXX'); ?> 라고 바꿔주면
플래그를 찾을 수 있다.
'워게임 > HackTheBox' 카테고리의 다른 글
[HackTheBox] petpet rcbee - 웹해킹 / Command Injection / Pillow (56) | 2022.12.12 |
---|---|
[HackTheBox] Illumination - 포렌식 / git (54) | 2022.12.08 |
[HackTheBox] LoveTok - 웹해킹 / Command Injection (57) | 2022.11.15 |
[HackTheBox] Gunship - 웹해킹 / Prototype Pollution / RCE (55) | 2022.11.07 |
[HackTheBox] baby CachedView - 웹해킹 / Flask (59) | 2022.10.31 |