●22일차(20250117)
#미션1
계정 생성후 백업 스크립트 작동여부 확인해서 수정할것
계정 로그인시 log@mail.st.kr로 접속여부 전송 확인
도메인추가하기
#미션2
[도메인: basic.st.kr]
basic 계정을 생성하고 사이트가 정상적으로 작동되도록 조치하라
basic.zip
[도메인: bookmarket.st.kr]
bookmarket 계정을 생성하고 사이트가 정상적으로 작동되도록 조치
bookmarket.zip
1. 계정 활성화, 호스팅 세팅, zip파일 넣어주기
adduser
cd ~
chmod
nano /etc/bind/st.kr.zone
nano /etc/apache2/sites-available/hosting.conf
systemctl restart apache2
systemctl restart named
> 알드라이브로 zip파일을 넣음
> 서버에서 각 계정에 들어가 public_html 아래에 unzip 해줌
+) 굳이 경로를 바꾸는 이상한 행동 하지말자(이미 만들어진거임)
2. edit plus 세팅
제일 먼저 찾는게 index.html
<script>location.href='./index.php';</script>
> 흰화면이 아닌 zip파일에 넣어준 파일들이 활성화된다.
3. 코드 확인 후 데이터베이스 세팅
index.php에 main.php가 있는거 확인
> main.php 을 확인해보자
$con = mysqli_connect("localhost", "user1", "12345", "sample");
> mysqli에 데이터베이스가 들어있다
> 이 데이터베이스를 추가(다른 파일에 다 이 코드가 있어서)
CREATE DATABASE sample;
CREATE USER 'user1'@'localhost' IDENTIFIED BY '12345';
GRANT ALL PRIVILEGES ON sample.* TO 'user1'@'localhost';
FLUSH PRIVILEGES;
CREATE USER 'user1'@'192.168.56.104' IDENTIFIED BY '12345';
GRANT ALL PRIVILEGES ON sample.* TO 'user1'@'192.168.56.104';
FLUSH PRIVILEGES;
> 웹페이지에 들어가면 데이터베이스 안에 테이블이 없다는 에러가 뜸
> db라는 폴더에서 sql을 가져오면 된다
서버로 들어가
su basic
cd public_html/db
> mysql -u user1 -p sample < board.sql
> mysql -u user1 -p sample < members.sql
> mysql -u user1 -p sample < message.sql
-> 웹페이지에 에러가 안뜬다
회원가입에 들어가서
admin 123456으로 회원가입을 해보자
> 데이터베이스에서 확인
workbench에 들어가자

> 넣어준 데이터베이스 이름에 맞게 workbench 설정
> admin 123456이 들어간거 확인
4. 작은 보안 조치
kali에서 nikto -host basic.st.kr
4-1. nikto에서 몇개의 활성화된 디렉토리가 있다고 뜬다
> 디렉토리도 노출되면 안된다
nano /etc/apache2/sites-availabe/hosting.conf

> systemctl restart apache2
> 웹에서 활성화된 디렉토리에 들어가면 forbidden이 뜬다
> 하지만 아파치 버전이 나온다
4-2. 아파치 버전을 안나오게 해보자
nano /etc/apache2/apache2.conf
> serversigniture off
or
nano /etc/apache2/conf-available/security.conf
> serversigniture off로 두면된다
> systemctl restart apache2
-> 웹에서도 안뜨고 nikto를 해도 버전이 안나온다
4-3. nikto를 보내면 basic에 admin.php가 흥미롭다고 나옴

> 이런 페이지가 뜨면 안된다
edit plus에서 public_html/admin.php 맨위에
<?php
session_start();
if (!isset($_SESSION["userid"])) {
echo "로그인 후 사용가능";
exit;
}
?>
> user_id에 세팅된 session이 아니라면 로그인 후 사용가능이라 알려주면서 admin.php가 안뜨게 해준다
+) edit plus가 수정이 안된다면 public_html 아래에 있는 파일들이 root 권한이라 그럴것이다.
#Brute Force(무차별 대입 공격)
: 내가 알고있는 사전으로 때려맞춤
> response에서 진짜 비밀번호만 반응이 다름
> 관리자가 눈치를 못챔 (아이디 비밀번호를 바꾼게 아니라 알아낸거라)
#CSRF
: kali가 관리자의 암호를 관리자 모르게 바꿀 것이다
> @관리자가 웹사이트에 접속되어있는 상태에서 수행@
> kali는 관리자의 pc 서버와 세션값을 가져와야함
> 비밀번호를 바꾸는거라 관리자가 언젠가는 알아챌 것이다
> 이 공격을 보통 메일을 보냄
> 내가 만든 똑같은 가짜 유명 웹사이트가 뜬다
> 궁금한 것만 가져오고 나오는것(접속되어있는 상태에서 해야하는거라)
#CSRF 공격
1. 관리자가 접속중인지 확인
2. 세션값 확인
관리자 pc에서 dvwa.st.kr접속 > CSRF 접속 >F12 개발자 모드 > network > 새로고침 > 옆에 떠있는 csrf 클릭
-> 쿠키값이 나옴(admin과 서버가 연결된 한사람만의 값)

> 창을 닫고 다시 띄우면 세션값이 바뀜
> 세션값을 따로 메모장에 저장해서 kali로 옮겨줌
3. 해커가 쿠키를 가지고 서버로 공격
> 그 사람인줄 컴퓨터가 착각(장소도 같다고 생각)
> 세션값을 훔치는게 목적(모르면 메일로 보내 직접 접속)
#CSRF 공격 코드
kali에서 csrf.html로 코드를 만들어줌

>

> 이미 세션값을 알고있는 상태
> 아이디와 비밀번호를 바꿀 수 있게 만들어줄것임
[burp suite]
browser open
csrf.html을 그대로 끌어당겨서 웹이 뜨게해준다
> 웹에 코드 클릭 후 경로 확실히 확인
intercept on한 상태로 웹에 뜬 코드 클릭
비밀번호를 바꾸고 add cookie security > f12로 봤을때와 똑같이 name과 내용을 설정해준다

> forward 클릭 > win7에서 바뀐 비밀번호로 들어가진다
+) 이거 하기전에 쿠키값 제대로 확인
암호가 바뀜
> win7에서 dvwa에 들어가 바뀐 비밀번호로 로그인
> 바뀐 순간에 관리자는 모름 하지만 데이터베이스(user) 자체의 계정이 바뀐건 아님
> 웹 비밀번호 즉, 테이블에 있는 admin의 비밀번호만 바뀜
> 충분히 관리자가 admin 계정의 비밀번호가 바뀐걸 확인가능하다
workbench에 들어가 admin의 비밀번호가 바뀌었는지 확인해보자
> hash값으로 나와있음
> 파이썬 이용

> 비밀번호가 바뀌었다는걸 확인할 수 있다.