본문 바로가기
정보보안

정보보안8 3차시

by IT매니절 2024. 11. 16.

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

공격자 쿠키를 관리자 쿠키로 조작함

'정보보안' 카테고리의 다른 글

정보보안8 5차시  (0) 2024.11.23
정보보안8 4차시  (0) 2024.11.17
정보보안8 2차시  (0) 2024.11.10
정보보안8 1차시  (0) 2024.11.09
정보보안7 8차시  (0) 2024.11.03