프로젝트 010

kali에서 루트접속
> nmap
10.0.2.0/24 대역대에 사용되는 ip번호 확인.
> nmap -v -sn 10.0.2.0/24 > result.txt
10.0.2.101번에서 열려있는 포트번호 확인.
> nmap -v -p1-65535 10.0.2.101
> hydra -L user.txt -P passwd.txt 10.0.2.101 ssh
hydra로 user.txt와 passwd.txt를 이용해서 10.0.2.101 ssh에 무차별 대입공격 처리.
ssh master@10.0.1.101
> cd /var/log/
> tail -f auth.log
로 kali에서 대입 공격이 들어올때의 로그를 체크한다.
web 서버를 외부 접속(xshell)이 가능하게 만들기.
NAT > 포트포워딩

192.168.0.209로 xshell 접속
웹호스팅 > 하나의 서버에 여러 웹을 운영.
그러기 위해서는 각 계정을 추가해 주어야 한다.
> sudo adduser st
> sudo adduser kje
st.kr > /home/st/public_html > st 소유
kje.kr > /home/kje/public_html > kje 소유
웹 기본 페이지 > /var/www/html > root 소유
---
루트 접속
> cd st
> mkdir public_html
하지만, 계정을 추가할때마다 일일이 public_html 디렉토리를 만들어주어야 하는 번거로움이 있다.
해결하기 위해서는, 계정을 생성할 때
sudo adduser st (123456/enter)
info: Adding user `st' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `st' (1001) ...
info: Adding new user `st' (1001) with group `st (1001)' ...
info: Creating home directory `/home/st' ...
info: Copying files from `/etc/skel' ...

라는게 뜨는데, 위의 Copying files from '/etc/skel' 이라는 문장이 의미하는 것이 /etc/skel 에 있는 파일을 자동으로 복사해준다는 것이다.
그러므로 /etc/skel 위치로 가서 public_html 디렉토리를 넣어주면 계정생성마다 자동으로 만들어진다.
> cd /etc/skel
> mkdir public_html
> cd public_html
> mkdir auth, board, includes, logs
> touch index.php
> cd board
> touch header.php, tail.php, db.php
> cd /var/www/html
> nano index.php
<?php
echo phpinfo();
?>
후 웹에서 192.168.0.209/index.php
-----
일반 계정 (st, kje) 홈페이지 작동
(http://192.168.0.209/~st)
사용자마다 자신의 홈 디렉터리에서 웹사이트 운영하도록 설정
> a2enmod userdir
> systemctl restart apache2
> cd /home/st/public_html
> touch index.html
웹에서 접속하면 fobidden이 뜬다.
> ls -al
root에서 디렉터리와 파일을 생성했기 때문에 root로 되어있는 소유자와 그룹을 일반계정으로 변경해야한다.
> cd ..
> chown st:st public_html
> cd public_html
> chown st:st index.html
> su st
> chmod 711 $HOME
> chmod 755 ~/public_html
http://192.168.0.209/~st > 정상적으로 실행된다 (백지).
kje, naver 계정도 똑같이 반복.
---
editplus 접속
(apt 명령 할때 서버 연결 오류 나면 네임서버 168.126.56.1로 바꿔주기.
이 서버 기준으로는 nano /etc/netplan/50[Tab]에 10.0.2.101로 되어있는 네임서버를 168.126.56.1로 변경.
다시 gns에서 사용할때는 네임서버 원래대로 변경.)
> sudo apt -y install vsftpd
> nano /etc/vsftpd.conf
#write_enable=yes > 주석 제거
#anon_upload_enable=yes > 주석 제거
#anon_mkdir_wirte_enable=yes > 주석 제거
#xferlog_file=/var/log/vsftpd.log > 주석 제거

> nano /etc/vsftpd.chroot_list
계정 추가 : st, master, kje, naver
> systemctl start vsftpd
> systemctl restart vsftpd
editplus > ftp 설정 > 192.168.0.209 - st - 123456 - /home/st/public_html > 고급 옵션 > passive ftp모드 해제
하면 editplus에서 정상적으로 접속 가능.
---
st.zip > index.php를 /home/st/public_html/index.html로 붙여넣기
하고 웹 확인하면 정상적으로 뜨는데, 조금 깨져서 나온다.
그러므로 index.php로 코드를 옮겨서 웹에 192.168.0.209/~st/index.php를 해도 여전히 깨진다.
이는 부분에 stylesheet.css를 오픈하라고 되어있는데 파일이 없어서 그렇기 때문이다.
그러므로 /st/public_html에 st.zip 파일에 있는 stylesheet.css를 옮긴다.
또 코드의 18번라인에 include 'menu.php'; 라는 코드가 있는데, 이 역시 파일이 없다.
그러므로 가져온다.
처음에 웹 깔았을때 (sudo apt -y install lamp-server^) php가 깔린다.
하지만 이거는 /var/www/html까지는 작동이 되는데, 일반 사용자가 웹사이트를 만들고 파일을 만들때는 php가 정상적으로 작동이 안된다.
그러므로 PHP-FPM(FPM : FastCGI Process Manager)을 설치해주어야 한다.
> sudo apt -y install php8.3-fpm
> a2enmod proxy_fcgi setenvif
> a2enconf php8.3-fpm
> systemctl restart php8.3-fpm apache2
-----
webhack.sql 옮기기 (/st/public_html)
[webhack.sql]
CREATE TABLE IF NOT EXISTS `board` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`subject` varchar(255) NOT NULL,
`content` text NOT NULL,
`file` varchar(255) DEFAULT NULL,
`writer` varchar(100) NOT NULL,
`level` int(11) NOT NULL,
PRIMARY KEY (`no`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `auth` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`id` varchar(50) CHARACTER SET utf8 NOT NULL,
`pw` varchar(50) CHARACTER SET utf8 NOT NULL,
`name` varchar(50) CHARACTER SET utf8 NOT NULL,
`level` int(11) NOT NULL DEFAULT '9',
`regdate` datetime NOT NULL,
PRIMARY KEY (`no`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `auth` (`id`, `pw`, `name`, `level`, `regdate`) VALUES
('admin', 'admin1234', 'admin', 9, '2016-02-22 15:48:16');
-----
root > mysql
create database st;
create user st@localhost identified by '123456';
grant all on st.* to st@localhost;
flush privileges;
dbconfig.php 옮기기 (/st/public_html)
root > mysql -u st -p st < webhack.sql
이렇게 하면 webhack.sql에 있는 내용이 자동으로 적용된다.
auth와 board 테이블이 생성되었다.
login_chk.php도 옮기기.
그 다음 웹에서 로그인 해보면 (admin, admin1234) 제대로 로그인 되는 걸 확인할 수 있다.