본문 바로가기
Lecture/JSP & Java

[본격 웹보안 Part 1.3] 폼 변조 공격이란?

by cusmaker 2012. 9. 20.
반응형

안녕하세요 cocy입니다.

이번시간에는 폼 변조 공격에 대해 배워 보도록 하겠습니다.

지난시간에 sql injection을 방어하기위해 스크립트를 추가하여,

'(single qutation) 문자를 발견하면 폼을 서브밋 하지 못하게 하였는데요,

폼 변조 공격을 하게되면 이를 무효화 시킬 수가 있게됩니다.

 

우선 lndex.jsp페이지를 실행시켜 우클릭후 소스보기를 합니다. 

 지금 하는 작업들은 사용자(공격자)의 입장에서 생각하셔야합니다.

그럼 소스가 보일텐데요,

전체선택(Ctrl + A) 후 소스를 카피(Ctrl+C)하여

메모장을 열고(실행 > notepad) 붙여넣기(Ctrl+V)합니다.

이후 소스를 수정합니다.

스크립트를 무효화 하기위해 모든 스크립트 구문을 삭제하고,

form 태그 안에 action에 해당되는 페이지가 login.jsp로 되어 있을텐데요

만약 이것이 절대경로로 되어있다면 (xxx.xxx.xxx.xxx/board/login.jsp) 그대로 쓰시면 돼고,

그렇지 않다면 해당 사이트의 주소를 복사해와서 절대경로를 만들어줍니다.

 

표시된 부분이 추가될 절대경로입니다.

수정된 소스는 다음과 같겠습니다.

<html>

<head>

<!-- 이부분에 있던 스크립트를 통째로 날려버립니다. -->

</head>

<body>

<form action="http://127.0.0.1/board/login.jsp" > <!-- login.jsp앞에 url과 projct명을 붙여서 절대경로를 만들었습니다. -->

ID : <input type="text" name="id" /> <br/>    <!-- 그리고 나서 onsubmit 속성을 삭제하였습니다. -->

PW: <input type="password" name="pw" /> <br/>

<input type="submit" value="로그인" />

<input type="button" value="회원가입" onclick="location.href='enter.jsp';" />

</form>

</body>

</html>

이 파일을 로컬에서 실행시킵니다. jsp파일이라면 html로 확장자를 변경한뒤 실행시킵니다.

로그인 창이 나오면 id와 패스워드를 입력해 봅시다.

정상적인 패스워드를 입력하지말고

저번시간에 배운 sql injection을 이용하여 로그인 해봅시다.

 

되시나요?

이로서 폼변조공격을 통한 sql injection공격 연계를 성공하셨습니다.

이것은 바로 스크립트만으로는 파라미터의 유효성 검사를 완벽히 수행 할 수 없다는 뜻입니다.

클라이언트뿐만아니라 서버에서도 바로

JSP에도 마찬가지로 유효성검사를 해야하는 이유입니다.

login.jsp에 추가해줍니다.

<!-- login.jsp -->

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.board.bean.Member" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<%

String user_id = request.getParameter("id");

String user_pw = request.getParameter("pw");

if(user_id.indexOf("\'") > 0 || user_pw.indexOf("\'") > 0 ){

request.setAttribute("msg", "wrong character");

request.setAttribute("url", "index.jsp");

}else{

Member user = null;

try {

.

.

.(이하 생략)

}

 

다른 조건은 조사하지 않고(null 또는 길이 등) 

' (single qutation) 문자에 대해서만 검사후 문자열에서 발견하면 예외처리하였습니다.


한번 실행해 보시고 잘못된 부분은 수정해보시기 바랍니다.

다음 포스팅에서는 XSS (크로스 사이드 스크립팅) 해킹 기법에 대해 알아보겠습니다.

수고하셨습니다.


다음장 >> http://cusmaker.tistory.com/138