●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
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 웹이 뜨게 된다