27일차

●27일차 (20250123027.php)
#웹의 취약점
> 로그인 부분의 무차별 대입공격
> CSRF(요청변조)
> XSS(게시판에 HTML 코드 삽입)
> 보통서버는 80, 443만 열려있다

예)hanatour.com,naeiltour.co.kr
서버에 침투하는 방법은?
> 웹쉘 제작: 웹에서 작동하는 악성코드(php,asp,jsp,py)

#업로드 자동 공격 코드 만들기
192.168.0.127의 업로드 취약점은 어디인가?
board: 123456 root:123456
> http://192.168.0.127/board/board.cgi?j=form
> http://192.168.0.127/~board/cool/board.html?code=test
> 본인의 이니셜로 된 웹쉘 만들기
> 업로드 된 파일 위치 파악하기
> Attack.php에 업로드 자동 공격 코드 추가하기

#업로드 공격
경우1.
http://192.168.0.127/board/board.cgi?j=form에 작성
> 파일 이름을 작성해야 작동하는 특이한 폼이었음


cd /usr/local/apache/htdocs/board/file
> 내가 썼던 php파일이 보임

경우2.
http://192.168.0.127/~board/cool/board.html?code=test
> 업로드 실패의 원인을 찾고 업로드 가능토록 조치


cd /home/board/public_html/cool/
cat new.html
sz new.html

코드확인
[new.html]
> connect.inc 라는 곳에 데이터가 있다고 함

$file_name = substr( strrchr($up_file_name,"."),1);
 if ($file_name==php3 || $file_name==html || $file_name==php || $file_name==phtml || $file_name==inc)
 {
       echo ("
            <script>
            window.alert('확장자가 PHP 스크립트로 등록된 파일은 첨부 할 수 없습니다.')
            history.go(-1)
            </script>
           ");
           exit;
 }
 
> 새글 올리기라는 코드가 있음(248라인)
> 다 열린 상태에서 이런 확장자들만 막아놓음
> 그래서 확장자 명을 대문자로 바꿔서 올렸더니 올라가버림

#업로드 공격 대안
화이트 해커를 위한 웹해킹의 기술(p275) 참고
1. 확장자명 + ?
> lsw.php.txt
> php에 txt를 붙여버림
> php가 작동이 안됨

2. 경로를 다르게
cd /usr/local/apache/htpocs/spboard/id/test/files
> 이 경로에 있음
> 업로드된 위치하고 다운로드된 위치가 다르다
> 해커가 찾기 어려움

+) 2번의 경우
> img를 올려버리면 f12를 통해서 위치가 나와버림
> php가 어디에 다운로드되는지 위치를 예측가능함

#실습
오픈 소스 게시판을 이용하자
제로보드 > xpress engine
그누보드 > 그누보드
워드프레스 > 킴스보드
-> 그누보드 사용

1. 웹, 도메인 세팅
sir.st.kr를 만들자

adduser sir
su sir
cd ~
chmod 711 $HOME
chmod 755 ~/public_html

nano /etc/apache2/sites-available/hosting.conf

nslookup sir.st.kr

2. 그누보드 넣어주기
다운 받은 zip파일을 관리자 pc에 옮겨 sir/public_html 아래에 넣어준다

unzip file
> 웹에 들어가면 그누보드를 설치하라는 화면이 나옴
> 안 나온다면 sir.st.kr/index.php로 들어가면 됨

3. 그누보드 세팅
public_html 아래에서
mkdir data
chmod 707 data

> 정보를 입력하라는 화면이 나옴

mysql에 데이터베이스를 넣어주기
CREATE DATABASE sir;
CREATE USER 'sir'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON sir.* TO 'sir'@'localhost';
FLUSH PRIVILEGES;
> 그누보드의 제대로 된 화면이 나옴

4. 업로드된 php 파일의 위치를 찾아보자
4-1. 자유게시판에 이미지 파일을 올려보자(f12 활용)

> data/file/free에 이미지 파일이 올라감
> php 파일도 이미지 파일과 똑같이 data/file/free에 올라감

4-2. workbench로 들어가보자
> mysql에 192.168.56.104, % 추가해줌
> write_free에 자유게시판에 올린 게시물들 데이터베이스가 뜬다
> wr_file이라는 명으로 첨부파일의 유무를 표시함
> 첨부파일이 있는 게시물은 board file에도 저장됨
(workbench -x)
> -x가 붙혀져 있음

5. 코드 확인
게시판에 들어가면 제일 먼저 board.php가 뜸
[board.php] (/bbs)
> write.php
> 게시판을 쓰는 란은 불러오는 것 같음 form이 없음
> 423 라인을 보면 G5_EDITOR_PATH, cf editor가 언급되는 걸로 보라 에디터가 따로 있는듯함
> 타고 올라가서 config.php > G5_EDITOR_PATH가 나옴

skin/board/basic에 form 코드가 있었음
> 타고 올라간건 아니고 그냥 찾아줌

[write_update.php] (/bbs) (574라인)
> 쓰기로 들어가게 되면 write.php가 뜨는데 update에는 첨부파일에 관한 코드가 있었다
> 확장자 명이 php 같은 경우 -x를 붙혀서 코드가 작동이 안되게 막아놓음

> 워크벤치에 -x가 붙혀서 나왔던 이유
> 워크벤치에 나왔던 형식과 똑같음
>> 파일명이 있는데 찾기 힘들다면 find / -name으로 찾자(관리자라면)

*web2.st.kr/upload.php에 업로드 공격을 방지하는 코드를 짤거임