dnf -y install git
cd /var/www/html/
git clone https://github.com/gnuboard/gnuboard5.git
cd gnuboard5/
rm -rf .git .gitattributes .gitignore
=> git으로 그누보드 다운로드 받고 쓸모없는 파일 삭제
mkdir -m 777 data
chcon -t httpd_sys_rw_content_t data
=> data 디렉터리에 dbms 접속파일이 생기므로 설치중에 777, 설치후에 701로 변경
=> selinux 설정
vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName php1.linuxmaster.net
</VirtualHost>
=> 사용할 가상 호스트 추가
systemctl restart httpd.service
재시작
chmod 711 data
=> 설치완료되었으니 data 폴더 권한 변경
phpMyAdmin
php 언어로 만들어진 dbms 관리 프로그램
웹에 노출되어 보안상 문제가 생길 수 있으며 관리자 ip 주소를 설정하여 문제점을 방지한다
mariadb mariadb-server 패키지가 서버에 설치되었다고 가정
로키8에서는 dnf로 설치가 되지 않아서 소스설치로 진행
(로키9부터 dnf 설치 가능)
cd /var/www/html/
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
unzip phpMyAdmin-5.2.1-all-languages.zip
mv phpMyAdmin-5.2.1-all-languages phpmyadmin
=> 원래는 phpmyadmin이라는 이름이 아니라 다른걸 사용해야한다 (취약점임)
mv phpMyAdmin-5.2.1-all-languages.zip ~
cd phpmyadmin/
mv config.sample.inc.php config.inc.php
mkdir tmp
chown apache tmp
chcon -t httpd_sys_content_rw_t tmp
vim config.inc.php
$cfg['blowfish_secret']에 아무 문자열이나 넣고
$cfg['TranslationWarningThreshold'] 해당 문자열 출력을 금지한다
아이디와 비밀번호는 php 설치할때 설정한 것으로 입력한다
나의 경우는 초기 데이터를 root 111111 로 설정했었다
Create를 누르면
다시 메인으로 돌아오면 경고문구는 사라져있다.
useradd -g users tunneluser
passwd tunneluser
터널링 계정 생성
ssh -L 2024:127.0.0.1:80 tunneluser@192.168.100.23 -f -N
=> 터널링. -f : 백그라운드로 세션 실행 / -N : 명령어를 실행하지 않고 포트 포워딩 용도로 사용할때
netstat -na | findstr 2024
=> 터널링 포트 열렸는지 확인
vi /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /var/www/html/phpmyadmin/>
AddDefaultCharset UTF-8
# SSH 로컬 포트 포워딩 터널링 설정
Require ip 127.0.0.1
# 호스트 OS 접근 설정
#Require ip 192.168.100.1
</Directory>
설정파일 만든다. 로컬에서만 접근 가능하다.
( 허용 ip는 Require ip로 추가 )
vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName php1.linuxmaster.net
</VirtualHost>
=> 요 설정은 가상호스트 중 제일 위에 오도록 한다.
systemctl restart httpd.service
재시작
터널링은 작업관리자에서
ssh로 된 것을 죽이면 완전히 종료된다.
Burp로 잡아본 실습용 페이지들
request, response 확인
로그인 인증 우회
1. 브라우저단에서 입력값 조작
2. burp에서 Repeater 이용하여 client 파라미터 조작
+
index.html을 새로고침 했을 때, Response를 조작하면
intercept off 했을 때 개발자도구로 확인시 조작된 size로 로딩되는 것을 볼 수 있다
XSS(Cross-Site Scripting)
공격자가 악의적 스크립트를 웹페이지에 삽입하여, 사용자 브라우저에서 실행되게 하는 공격
사용자 정보 탈취, 악성 홍보 및 사기, 사용자 조작 피해 등.
Stored (Persistent) XSS
서버에 저장된 데이터베이스에 악의적 스크립트 삽입
Reflected (Non-Persistent) XSS
입력값을 서버에서 받아 처리한 후, 그 결과를 브라우저에 반영할때 발생
악의적 링크를 클릭하도록 유도하여 링크에 포함된 악성 스크립트 실행
DOM-based XSS
웹페이지 동적 요소(DOM)를 조작하여 스크립트 실행
방지
1. CSP : 웹페이지가 특정 소스에서만 리소스를 로드하도록 지시하는 정책
2. HTTP 헤더 설정 : HttpOnly(쿠키접근방지), Secure(HTTPS에서만 쿠키 전송)
3. 웹 보안 프레임워크 사용 (ex OWASP ESAPI, OWASP Java Encoder 등)
4. 세션관리 및 인증 보안 (세션쿠키 보안설정, 사용자 입력값 검증)
5. 보안 헤더 설정 (X-XSS-Protection 헤더, X-Content-Type-Options 헤더)
6. 보안 교육 및 코드 검토
/var/lib/php/session/
=> 세션 파일이 위치한 곳
관리자 : sess_8vfkukdaauppbuk0b3m5kaalal
공격자 : sess_eraq9b0c7ll2vc9v4lbq6nsfk9
공격자 쿠키를 관리자 쿠키로 조작함