(기본설정 확인)
* Rocky (데이터베이스 및 index.php 확인)
<?php
$servername = "localhost";
$username = "boarduser";
$password = "p@ssw0rd";
$dbname = "board";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Insert post
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = trim($_POST['title']);
$content = trim($_POST['content']);
if(!empty($title) && !empty($content)){
$stmt = $conn->prepare("INSERT INTO Posts (title, content) VALUES (?, ?)");
$stmt->bind_param("ss", $title, $content);
$exe = $stmt->execute();
if ($exe === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
} else{
echo "Title and content must not bm empty.";
}
}
// Display posts
$sql = "SELECT id, title, content, reg_date FROM Posts";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<h2>Posts</h2>";
while($row = $result->fetch_assoc()) {
echo "<div>";
echo "<h3>" .htmlspecialchars($row["title"],ENT_QUOTES,'UTF-8')."</h3>";
echo "<p>" .htmlspecialchars($row["content"],ENT_QUOTES,'UTF-8')."</p>";
echo "<small>Posted on " .htmlspecialchars($row["reg_date"], ENT_QUOTES, 'UTF-8')."</small>";
echo "</div><hr>";
}
} else {
echo "0 results";
}
$conn->close();
?>
<h2>Create Post</h2>
<form method="post" action="">
Title: <input type="text" name="title" maxlength="20" placeholder="20자까지 입력가능" required><br>
Content: <textarea name="content" maxlength="30" placeholder="30자까지 입력가능" required></textarea><br>
<input type="submit">
</form>
< 패킷스니핑 > 환경구축:
암호화되지 않은 채 패킷이 이동하는 프로그램 실험환경 : <클러트서의 어댑터 설정 > 어댑터 1: 브릿지 모드 -(인터넷) 어댑터 2: 랜 host-only( 172.16.0.0/24) (가상머신끼리 통신) rocky linux : 172.16.0.200으로 잡을 예정 <Rocky Linux설정 > selinux → 비활성화 setenforce 0 vi /etc/selinux/config —> SELINUX=disable nmcli con show 공격자 : 칼리 공격대상 ; win10 / Rockt Linux |
<Rocky Linux 추가설치>
selinux 비활성화 및 httpd, vsftp, telnet-server설치
1) httpd 활성화 확인
2) vsftpd 설치 및 활성화 확인
3) Current mode
[root@www ~]# sudo setenforce 0
[root@www ~]# sestatus
Current mode: enforcing → permissive가 되어야 한다.
4) vi /etc/selinux/config 접속한 후 SELINUX=disable로 변경
5) enp0s8 설정
nmcli con modify enp0s8 ipv4.method manual
→ 고정ip로 잡는것
6) ftp 확인
7) 포트 21 tcp 추가
8) vi /etc/ssh/sshd_config ( ssh로 접근할 때 root로 로그인할 수 있도록 설정 )
9) telnet 설치
10 ) php 설치
11) mariadb 설치 확인
12) 네임서버 확인
< kali리눅스 설정 >
=> eh1설정 전
- 인터페이스 시작
sueo ip link add name eth1 type dummy
sudo ip link set eth1 up
sudo nmcli con add type ethernet ifname eth1 con-name my-conn ip4 172.16.0.2/24 gw4 172.16.0.1
sudo nmcli con mod my-conn ipv4.dns 8.8.8.8
sudo nmcli con up my-conn
sudo nmcli con show my-conn
=> erh1 설정 후 : inet 172.16.0.2 생성 확인
-> eth1 수동으로 생성 및 활성화 172.16.0.2이 생긴 것을 확인
┌──(kali㉿kali)-[~]
└─$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:ad:25:87 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.41/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
valid_lft 5048sec preferred_lft 5048sec
inet6 fe80::1b73:53b:2174:30da/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:96:5f:3c brd ff:ff:ff:ff:ff:ff
inet 172.16.0.2/24 brd 172.16.0.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::4c7f:330e:a367:ff0d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
< 윈도우 10 네트워크 설정 >
=> ssh 접속 활성화
=> kali 접속 완료
ping 테스트 ( kali에서 )
=> rocky ping 테스트 확인
-> 설정 -> windows 보안 > 고급 설정 > 새 인바운드 규칙 추가
=> 위와 같이 설정
ping명령을 허용해줘야한다. 윈도우는 방화벽이 막혀있다.
윈도우 ping이 되는 것을 확인
ping 테스트 ( window에서 )
윈도우에서도 (rocky - 127.16.0.200, kali- 172.16.0.2) ping되는 것을 확인
=> 네트워크 연결 된 것을 확인
Window에서 접속 확인
=> 내 도메인으로 설정된 웹 페이지 보이는 것을 확인
패킷스니핑
칼리리눅스의 와이어샤크를 이용하여 랜에 물려 있는 랜카드를 패킷스니핑하기 위하여 eth1을 선택
=> 패킷스니핑이 진행중인 것을 확인
<필터 : 보고 싶은 것만 보기 >
tcp.port==80 것만 보여달라는 것
< >
(데이터가 왔다갔다)
tcp : 세그먼트
이더넷 :프레임
IP: 패킷
SNMP : 메일을 받을 때
POP3 : 메일을 보낼 때
<한글패치 설정>
sudo apt install locales
sudo locale-gen ko_KR.UTF-8
sudo dpkg-reconfigure locales
sudo vi /etc/default/locale
export LANG=ko_KR.UTF-8
export LC_ALL=ko_KR.UTF-8
export LANGUAGE=ko_KR.UTF-8>LC_ALL=ko_KR.UTF-8
udo apt install fonts-noto fonts-noto-cjk
reboot
테트스 패킷스니핑이 올라온 것을 확인
(게이트웨이로 스푸핑)
sudo arpspoof -i eth1 -t 172.16.0.12 172.16.0.1
와이어샤크에서 tcp패킷이 뜨지 않고 계속 arp만 뜬다면 포워딩 설정을 확인해야 한다. 포워딩은 스푸핑 후 다시 게이트웨이에게 전달하는 것을 의미한다
게이트웨이의 물리주소가 칼리의 물리주소를 가르키게 되면 정상적으로 스푸핑이 설정된 상태