18일차

●18일차(20250113)
#문제23
사용중인 계정을 일시적으로 락을 걸리게 하려면
sudo passwd -l user (lock)
sudo passwd -u user (풀기)

#문제 21
(competition.st.kr)웹으로 접속이 가능하게 하되 ip : 100.100.100.1이 접속되지 못하게 막아라

su st
cd ~
chmod 711 $HOME
chmod 755 ~/public_html
-->흰화면 (st.kr/~st)

nano /etc/bind/st.kr.zone

su
cd /etc/apache2/sites-available
nano hosting.conf

<VirtualHost *:80>
  DocumentRoot /home/st/public_html
  ServerName intra.st.kr
  ServerAdmin st@st.kr
  ErrorLog /home/st/public_html/logs/error.log
  CustomLog /home/st/public_html/logs/access.log combined
</VirtualHost>
    
a2ensite hosting
-> 이거 안되면 오타

systemctl restart apache2

indec.html
index.php
삭제

<directory "/home/competition/public_html>
options Indexes
</directory>
> hosting.conf에 추가

systemctl restart apache2
> 웹에서 경로 목록이 나온다

options indexes를 options None으로 바꾸고
다시 public아래에 index.html을 추가해주면
> 다시 흰화면이 나온다
> 경로 목록이 뜨는거 좋지 않다

options None
Order Allow,Deny
Allow from all
Deny from 100.100.100.1/32
> kali에서 competition.st.kr로 접속이 안된다


#문제11
자동 로그아웃 시간을 3분으로 처리
nano /etc/profile
> TMOUT=180

#문제6
kali로부터 오는 메일을 차단(p569)
nano /etc/mail/access
> 100.100.100.1 REJECT
> st.kr relay 주석처리
makemap hash /etc/mail/access < /etc/mail/access
systemctl restart sendmail
systemctl restart dovecot

kali에서 관리자로 메일 보내기

> access denied가 나옴

#문제14
nano /etc/login.defs
PASS_MAX_DAYS 30
PASS_MIN_LEN 8

UMASK 022
디렉토리 777 - 022 = 755
파일 666 - 022 = 644

LOG_OK_LOGINS yes

부팅시 마운트 지점
/etc/fsab

암호 보는데
/etc/passwd

암호 설정바꾸는데
/etc/login.defs

메일 차단
/etc/mail/access
> sendmail 설치시 확인 가능

# 시나리오 세팅
shop.st.kr 생성 > 워드프레스 기반 쇼핑몰

cp wordzip /home/shop/public_html
chown shop:shop word.zip
unzip word

http://shop.st.kr/wordpress
nano /etc/apache2/hosting.conf
> 경로 /wordpress로 수정 > shop.st.kr만으로도 들어가짐

nano index.html
location.href='./wordpress';

su shop
cd ~
cd /public_html/wordpress
cp wp-config-sample.php wp-config.php
nano wp-config.php

/** The name of the database for WordPress */
define( 'DB_NAME', 'shop' );

/** Database username */
define( 'DB_USER', 'shop' );

/** Database password */
define( 'DB_PASSWORD', '123456' );
    
ls -al
chown shop:shop wordpress/

데이터베이스 추가(shop)
localhost
192.168.0.201
%

shop.st.kr/wp-login.php
> 로그인 화면이 나옴

#시나리오
1.공격의 시작
ping shop.st.kr (icmp)/tcp/udp
> 100.100.100.1 쉽게 노출

hping3 shop.st.kr -S -i u50 -c 5
> tcp > 공격의 시작이라 보겠다(time : 1512 357.662687)

> wireshark에서 확인 가능
(hping3 shop.st.kr -a st.kr -S -c 100 -u 100)

nikto -host shop.st.kr > wordpress라는 걸 확인
> nikto 한건 shop의 로그에서 확인 가능함

wpscan --url shop.st.kr -U user.txt -P passwd.txt
> 공격을 성공시키기 > 아이디 비밀번호 나옴
-> /home/shop/public_html/logs에 tail -f access.log로 로그 올라오는거 확인하면서 하자

2. 공격 로그 pc로 가져오기
경로 /user/manager
ftp 10.0.2.15
사용자 : shop
비밀번호: 123456
cd public_html
cd logs
get acess.log
> 관리자 pc에 user/manager에 access가 남아있음
> 공격 후에 대한 로그 확보
> 중간중간에 dir로 경로 확인

3. 백업
su shop
cd ~
nano backup.sh

[backup.sh]

#!/bin/sh
set $(date)
NOW=$(date "+%Y%m%d_%T")
mysqldump -u shop -p123456 shop > /home/shop/public_html/shop_$NOW.sql
fname="backup-shop-$1$2$3.tar.gz"
tar cvzf /backup/$fname /home/shop/public_html
    
> backup 디렉토리 > chmod 777
> shop/public_html로 경로를 지정해줘야 sql도 같은 경로에 백업이 돼서 이전하기 쉽다
> ./backup
> 백업파일 관리자 pc로 가져오기
> share폴더로도 가져오기

#미션1
shop 로그에 기록된 access.log 데이터에 100.100.100.1은 총 몇번을 접속시도했는지 계산하시오
> 코딩 or elastic 이용

#미션2
shop에 대한 웹 파일과 데이터베이스 백업후 관리자 pc에 저장

#미션3
해커가 실행했던 명령어는?
php.st.kr/monitor.php에서 확인 가능하도록 하려면?

#외부로 데이터베이스 백업
backup 이름으로 된 새서버 가져오기
> NAT, 포트추가

1. 설치
apt -y install net-tools

apt -y install lamp-server^
apt -y install php8.3-fpm
a2enmod proxy_fcgi setenvif
a2enconf php8.3-fpm
systemctl restart php8.3-fpm apache2

apt -y install bind9 bind9utils

apt -y install lrzsz
apt -y install unzip

2. 웹 활성화
cd /etc/skel
mkdir public_html
cd public_html
mkdir includes
mkdir auth
mkdir logs
touch index.html
touch index.php
cd logs
touch error.log
touch access.log

cd /home
adduser st
adduser shop

su st
cd ~ (너의 방으로 들어가라)
chmod 711 $HOME
chmod 755 ~/public_html
> shop도 똑같이

a2enmod userdir
일반 사용자 홈페이지 확인 가능함
http://192.168.0.201/~shop

3. 도메인 활성화
nano /etc/bind/named.conf.options

  dnssed-vaildation no;
  recursion yes;
  allow-query { any; };
systemctl enable named
systemctl restart named
systemctl status named

nslookup st.kr 확인

nano /etc/resolv.conf
> 192.168.0.201

nano named.conf.default-zones

zone st.kr
file "/etc/bind/st.kr/zone";
named-checkconf
->입력한 내용이 문법상 틀렸는지 확인

nano st.kr.zone
touch st.kr.zone (없으면 만들어)
cp db.local st.kr.zone
nano st.kr.zone
(st.kr.zone3)

named-checkzone st.kr st.kr.zone (맞는지 확인)
systemctl restart named
systemctl restart bind9

4. 호스팅 세팅
nano /etc/apache2/sites-available/hosting.conf

a2ensite hosting

+) win10 dns 192.168.0.201로 바꿔줘야 win10 웹에서 웹이 뜬다

5. 데이터베이스
mysql
CREATE DATABASE shop;
CREATE USER 'shop'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;

6. 백업 이전
백업받은 파일을 백업 서버로 이전
XXX.sql 파일을 복원

> public_html이라는 압축파일이 만들어짐
> 만들어진거 xshell에 /home/shop/public_html 아래에 넣어준다
> 작업할땐 root로 해주지 말자 > 권한자가 root가 돼서 하나하나 바꿔줘야함

unzip public_html.zip
> wordpress라는 디렉토리가 나옴

nano index.html
location.href='./wordpress';

mysql -u shop -p shop < shop_2025(최신).sql
> word.st.kr이 gns안에서처럼 뜬다

[dvwa.st.kr]
1. 웹활성화

2. 호스팅 세팅
> hosting.conf 추가
> nslookup dvwa.st.kr

3. 데이터베이스 추가
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;

4. 백업이전
[backup.sh]

#!/bin/sh
set $(date)
NOW=$(date "+%Y%m%d_%T")
mysqldump -u dvwa -p123456 dvwa > /home/dvwa/public_html/dvwa_$NOW.sql
fname="backup-dvwa-$1$2$3.tar.gz"
tar cvzf /backup/$fname /home/dvwa/public_html
./backup
관리자 pc, share에 가져오기
win10에서 public_html 아래에 있는 백업 전체를 public_html.zip으로 묶기
xshell 백업 서버로 가져오기
unzip public_html.zip

nano index.html
location.href='./login.php';

mysql -u dvwa -p dvwa < dvwa_2025(최신).sql
> dvwa.st.kr 웹이 뜨게 된다