본문 바로가기

Wargame(hacking)/webhacking.kr

Webhacking.kr : old-48

Write-Up

 

그림 1

 

해당 페이지 접근 시, 위 그림 1과 같이 파일 업로드 기능과 memo 기능 그리고, 이전에 작성된 글과 그림이 출력되어 진다. 우선, <script> 태그 및 기타 태그 삽입을 시도했었다. 

 

그 결과는 아래와 같다. 

 

&lt;b&gt;1234&lt;/b&gt;

 

HTML Entity Encoding 이 적용되어,  XSS 공격이 시행될 수 없다. 

 

그럼에도 불구하고, XSS 공격을 계속 시도하였다... SVG image를 이용한 XSS를 시도했는데, 그 결과는 아래와 같았다. 

 

그림 2

 

페이지에 출력되는 그림이 ./7.jpg 이므로, file upload와 path_traversal과 svg_xss를 이용해 스크립팅을 일으키고자 했다. 실패했고, HTML Entity Encoding 또한 적용되어서 실패할 수 밖에(?) 없었다. 

 

결국 다른 Write-Up을 보면서 힌트를 받았다. 

 

그림 3

 

위 그림 3과 같이 happy;ls 인 파일 명을 업로드 한다. 해당 서버에는 파일 delete 시, command injection 취약점이 존재하기에 다음과 같은 로직으로 파일이 삭제 될 가능성이 있다. 

 

rm /upload/업로드된_파일명  그럼 happy;ls 인 파일명을 업로드 했으므로, rm /upload/happy;ls 와 같이 명령이 수행될 수 있다. 그럼 ; 앞의 rm upload/happy 명령이 먼저 수행되고, 수행 결과와 관계 없이 ls가 수행되기에 아래 그림 4와 같은 결과를 볼 수 있다. 

 

그림 4

 

 

 

추가적으로, php 에서 Command Injection에 취약한 함수는 아래와 같다. 

 

exec(), system(), passthru(), popen(), rquire(), include(), eval(), preg_replace(), shell_exec(), proc_open(), eval()

 

 

Command Injection 에 이용되는 메타 문자 (  &&, || , ; , |[파이프]  ) 중 ; 는 단순히 명령어 구분을 위해 사용하며, 앞 명령어의 에러 유무와 관계 없이 뒷 명령어를 실행한다. 

 

 

참고

 

https://velog.io/@inmo/Command-Injection