본문 바로가기
정보보안/모의해킹

모의해킹 강의 1

by 뭔가해보겠습니다 2024. 10. 10.

 

모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
강의주소 : 
https://www.inflearn.com/course/sql-injection-secure-coding-1/dashboard

웹프록시 도구는 버프스위트 burp suite 를 많이 사용

환경구축
OS : 윈도우 (HOST)
웹 어플리케이션 서버 : Apache + php
dbms : mysql, mssql, oracle

취약환경 구축 예정
웹 어플리케이션
1) php + mysql
2) php + mssal
3) php + oracle

 

APMSetup 설치

APM
Apache - 웹서버
PHP - 서버 사이드 스크립트
Mysql - RDBMS
(+ Linux를 포함하기도 함)

APM 연동을 한번에 처리할 수 있는것이 APM Setup

C:\APM_Setup\htdocs
htdocs : 웹 디렉터리 위치. 처음엔 index.php 파일이 있다

127.0.0.1 접속화면

php.ini
magic_quotes_gpc = On
=> 데이터의 ' 싱글쿼테이션에 escape (역슬래시 \) 처리를 해주는 옵션. 예기치 못한 오류로 Off로 설정하는 경우도 많음
설정을 변경한 후에는 apache 서버를 재기동한다

 

재기동 방법 1. apmsetup 모니터링 프로그램을 통해 stop, start

2. ApacheMonitor.exe 실행하기

실행하니 강의와 달리 아랫줄 도구박스에서 확인할 수 있었다

 

mysql 패스워드 초기화
cmd 창에서 mysql -u root -p 입력
초기 비밀번호 apmsetup 입력후
update mysql.user set password=password('1234') where user='root';
update문으로 변경후
flush privileges;

 

오류해결)

자꾸 Lost connection to MySQL server during query 이런 오류가 떴다.

apmsetup을 보니 mysql5 가 계속 중지 상태였고 start를 해도 중지됨으로 돌아갔다

왜일까 하고 보니 Server version이 mysql이 아니라 Mariadb로 되어 있었다 예전에 다른 실습을 하다가 깔아놓은 거였다

cmd가 아니라, apmsetup에 있는 sql console로 접속해도 마찬가지여서 결국 Mariadb를 지우고 다시 실행하자 정상 작동했다

 

 

cmd에서 sqlplus
system 계정에 비밀번호 입력
select user from dual; 로 현재계정 확인

create user c##tester identified by 비번
default tablespace users quota unlimited on users;
사용자 생성

grant connect, resource to c##tester;
연결, 자원 권한 부여

 

php.ini에서
extension=php_oci8.dll 의 ; 주석 제거, 저장하고 apm 재시작

출처 : https://www.php.net/manual/en/function.oci-connect.php

<?php

// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_connect('아이디', '비밀번호', 'localhost/XE');
if (!
$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT user FROM dual ');
oci_execute($stid);

echo
"<table border='1'>\n";
while (
$row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo
"<tr>\n";
foreach (
$row as $item) {
echo
" <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
}
echo
"</tr>\n";
}
echo
"</table>\n";

?>

 

127.0.0.1/oracle_php.php
=> 처음엔 Fatal error: Call to undefined function oci_connect() in C:\APM_Setup\htdocs\oracle_php.php on line 4 이런 에러가 뜬다

cmd에서
where oci*.dll 입력하면
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ociw32.dll
dll 파일은 제대로 뜨는데 왜 인식이 되지 않는 것일까?

비트문제때문
oracle은 64비트인데 php는 32비트라서 호환이 안 됨
때문에 oracle 클라이언트를 설치해준다

Oracle Instant Client 다운로드
https://www.oracle.com/database/technologies/instant-client/downloads.html
32비트 선택하여 다운로드

시스템 속성 - 환경변수 Path에 C:\instantclient_21_15 를 맨위로 올려서 변경
apache 재기동

 

제대로 결과가 나온다

 

 

MSSQL 설치


다운로드
https://www.microsoft.com/ko-kr/sql-server/sql-server-downloads
Express 버전

사용자지정으로 진행

 

 

Azure 확장은 체크를 풀고 진행했다

 

서버 구성은 혼합모드, 암호는 적당히 입력

 

 

SQL Server 2022 구성 관리자 실행

SQLEXPRESS에 대한 프로토콜 > TCP/IP 사용으로 설정한 후, TCP/IP > 속성

IP주소에서 내가 사용하는 IP주소를 찾아 포트에 1433 적고 사용을 예로 설정

127.0.0.1 찾아서 똑같이 설정하고
IPALL에는 동적포트에 13197 포트에 1433 입력해주었다

설정을 반영하기 위해 다시 시작

 

cmd에서 netstat -an | find "1433" 입력하여 포트를 찾아보면
  TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
  TCP    [::]:1433              [::]:0                 LISTENING

열려있음을 확인 가능

 

 

샘플
http://php.adamharvey.name/manual/kr/function.mssql-query.php

<?php
// Connect to MSSQL
$link mssql_connect('127.0.0.1''sa''설정한비밀번호');

if (!
$link || !mssql_select_db('master'$link)) {
    die(
'Unable to connect or select database!');
}

// Do a simple query, select the version of 
// MSSQL and print it.
$version mssql_query('SELECT @@VERSION');
$row mssql_fetch_array($version);

echo 
$row[0];

// Clean up
mssql_free_result($version);
?>

 

php.ini
extension=php_mssql.dll 활성화후 재기동

 

 

Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64) Oct 8 2022 05:58:25 Copyright (C) 2022 Microsoft Corporation Express Edition (64-bit) on Windows 10 Pro 10.0 (Build 19045: )

 

이렇게 버전정보가 나오면 성공

 

DBvear 는 이미 설치되어 있어서 연동만 진행

MSSQL, Oracle

 

강의에서는 mysql을 쿼리박스로... 하시는거 같은데 귀찮아서 dbvear를 이용함

근데 드라이버가 안맞았다

직접 다운로드 받아서 적용 ( https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.41 )

참고한 블로그 : https://goddaehee.tistory.com/290

 

데이터베이스 구성이나 쿼리등은 강의 자료를 사용함

 

오라클은 테이블에서 자동숫자증가 기능을 쓸 때 SEQUENCE 를 사용
ex) CREATE SEQUENCE idx_seq INCREMENT BY 1 START WITH 1;
삭제는 DROP CREATE SEQUENCE idx_seq

수동으로 커밋해주어야 함

 

 

+ 버프스위트

진단시 사용하는 웹 프록시 프로그램 버프 스위트 Burp Suite

웹 브라우저를 믿지 말고 웹 프록시의 요청에 따른 응답이 중요
서버측 구성을 알 수 없기 때문.

그외 : 파로스Paros, 피들러Fidder, ZAP(OWASP 프로젝트 제공)

웹 프록시 적용

1) 인터넷 속성
윈도우키 + r + inetcpl.cpl
연결 > LAN 설정 > 고급 > http와 secure 항목 채워넣고 확인

2) 웹 브라우저 확장 프로그램
크롬이면 Proxy SwitchySharp 같은 확장 프로그램 사용

파이버폭스는 FoxyPorxy

강의에는 Options가 바로 뜨는데 최근버전은 UI가 많이 변동되었다
같은 화면으로 들어가려면 Poxy > Proxy setting을 클릭해야 한다

Response rules가 기본적으로 비활성화이므로 체크해주어야 함

 

주로 사용하는 탭은
Proxy, Repeater(자세한 결과값 검증), Decoder, Comparer(특정 응답값 비교 등)

Intruder는 자동화기능 수행 (파라미터 변조숫자를 순서대로 올린다든지) 이 가능함

 

test가 등록한 프록시 이름이고 클릭하면 프록시가 실행됨

해제는... SystemProxy 누르니까 해제됐다.

 

Intercept on/off 단축키는 ctrl + t

forward는 ctrl + f

특정값을 리피터로 보낼때는 우클릭후 send to repeater

리피터로 보낸 것을 또 검증하려면 send 버튼을 누르는데 이것도 단축키 ctrl + space bar 로 가능

 

정말 간단한 조작법 소개라는 느낌

아직 어떻게 써야할지는 잘 모르겠다

 

여기까지 교육 프롤로그.... 강의로는 1시간 반인데, 실제로는 설치중 에러때문에 4시간 이상 지났다........... ㅠㅠ 오늘은 여기까지 

'정보보안 > 모의해킹' 카테고리의 다른 글

모의해킹 강의 5  (0) 2024.10.18
모의해킹 강의 4  (0) 2024.10.16
모의해킹 강의 3  (0) 2024.10.15
모의해킹 강의 2  (0) 2024.10.14