파라마티 변조 취약점이란 무엇인가?
: 악의적인 사용자가 파라미터를 변조하여 악의적인 행위를 하는 것
정상 요청 http://www.victim.co.kr/mypage.jsp?id=hacker
공격 요청 http://www.victim.co.kr/mypage.jps?id=admin
공격원리분석

공격동작예시
: admin을 입력하면 그냥 admin이라는 id를 가진 사용자의 정보가 공격자에게 반환한다
(id=guest 적힌 부분을 id=admin으로 바꾼다는 뜻)
<실습>

: 뒤의 파라미터를 변경했는데 존재하지 않는 사용자입니다가 뜨는 것을 통해
세션이 아닌 파라미터로 공격하는 것을 알 수 있다.
case1: 아이디 값을 입력 받는 경우
: 아이디를 유추해야 되기 대문에 case2에 비해 피해가 크지 않다
?id= admin
case2:seq 값을 입력받는 경우
*파라미터 변조 취약점 공격을 통한 개인 정보 노출 피해가 굉장히 크다
*KT 개인정보 노출 사
?idx=1~10000000000000
:사용자 노출을 될때까지 계속 들어
?seq=
대응 방안
1. 사용자 입력 값에 대한 검증
2. 세션을 통한 처리

세션을 통한 처리 소스코드 예시
string id = request.getSession().getAttribute("id");
...
pstmt = con.preparaStatement("select * from member where id=?");
pstmt.setString(1, id);
rs = pstmt.executeQuery();
...
입력값 검증 소스코드 예시
string idx= request.getParameter("idx");
string id = request.getSession().getAttribute("id");
...
pstmt = con.prepareStatement("select * from bbs where idx=?");
pstmt = setInt(1,idx);
rs = pstmt.executeQuery();
if(rs,next()){
if(!rs.getString("id") equals(id){
out.printIn("<Script>alert('정상적인 접근이 아닙니다'); history.back(-1);</script>);
return;
}
}
...
URL 접근 제한 미흡 취약점이란?
: 인증 혹은 인가가 가능한 페이지에 대한 접근제한이 없거나 존재하지만 취약점이 발견돼서
인가되지 않은 사용자도 들어갈 수 있는 경우를 말을 한다
인증 vs 인가
인증: 로그인 구분
인가: 일반회원/관리자 구분 (관리자 페이지에 대한 접근)
예시: 회사 안으로 들어가려면 인증!
그렇지만 일반 사원이 사장실에 들어갈 수 있는가?
=> NO! 사장만 들어갈 수 있다(이런것이 인가)
URL 접근 제한 미흡 취약점 공격원리

다른 해킹에 비해 간단하다
why? 공격자가 application에 접근만 하면 되기 때문이다
http:// www. victim. co. kr/ page
=> 공격자는 page를 유추하면 된다
1. 수동적 유추(주로 수동적 유추를 한다)
2. 자동화
: 사전
*주의해야 할 점
: 네이밍 패턴
=> 패턴을 파악한 후 접속해서 되면 취약한거고, 아니면 안전한 사이트라고 보면 된다
ex) board List.do
=> Write
=> Create
=> Insert
*취약한 기능
1. 게시글 작성

2. pingcheck
3. xmlparser

<대응방안>

접근 제어(인증) 소스코드 예시(jsp)
...
string id = request.getSession().getAttribute("id");
if(id == null || id == ""){
out.printIn("<script>alert('정상적인 접근이 아닙니다.');history.back(-1);</script>";
exit();
}
...
id가 비어있다면 비회원이라고 판단
접근 제어(인증) 소스코드 예시(PHP)
...
if(empty($_SESSION["id"])){
echo "<script>alert('정상적인 접근이 아닙니다');history.back(-1);</script>";
exit();
}
...
접근 제어(인가) 소스코드 예시
...
String user_level = request.getSession().getAttribute("level")
if(user_level < 3){
out.printIn("<script> alert('정상적인 접근이 아닙니다');history.back(-1);</script>");
return;
}
...
접근 제어(인가) 소스코드 예시(PHP)
...
if($_SESSION["level"] <3){
echo "<script>alert('정상적인 접근이 아닙니다.'); history.back(-1);</script>";
exit();
}
...
<실습>
write 페이지 인증 문제를 해결하기 위해서
인증기능 코드를 추가해준다.
#인증기능
if(empty($_SESSION["id"])){
echo "<script>alert('Access Denied');location.href = 'index.php?page=login';</script>";
exit();
}
if($mode == "write") {
$title = $_POST["title"];
$id = $_SESSION["id"];
$writer = $_SESSION["name"];
$password = $_POST["password"];
$content = $_POST["content"];
$secret = $_POST["secret"];
$uploadFile = "";
if(empty($title) || empty($password) || empty($content)) {
echo "<script>alert('빈칸이 존재합니다.');history.back(-1);</script>";
exit();
}
추가해주면..


이렇게 access denied가 뜨면서 login 페이지로 이동하는 것을 볼 수 있다.
워게임 실습
File-download
File Download 취약점이 존재하는 웹 서비스입니다.
flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다.
이 문제를 푸는 것은 그렇게 어렵지 않았다.
1. 서버에 접속하여 아무 메모나 올린다
2. 메모를 올리면
read?name={name} 형식으로 파라미터에 저장되는 것을 볼 수 있다
3. 그 형식을 이용하여 아래 사진처럼 flag.py를 입력하면 바로 flag가 뜨는 문제였다.

web-misconf1
기본 설정을 사용한 서비스입니다.
로그인한 후 Organization에 플래그를 설정해 놓았습니다.
1. 일단 서버를 킨다
2. 로그인은 admin/admin으로 하면 된다(주어진 문제파일에 나와있다)
3. 문제 설명에 organizaiton에 플래그를 설정해놓았다는 것을 참조 => organization으로 이동
4. 쭉 내리면 org_name에 flag가 있다

'1. Web hacking (웹 해킹) > 2) 개념 정리' 카테고리의 다른 글
| [보충] 버섯조아 26.05.02 보충 활동 (0) | 2026.05.29 |
|---|---|
| [보충] 버섯조아 26.04.04 보충 활동 (0) | 2026.05.25 |
| 8주차 5/22 버섯조아 파일 업로드/다운로드 취약점 정리 (0) | 2026.05.22 |
| [26.05.09] 버섯조아 6주차 활동 (0) | 2026.05.15 |
| [26.04.10] 버섯조아 4주차 활동 (0) | 2026.04.10 |