[모의해킹 실습] 자동화공격 취약 페이지 구현 및 공격 실습

자동화공격

자동화 공격이란 애플리케이션의 정해진 프로세스에 자동화된 공격을 수행함으로써 자동으로 수많은 프로세스가 진행되는 취약점입니다. 이는 DoS(Denial of Service), 무차별 대입 기법(Brute-Forcing), 데이터베이스 과부하와 같은 피해를 일으킬 있습니다.

 

1. 공격 원리

자동화 공격은 다량의 요청이 시도될 검증과 적절한 대안 방안을 구축하지 않았기 때문에 발생하는 취약점입니다. 자동화 공격을 방지하기 위해서는 데이터 등록 일회성이 있는 별도의 토큰 사용, captcha 사용, IDS/IPS에서의 탐지 규칙 추가 등이 있습니다.

2. php 코드

<?php
  $username = $_POST[ 'username' ];
  $password = $_POST[ 'password' ];
  if ( !is_null( $username ) ) {
    $jb_conn = mysqli_connect( "[DB 접속 정보]" );
    $jb_sql = "SELECT pw FROM member WHERE id = '" . $username . "';";
    $jb_result = mysqli_query( $jb_conn, $jb_sql );
    while ( $jb_row = mysqli_fetch_array( $jb_result ) ) {
      $encrypted_password = $jb_row[ 'pw' ];
    }
    if ( is_null( $encrypted_password ) ) {
      $wu = 1;
    } else {
	    if ( password_verify( $password, $encrypted_password ) ) {
		    session_start();
		    $_SESSION[ 'username' ] = $username;
	            header( 'Location: login-ok.php' );
      } else {
        $wp = 1;
      }
    }
  }
?>
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>로그인</title>
    <style>
      body { font-family: sans-serif; font-size: 14px; }
      input, button { font-family: inherit; font-size: inherit; }
    </style>
  <link rel="stylesheet" type="text/css" href="/css/loginstyle.css"/>
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
  <link rel="stylesheet" type="text/css" href="/css/common.css" />
  </head>

	<body>
		<div class="login">
			<h1>Login</h1>
			<div class="links">
				<a href="login1.php" class="active">Login</a>
				<a href="signUp.html">Register</a>
			</div>
			<form action="login.php" method="post">
				<label for="username">
					<i class="fas fa-user"></i>
				</label>
				<input type="text" name="username" placeholder="Username" id="username" required>
				<label for="password">
					<i class="fas fa-lock"></i>
				</label>
				<input type="password" name="password" placeholder="Password" id="password" required>
				<div class="msg">계정정보를 입력해주세요</div>
				<input type="submit" value="Login">
			</form>
		</div>
	</body></html>

 

3. 공격 실습

No.

실습 위치

비고

1

http://localhost/login.php

로그인 기능

 

Step1: 로그인 기능에서 자동화 공격 취약점이 발생합니다. 게시판의 글쓴이 항목을 통해 사용자 계정명을 있습니다.

사용자 계정명 식별가능

Step2:로그인 시도 발생하는 요청을 분석합니다.

로그인 요청 분석

Step3:로그인 시도 횟수 제한이 존재하지 않으므로 무차별 대입 공격을 시도할 있습니다. Burp Intruder 기능을 이용하여 공격을 시도합니다.

Burp Intruder기능 사용

Step4:공격 수행 302 응답 코드로 정상적으로 로그인이 되어 Redirect 값을 확인할 있습니다.

공격 수행 화면

자동화 공격은 게시글 자동 등록, 무차별 대입 공격 뿐만 아니라 SQL Injection 수행하는 사용될 있습니다. 다량의 패킷을 요청하는 Blind SQL Injection 자동화 공격을 허용하게 됩니다. 때문에 자동화 공격은 Captcha 사용, 일회성 토큰 사용, 프로세스 호출 제한 등을 통해 대응해야 합니다.

반응형