[2024.07.26]
[Command Execution]
> Level: Low
> ||, |, &&, &, ;(세미콜론)
> ping -c 3 || ls -l
> ping -c 3 ; ls -l
> ;
> Level: Medium
> |, ||, &
> ping | ls -l
> ping || ls -l
> ping -c 3 & ls -l
> ping -c 3 | ls -l
> ping -c 3 || ls -l
> ping -c 3 || cat /etc/passwd
> 1 || ls -l
> 1 | ls -l
> 1 || cat /etc/passwd
> | ls -l
> || ls -l
> & ls -l
> & cat /etc/passwd
이번 시간에는 Command Execution의 연장선으로 수업을 시작했다
어제와 동일하게 값을 넣어 주며 실습을 진행했다
세미콜론으로도 가능한 것까지 확인했다
세미콜론을 통해 경로 확인도 가능하다
기존에 사용했던 명령어들은 물론이고 세미콜론을 이용하여 디렉터리도 생성이 가능하다
dvwa 페이지에서 디렉터리를 확인 후
metasploitable2의 취약점에서 확인 시 디렉터리가 생성되어 있다
반대로 삭제도 가능하다
dvwa 페이지에서 삭제를 진행했다면 해당 취약점에서도 삭제가 진행된 상태가 된다
위에서는 level을 low로 진행했으며,
이번에는 조금 더 보안이 강화된 medium으로 진행해 본다
진행되지 않는 것은 화면처럼 빈 화면이 나타나고
가능한 명령어와 연산자의 경우 해당 화면과 같이 실행되는 화면이 나타난다
ping -c 3 | pwd로 경로도 확인할 수 있게 되는데
이때 마우스 우클릭으로 veiw source를 누른다
이 상태에서 명령 코드를 확인할 수 있는데
low에서는 가능했던 && and 연산자와 ;(세미콜론)의 경우 medium에서는 차단되어 있다
이미 코드에서 막아 뒀기 때문에 사용자가 입력한 ip 값에서 이 두 문자는 제거된다고 볼 수 있다
or 연산자도 사용이 가능하다
cat 명령어를 이용하여 권한이 있는 파일도 확인할 수 있다
1 || ls -l이 가능한 이유는 1이 항상 참이기 때문에,
명령이 실행된 후에 다음 명령인 pwd가 실행된다
이 경우도 앞에 아무런 명령어도 없으므로 쉘은 이를
잘못된 명령어로 간주하지 않고 pwd 명령어를 실행하게 된다
빈 명령어는 일반적으로 실패로 간주되나,
빈 명령어의 실패 후에 || 연산자에 의해 pwd 명령어가 실행된다
해당 화면도 가능한 이유는 왼쪽이 아무것도 없기 때문에
무조건 참이라는 조건 하에 실행이 가능하다
마지막으로 high 레벨로도 실습을 진행하려고 했지만
high 레벨의 경우 보안이 강력하기 때문에 대부분의 보안 방어가 비활성화되어 있다
high보다 높은 레벨인 Impossible도 존재하기 때문에 high에서도 분명히
취약점이 있겠지만 현재로써는 발견할 수 없어 command execution의 수업은 여기에서 마무리되었다
*현재 사용한 dvwa에서는 high 레벨까지만 사용 가능하며,
업데이트된 홈페이지에서는 Impossible도 사용 가능하다
[CSRF]
> 공격 시 서버를 공격
클릭을 함으로써 요청 변조를 하는 실습 진행
dvwa의 보안 레벨을 다시 low로 변경시켜 준다
그 다음 CSRF 화면으로 들어가서 비밀번호를 변경하게 되면 쉽게 변경이 된다
실제로 비밀번호를 123456으로 설정하고
다시 재로그인 시도 시 123456으로 로그인이 가능해진다
이번에도 페이지 소스를 확인한다
이 페이지의 비밀번호 변경 코드는 화면과 같이 설계되어 있다
이번 실습은 이 코드를 임의로 변경하는 것이다
위의 코드를 그대로 복사한 후 Kali Linux에서 /var/www/html의 csrf.html 파일을 열어
그 파일에 해당 코드를 붙여넣기 하고 화면과 같이 수정한다
원래라면 레벨 low의 상태에서 변경되어야 하나 쿠키 및 여러 가지 문제로 나는 high로 진행했다
high로 진행하기 위해서는 low 코드에서 한 줄 더 추가된 모습이다
현재 비밀번호는 password이고, 변경할 password는 123456이라는 코드 내용이다
파일 수정 후 apache2를 재시작한다
Kali Linux의 IP 주소와 csrf.html의 파일 이름을 같이 넣어 주면 이런 화면이 나타난다
My Blog 부분을 누르고 로그인을 123456으로 진행한 후
로그인 후에 CSRF 페이지로 들어오게 되면 비밀번호가 변경되었다는 출력 문자가 나타난다
다시 원래대로 돌려 놓으려면 현재 비밀번호가 123456
변경할 비밀번호를 password로 수정시켜 주면 된다
수정시킨 후 다시 접속하여 password 비밀번호로 입력 후 로그인 시도
정상적으로 변경이 되었다면 CSRF 페이지에서 변경되었다는 문자가 나타난다
*이 모든 실습을 진행하기 위해서는 실습 시작 전에 Kali Linux로 zaproxy나 buitsite를 실행시켜야 한다
강의 소감
이번 시간에는 CSRF 실습 도중 low 레벨에서 진행이 되지 않아 막히는 사건이 발생했다
처음에는 buitsite를 실행시켰는데 dvwa 페이지 접속 시에
오류가 발생하여 zaproxy로 변경시켜 진행했을 때 페이지 접속까지는 가능하게 됐다
그 후에는 low 레벨에서 변경되지 않는 문제로 쿠키 삭제와
metasploitable2, Kali Linux도 리부팅을 시도하였지만 끝내 low 레벨은 성공하지 못했다
계속 high 레벨에 머물러 있었기 때문에 오히려 처음부터 high 레벨을 진행했다
강사님께서도 코드 자체의 문제는 아니지만 쿠키나 여러 가지 문제가 있을 가능성도 말씀해 주셨다
그 말씀 덕분인지 안심이 되었고 high 레벨 하나는 성공시켜서 다행이라고 생각했다
남는 시간에 틈틈이 low 레벨도 성공할 수 있도록 많은 연습이 필요할 것 같은 강의 시간이었다