자동화공격
자동화 공격이란 웹 애플리케이션의 정해진 프로세스에 자동화된 공격을 수행함으로써 자동으로 수많은 프로세스가 진행되는 취약점입니다. 이는 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 |
로그인 기능 |
Step1: 로그인 기능에서 자동화 공격 취약점이 발생합니다. 게시판의 글쓴이 항목을 통해 사용자 계정명을 알 수 있습니다.
Step2:로그인 시도 시 발생하는 요청을 분석합니다.
Step3:로그인 시도 횟수 제한이 존재하지 않으므로 무차별 대입 공격을 시도할 수 있습니다. Burp의 Intruder 기능을 이용하여 공격을 시도합니다.
Step4:공격 수행 시 302 응답 코드로 정상적으로 로그인이 되어 Redirect 된 값을 확인할 수 있습니다.
자동화 공격은 게시글 자동 등록, 무차별 대입 공격 뿐만 아니라 SQL Injection을 수행하는 데 사용될 수 있습니다. 다량의 패킷을 요청하는 Blind SQL Injection의 자동화 공격을 허용하게 됩니다. 때문에 자동화 공격은 Captcha 사용, 일회성 토큰 사용, 프로세스 호출 제한 등을 통해 대응해야 합니다.
'Security > WEB' 카테고리의 다른 글
[모의해킹 실습] 불충분한 인가 페이지 구현 및 공격 실습 (0) | 2021.07.31 |
---|---|
[모의해킹 실습] 불충분한 인증 페이지 구현 및 공격 실습 (0) | 2021.07.27 |
[모의해킹 실습] CSRF 취약 페이지 구현 및 공격 실습 (0) | 2021.07.22 |
[모의해킹 실습] 파일 다운로드 취약 페이지 구현 및 공격 실습 (0) | 2021.07.19 |
[모의해킹 실습] 파일업로드 취약 페이지 구현 및 공격 실습 (0) | 2021.07.15 |