일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Lord of SQLinjection
- docker compose
- ubuntu
- Union SQL Injection
- goblin 3번
- utmp
- UTM
- ModuleNotFoundError: No module named ‘requests’
- sql injection
- No module named ‘requests’
- btmp
- 가상머신 os
- 우분투
- 2002(HY000)
- Lord of SQL Injection
- str_replace함수
- Kail Linux
- blind SQLi
- mocOS
- SQL i
- Python requests 설치
- sqli
- MySQL
- 1819 (HY000):
- Error Based SQL Injection
- LOS 5번
- M2
- los.rubiya.kr
- XAVIS
- SQLi wargame
- Today
- Total
klaus
[KDT-DAY_10] Linux (feat.명령어) 본문
1. Xming(OR Cygwin)으로 X 서버에 연결하기
[+] X와 X-ming의 개념
- 지난 시간 알아본 X, X Window, X.org, X-11 등은 텍스트 화면의 클라이언트가 그래픽 화면의 서버에 접속해서 그래픽 화면을 받는 기법 서버-클라이언트 구조
- Xnest는 X와 유사한데 서버-클라이언트가 서로 바뀔 수 있는 구조이며
- Xming도 X와 유사한데 서버-클라이언트 구조로써 클라이언트에 없는 서버 프로그램을 클라이언트에서 실행되게 하므로 매우 유용하다. 작업 결과는 서버에 저장된다.
apt -y install openssh-server
[+] 사용자 추가
- AllowUser centos adminstart ubuntu root
- x11Forwarding yes로 되어 있는지 확인 (#주석처리되어있는지 확인)
netstat -nltp |grep 22
[+] 원격으로 접속하기(GUI)
- windows에서x를 깔고 (+폰트)
- putty에서 [ssh] -> [x11]에서 X11 forwarding를 Enable에 체크
[+] 접속 하기
- 연결 error- 네트워크 설정을 확인해보고 다시 접속
- 정상적으로 연결 확인
- 사용해보기
xclock &
libireea등 GUI로 실행시킬 수 있다.
[+]centos에서 KDE Plasma Workspaces 모드로 접속
설치 : yum makecache ; yum update ; yum –y groups install “KDE Plasma Workspaces”
- 설치 완료 후 reboot
- [Sing ln] KDE plasma workspace모드로 접속
2. 리눅스 명령어
[+] 주요 디렉터리
디렉토리 | 설명 |
/root | 시스템 관리자인 root의 홈 디렉터리 |
/home | /home 일반 사용자의 홈 디렉터리 (/home/[user]구조 ※ 외부에서 접속하면 /home/[user]로 연결 |
/bin | 시스템을 운영하기 위한 쉘과 명령어 도구들의 들어있는 디렉토리 시스템 관리자나 일반 사용자가 실행할 수 있는 명령어들이 주로 있다 예) cat, chmod, date,env, ls, mkdir, rm, touch, vi, ... 같은 명령어 |
/sbin | 시스템을 운영하기 위한 명령어 관리 도구들이 들어있는 디렉토리 백업/복원 등 시스템 관리 명령어들이 있으며, 보안상 일반 사용자들이 접근X 설정 권고 예) ifconfig, reboot, shutdown, mount, fsck, mkfs, iptables, ...같은 명령어/ |
/lib | 프로그램들이 사용하는 재사용 가능한 프로그램 모듈들이 들어있는 디렉토리 시스템에 있는 프로그램을 실행할 때 필요로 하는 공유 라이브러리가 존재 예) mysql와 PHP 연동할 때 사용되는 sql_connector와 같은 라이브러리 파일 |
/usr | 여러 시스템과 공유되는 프로그램, 구성 설정, 라이브러리와 헬프 파일들이 들어있는 디렉토리 일반 사용자들을 위한 대부분의 프로그램들이 들어있다. /usr/bin (여러 유틸리티와 응용 프로그램들, 명령어), /usr/include(C언어의 헤더파일), /usr/lib(/usb/sbin의 실행파일들을 위한 라이브러리, 여러 프로그램에 종속되어 사용되는 재사용 가능한 시스템 라이브러리들),/usr/local(소스로 패키지를 설치 하는 곳), /usr/sbin(여러 시스템 관리 도구들), /usr/share/man(각종 패키지 설명), /usr/src(대부분 RPM과 소스파일), /usr/X11R6(그래픽 관련 파일), ... 등이다. |
/var | 로그와 웹이나 FTP 등 외부에서 인터넷으로 접속할 수 있는 지점으로 데이터베이스, 메일, 스풀(spool) 디렉터리와 같은 데이터들이 있는 디렉토리 수시로 업데이트되는 파일이나 log 그리고 웹에 관련된 html이나, php, ftp 디렉터리 등을 생성해 두는데 /var/log, /var/www/html, /var/ftp, ...이 있다. |
/etc | 전반적인 시스템 구성 파일들이 들어있는 디렉토리 시스템이나 각종 프로그램들의 환경 설정 파일들이 들어 있어 매우 중요하다. 시스템을 관리할 때 이곳을 백업해 두고 수정해서 사용하는 일이 많은데 주요 파일의 위치는 /etc/mtab, /etc/group, /etc/fstab, /etc/inittab, /etc/passwd, /etc/ services, /etc/shadow, /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/sysconfig/ iptables, /etc/issue, ... 등이 있다. |
/boot | 시스템 부팅에 필요한 커널, 초기 RAM 디스크, 그리고 grub(2)와 같은 부트로더가 존재하는 디렉토리 |
/lost+found | 시스템 크래시(crash)나 전원 문제로 갑자기 시스템이 셧 다운되었을 때 시스템 체커에 의해 복원된 파일들이 들어 있는 디렉토리 부팅 시 파일에 문제가 있어서 fsck 명령어로 복구할 때 사용되는 곳이기도 하다. 각 파티션마다 하나씩 존재한다. 지우지 말고 일반 용도로도 사용하지 않는 것이 좋다. |
/media | CD/DVD나 USB 등 이동식 저장장치가 자동으로 마운트되는 디렉터리 |
/misc | NFS 디렉터리가 마운트되는 디렉터리 |
/src | web,ftp나 cvs와 같은 서비스를 제공하는 시스템 데이터들이 있는 디렉터리 |
/mnt | 일시적 마운트에 사용되는 디렉터리로주로 Windows와 파일이나 디렉터리 호환을 위한 공유 디렉터리 |
/opt | 써드파티 어플리케이션들이 들어있는 디렉터리 주로 사용자가 추가 소프트웨어를 설치할 때 다운받아놓고 압축을 풀고 설치할 때 사용하는 장소 |
/proc | 커널 설정을 가지고 있는 특수 파일로써 메모리에 저장 가상 파일시스템으로 부르는데 실행중인 프로세스와 각 설정 값들을 CPU가 빠르게 참조해서 시스템이 적용시킬 수 있다. 보안에서 매우 중시하는 곳으로 /proc/sys/net/ipv4/ip_forward=1식으로 해서 패킷을 포워드시키는 등 여러설정을 매우 빠르게 변경해서 적용할 수 있다. > cat /proc/cpuinfo 해서 CPU의 정보를 읽거나,> cat /proc/partitions 해서 파티션의 정보를 읽을 수 있다. 여기에는/proc/cupinfo, /proc/meminfo, /proc/devices, /proc/dma,/proc/filesystems, /proc/stat, /proc/interrupts, /proc/ioports, /proc/loadavg, /proc/modules, /proc/uptime,/proc/version, ... 등의 파일과 bus, driver, netm irq, scsi, tty 등의 디렉터리가 있다. |
/dev | |
/root 시스템 관리자인 root의 홈 디렉터리
/home 일반 사용자의 홈 디렉터리 (/home/[user]으로 되어 있다.
- 외부에서 접속하면 /home/[user]로 연결된다.
/bin 운영을 위한 쉘과 명령어 도구들이 있는곳으로 시스템 관리자나 일반사용자가 사용하는 명령어들이 있다.
cat,chmod,date,ls,rm,mkdir 등
/sbin 시스템을 운영하기 위한 명령어 관리 도구들이 들어있는 곳으로 백업/복원 등 시스템 관련 명령어들이 있다.
ifconfig, reboot, shutdown, mount,mkfs 등이 있다.
/lib 프로그램들이 사용하는 재사용 가능한 프로그램 모듈이 들어 있는 곳
http://doc.kldp.org/Translations/html/SysAdminGuide-KLDP/x642.html
-proc 파일시스템의 취약점
tty를 했을 때
pts는 가상 tty라고 나올 경우 CLI
Linux filesystem
무결성 : 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성.
etc/fstab 자동 마운트 정보를 보면
UUID=3607c217-c4d9-414f-9917-a42d11c6085e /boot xfs defaults 0 0
순서 :장치 식별자 / 마운트포인트 / 포맷(파일시스템) /마운트 옵션 (auto,noauto,ro,rw) / 0(백업 수행 여부 (1, 0) 0 (fsck로 검사 후 로딩 : 검사 안함 (0), / 만 검사(1), / 이외도 검사함 (2)
==> /dev/sdb1 /boot /xfs defaults 0 0
blkid
uuidgen ens33해서 나온 UUID값과
nano /etc/sysconfig/network-scripts/ifcfg-ens33해서 확인한 UUID값이 다를 수도 있는데
==> 일반적으로 사용자가 인식시켜주는 것보다 시스템이 인식하는 것을 써주는 것이 좋다 (시스템이 옳다)
Linux가 부팅될 때
명렁어 실습
pwd
ls
> -a (숨긴파일)
> home
> ls -l (ll)
ls -l name.txt (파일속성) / ls -dl desktop/)
상세 설명
파일이나 디렉터리는(S/W) inode로 구별하고 장치(Device)는 UUID로 구분한다.
제대로 배울 내용
절대 경로와 상대경로
- 정확한 위치를 알고 있는 경우 절대경로를 사용하여 접근하고 대강 알고 있을 때에는 상대경로를 찾아가자
[상대경로] 현위치(pwd)에서 부터 시작하는 경우 -
mkdir를 통해 디렉터리 생성 생성
[절대경로] /../../../../ 와 같이 루트부터 시작하는 경우
mkdir를 통해 디렉터리 생성 생성
cd 명령을 통해 이동할 경우 수평으로 접근은 불가
[+] MAN 명령어 == [명령어] --help 사용 == info [명령어]
어느 명령어에 대한 설명(사용법)을 보려면 man [명령어]로 사용하여 확인 할 수 있다.
apropos passwd
passwd라는 단어가 들어가는 페이지 정보를 확인
whatis passwd
정확하게 passwd단어가 있는 페이지 정보를 확인
[TAP키 사용] (자동 완성 기능)
who입력후 텝키를 누르면 사용가능한 명령어가 출력된다. (
ls /m을 입력하면 /root아래 m으로 시작하는 폴더를 찾을 수 있다.
세미콜론(;)와 AND(&&)
여러 명령어들을 연속으로 실행할 때 사용하는데 세미콜론의 경우 명령어 나열로 좌측에 오류가 있으면 그냥 넘어가서 우측을 실행하지만 and는 오류가 있으면 오른쪽으로 넘어가지 못한다.
[명령어;명령어]
- 세미콜론으로 없는 파일을 선택하고 만들 때에는 abc.lst 파일이 생성
[명령어 && 명령어]
- AND의 경우 xyz.lst파일이 생성되지 않는 것을 확인 할 수있다.
즉, AND를 사용하자
※문자 의미 : ||==OR, && ==AND로 사용한다.
In shell script, && stand for AND, || OR
mkdir /root/king 2> /dev/null || echo "IM KING" > /root/king/king.txt && cat /root/king/king.txt 는 에러
mkdir /root/king 2> /dev/null ; echo "IM KING" > /root/king/king.txt && cat /root/king/king.txt 는 사용
2는 표준 에러 (콘솔 에러를 출력하지 말아라)
or(둘중 하나만 출력 and (둘다)
SQL Injection악용할 수 있다.
ls /usr/share/doc |wc -i
시스템 환경변수
$대문자는 대부분 시스템 환경 변수이다.
이런 환경변수의 내용은 echo $HOSTNAME식으로 확인 가능하다.
변경법
PS1="[I love you:]$"
$PS1"[\d@\h \w]"
$PS1"[\u@\h \w>\$"]"
PS1="[\T][\u@\h\w']\$"으로 환경 변수할 경우 아래와 같이 변경됨
nano $HOME/.bashrc
exprot PS1="[\T][\u@\h \w][\d]\$"
sourec
alias 단축
폴더/파일 생성시 .를 입력하면 숨김 파일/디렉터리가 된다
alias는 명령어(옵션 포함)의 별명이다.
생성
삭제
ls /root/i* == i로 시작하는 파일을 찾는다.
*: 여러 문자
?: 하나 문자
history -c 보안상 로그 삭제
cp
파일을 복사할 때
cp -arp [원본][사본] 구문이다.
기본적으로 arp를 사용한다.
p소유자 그룹 등을 그대로 복사한다.
f강제 복사
오버라이트?
cp -r 디렉터리 복사
rm
파일/디렉터리를 삭제할 때 (아무것도 없는 상태)
내용이 있는 디렉터리는 rm r [디렉터리명]을 사용한다
== > 내용이 유무와 상관없이 모두 rm -rf를 사용한다.
파일 완전 삭제할 때에는 아래와 같이
shred를 사용하여 삭제하자(모든데이터값 0으로 변환되는 것)
cat명령을 사용해서 확인해보면
파일의 내용이 깨져있다. (복원 불가)
디렉터리 생성은 mkdir
m을 주면 퍼미션 지정으로 생성 p를 주면 하위 디렉터리까지 생성
rename .txt .bak *.*
모든 파일과 모든 확장자를 찾아서 .txt로 변경해줘라
cat > cat.txt == 이제부터 내용 쓰기
cat < cat.txt == cat.txt 내용 읽기
head /etc/passwd
head -5 /etc/passwd > pass.txt ; cat pass.txt
head -5 /etc/passwd >> pass.txt ; cat pass.txt (+5줄)
cat >> pass.txt 를 하면 내용을 추가할 수 있다.
아래 oh, yes!!!!로 나오는 것을 확인 할 수있다.
에러가 나는 것을 파일로 저장할 때 아래와 같이 작성한다. (log를 분석할 때 사용한다.)
head -5 /etc/shadow => 에러를 그대로 출력한다
head -5 /etc/shadow 2> error.txt ==> 에러를 error.txt파일에 저장한다.
descriptor 에서는
0> std input
1> std output
2> std error
sort
정렬명령어
sort -r < passwd.txt > sorted.lst ; cat -n sorted.lst
역순으로 정렬한 다음에 sorted.lst로 저장을하고 줄을 붙여서 읽어줘라
링크 ==> 원본 파일을 복제하는데 어느 곳에서라도 변경이 있으면 모두 변경이 반영된다.
따라서 여러 곳에 분산되는 중요한 파일에 링크를 걸어서 분산시켜두면 한 곳에서의 변경이 모든 파일에 반영되는 것이다.
링크 지정정해 줄 때에는 절대경로로 지정을 해줘야한다.
심볼릭 링크 (소프트 링크) : ln -s [원본] [복사본] <= 일종의 단축키와 같은 기능으로 보안상 취약하다.
하드 링크 ln [원본] [복사본] <= 복사와 유사하지만 변경이 반영되는 점에서 복사와 다르다.
특징 :
소프트링크가 취약한 것은 원본을 지웠을 때,
링크는 살아있기 때문에 원본과 같은 이름으로 저장한다면 다시 불러온다.
즉, 악성코드를 링크원본파일과 이름이 같을 경우 소프트링크는 그대로 불러온다.
리눅스에서는 90%가 소프트링크로 되어있다.
즉, 보안에 취약하다
아래처럼 부팅에 관련된 grub2와 같은 파일의 소프트링크가 걸린 원본 파일을 변경한다면 치명적일 수 있다.
cp -arp /etc/grub2.cfg /etc/grub2.cfg.bak
nano /etc/grub2.cfg 로 들어가 모두 수정되있다고 가정한다면(악의적인 행위)
그럼 원본파일도 변경되어 있다.
비교를 했을 때, 같은 파일이라는 것을 알 수 있다. (즉 변경되었다.
백업한 파일과 비교를 해보면. 차이가 있다.
한 디렉터리에 링크를 활용하여 한곳에 모아놓고 작업을 할 수 있다MNC
readlink는
cat
모든 줄을 읽을 때
앞에서 3줄만 읽을 경우
file
file /dev/sda1
'수업 > KDT' 카테고리의 다른 글
[KDT-DAY_12] Linux (feat. 명령어) (0) | 2023.01.10 |
---|---|
[KDT-DAY_11] Linux 명령어 (0) | 2023.01.09 |
[KDT-DAY_9] Linux (feat. 커널, Xwin) (0) | 2023.01.05 |
[KDT-DAY_8] Linux (feat. 커널 업그레이드_1차) (0) | 2023.01.04 |
[KDT-DAY_7] 원격접속(GUI), Linux setting (0) | 2023.01.03 |