일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Leviathan
- file upload
- php
- tryhackme
- OS Command Injection
- Cookie
- THM
- 파일 업로드 취약점
- php login page
- Reconnaissance
- ssrf
- active reconnaissance
- active recon
- Authentication
- Recon
- php 파일 업로드하기
- php 로그인 페이지 만들기
- sql injection
- War Game
- privilege escalation
- Server Side Request Forgery
- Cryptography
- access control
- php To Do List
- SQLi
- BANDiT
- over the wire
- FTZ
- overthewire
- php file upload
- Today
- Total
R's Hacking Daily Log
/etc/shadow & /etc/passwd 본문
언젠가부터 인지는 모르겠지만 왠지 모르게 알게 된 두 파일 /etc/shadow와 /etc/passwd.
kali linux를 뒤적거리다 보면(?) 한 번쯤은 마주하게 되는 파일인 듯하다.
하지만 잘 모르고 보면 비슷하게 생긴 게...
뭐가 다른 지 사실 잘 모르다 보니 오늘은 두 파일에 대한 내용을 공부해보고자 한다.
1. /etc/passwd
/etc/passwd는 plain text file로, 시스템에 접근가능한 user에 대한 정보를 유지하는 데에 사용된다.
그 말은 즉슨, 시스템의 계정 리스트를 포함하고 있다는 의미로
각 계정에 대해서는 user id, group id, username, login shell 등의 정보를 저장한다.
또한, 정보를 표기할 때 콜론으로 구분하여 나열하기 때문에 colon-separated file이라고도 한다.
root:x:0:0:root:/root:/usr/bin/zsh
aemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
...
kali:x:1000:1000:,,,:/home/kali:/usr/bin/zsh
위의 예시를 보자면, 계정에 대한 정보가 " : "으로 이어지면서 나열되는 것을 볼 수 있다.
맨 앞의 field에는 user의 계정명이 제시되고,
그 뒤에 따라나오는 "x"는 해당 계정의 암호화된 password가 /etc/shadow 파일에 저장되어 있다는 것을 의미한다.
3, 4번째 field는 UID, GID 값을 나타낸다.
보통 저 값이 1000 이상인 계정이 시스템을 사용하는 사람이 만든 계정을 의미하고
root의 경우처럼 0, 1,2,... 33의 경우에는 시스템이 사용하는 계정 정보이다.
5번 째 field에는 각 계정의 사용자명이 기재되고,
6번 째 field에는 사용자의 home directory가 기재된다.
마지막 field는 login 시 사용되는 shell을 적어둔 것.
login이 불필요한 계정의 경우에는 /usr/bin/nologin 과 같은 내용이 적혀져 있다.
2. /etc/shadow
/etc/passwd는 계정의 정보가 저장된다면 /etc/shadow에는 hash된 password가 저장되어있다.
그렇기 때문에 root 권한의 사용자만 접근할 수 있도록 설정된다.
...
news:*:19331:0:99999:7:::
uucp:*:19331:0:99999:7:::
proxy:*:19331:0:99999:7:::
www-data:*:19331:0:99999:7:::
backup:*:19331:0:99999:7:::
list:*:19331:0:99999:7:::
irc:*:19331:0:99999:7:::
_apt:*:19331:0:99999:7:::
nobody:*:19331:0:99999:7:::
systemd-network:!*:19331::::::
systemd-timesync:!*:19331::::::
messagebus:!:19331::::::
tss:!:19331::::::
strongswan:!:19331::::::
tcpdump:!:19331::::::
usbmux:!:19331::::::
sshd:!:19331::::::
dnsmasq:!:19331::::::
avahi:!:19331::::::
speech-dispatcher:!:19331::::::
pulse:!:19331::::::
...
kali:$y$j9T$lR7REZ4XgU56yXNl9PFiN/$oI3B/OeQGXOoTb7opQ.azBMOgG2IM0neRj4MN3HCqQ.:19331:0:99999:7:::
위에서 볼 수 있듯, /etc/shadow file도 콜론으로 계정에 대한 정보가 이어진다.
첫 번째 field에는 /etc/passwd와 동일하게 계정명이 기재된다.
그 다음 field에는 해쉬된 비밀번호가 들어있는 걸 볼 수 있다.
그 밖의 field는 다음과 같다.
passwd 마지막 변경일 / 최소 사용기간 / 최대 사용기간 / 경고기간 / 비활성화 / 만료일
[최소 사용 기간]
: passwd 변경 후 최소한 그 passwd를 사용해야하는 기간
: 이 기간동안에는 passwd를 바꿀 수 없다는 뜻이다.
[최대 사용 기간]
: passwd가 유효한 최대 기간
: 지정된 passwd를 사용할 수 있는 기간을 의미한다.
[경고]
: passwd가 만료되기 전 경고해주는 일수
[비활성화]
: passwd가 만료되고 난 후, 계정이 잠기기 전 까지의 기간
[만료일]
: 계정의 만료일
보안상 주기적으로 password를 재설정하기를 권장하는 이유와 같이
계속해서 동일한 password를 사용하는 것을 어느 정도 지양하기 위해 password의 유효 기간이 설정되나보다.
'Daily-Note' 카테고리의 다른 글
CLI & GUI (0) | 2023.03.08 |
---|---|
prefix & postfix (0) | 2023.03.07 |
file signature (0) | 2023.03.01 |
/tmp (0) | 2023.02.27 |
/dev/null (0) | 2023.02.22 |