sql injection 보안 , Directory listing 취약점 및 보안

2025. 7. 7. 12:50·Hacking

1. 안전한 로직 

  • Prepared Statements (또는 Parameterized Queries) 사용-SQL 문에 사용될 값을 쿼리 문자열과 분리하여 처리,사용자의
  • 입력이 쿼리 구조 자체를 바꾸지 못하도록 차단함
  • 입력값 검증 및 이스케이프 처리 (Input Validation & Escaping)

2. server side validation

  • DBMS로 전달되는 사용자의 입력 값을 검증한 후 전달 함
  • 공격에 사용되는 메타문자 필터링 -> ;, ", --, # 등
  • 공백 필터링 -> trim()으로 공백 제거
  • 공격에 사용되는 SQLcommamd 필터링 -> select, insert, delete, update 등등

addslashes 함수사용: 이스케이프할 문자열

  • =mysql_real_escape_string 함수와 동일
  • 문자열을 슬래쉬로 인용
  • 싱글쿼터' , 더블쿼터", 백슬래쉬 \, NULL 앞에 \를 붙인다.
$key=addslashes($key);

 

-우회 가능성: 쿼터를 사용하지 않는 int형 데이터 처리는 쿼터없이 공격이 가능


 str_replace,str_ireplace,preg_replace, preg_match:문자열 필터링 (검색,치환) 함수

$key=str_replace("select","",$key); 대소문자 구분
$key=str_ireplace("select","",$key); 대소문자 구분 X
$key = preg_replace("/select|union|information_schema/i", "", $key);
while(preg_match("/select|union/i",$key)){
                            $key = preg_replace("/select|union/i","",$key);
                            }}
                          while(preg_match("/select|union/i",$key)){
                            $key = preg_replace("/select|union/i","",$key);
                            }}
       ->board_list.php

3.  WAS의 DB접근 권한을 제한

  • DB 접근 권한 관리
  • WAS가 DB와 연동하는 기능을 악용하여 DB에 접근 및 데이터 탈취를 진행하는 공격이 sql injection
  • WAS가 접근 가능한 데이터에 해커도 접근 가능-> 권한 축소가 필요
  • 연동하는 기능이나 테이블 마다 접근하는 계정을 다르게  설정
  • 계정마다 권한도 다르게 설정

 

4. WAS의 에러 메시지 제한

  • 에러 메시지 관리
  • 에러 출력 코드를 관리 목적으로 사용가능
  • 이는 임시적인 방식으로만 사용
  • 에러메시지가 클라이언트에게 전송이 되면 error based sql injection
  •  공격이 가능하기 때문에 에러는 클라이언트에게 전송 안되게 설정

5. WAF 도입 고려

  • 우리가 생각하는 방화벽은 네트워크 방화벽이고
  • 이건 전문적으로 web hacking을 막아주는 솔루션이다
  • 정책을 기반으로 설정이 가능은 하지만 WAF 설정에서 XSS등을 막는 설정을 넣어준다.
  • 주소 기반으로 허용, 차단 할 수 없다(네트워크 기반이 아니니까)

 

 


Directory Listing

웹서버에서 지원하는 directory listing 기능을 악용하여 정보를 수집하는 공격
서버에서 제공하는 웹페이지의 목록 정보를 탈취하는 공격

디렉터리만 요청을 했을 때 실패를 띄워야 하는데 사용자의 편의성을 위해서 리스트를 보여주는 기능

 

아래와 같이 192.168.50.50/board/

라고  url에 입력하면 list가 출력이 된다.

 

 

 

반드시 나오는 글자인  index of/(directory name)을 검색 창에 입력을 하면

보안설정이 되어 있지 않은 웹서버를 파악할 수 있게 된다.

이처럼 적지 않은 웹서버에서 이 보안설정이 되어있지 않다(우리가 사용하는 것들은 되어있음) 

 

 

보안 설정은 간단하다.

vim /etc/httpd/conf/httpd.conf
149번째 줄 이동 후 indexes부분만 지워준다
재시작

 

결과화면

 

저작자표시 비영리 변경금지 (새창열림)

'Hacking' 카테고리의 다른 글

파일 다운로드&업로드 취약점 및 보안  (0) 2025.07.09
google dork 연산자 및 옵션  (0) 2025.07.09
time based sql injection  (0) 2025.07.03
boolean sql injection (노가다)  (0) 2025.07.03
SQL injection 실습(query result sql injection)  (0) 2025.07.02
'Hacking' 카테고리의 다른 글
  • 파일 다운로드&업로드 취약점 및 보안
  • google dork 연산자 및 옵션
  • time based sql injection
  • boolean sql injection (노가다)
햅삐root
햅삐root
happyroot 님의 블로그 입니다. IT 보안 정리💛
  • 햅삐root
    햅삐한 root
    햅삐root
  • 전체
    오늘
    어제
    • 전체보기 IT (123)
      • Linux (21)
      • Network (23)
      • packet tracer& GNS3 (10)
      • Cryptology (7)
      • WEB (16)
      • DB (16)
      • Hacking (28)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Hack
    sqlinjection
    injectionvector
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
햅삐root
sql injection 보안 , Directory listing 취약점 및 보안
상단으로

티스토리툴바