본문 바로가기

웹/비박스6

비밀번호 변경 & 비밀번호 힌트 변경 [비밀번호 변경] csrf_1.php 페이지는 접속한 사용자의 비밀번호를 변경할 수 있는 페이지다. GET 메서드로 HTTP 연결 요청을 하므로 URL에 변수가 노출된다. 변수는 새로운 비밀번호를 입력받는 'password_new'와 입력한 비밀번호를 재확인하는 'password_conf'를 사용한다. htmli_stored.php 페이지로 이동한다. 텍스트 입력 공간에 비밀번호를 변경하는 페이지를 호출하여 비밀번호를 'evil'로 변경하는 "" 이미지 태그를 입력한다. 이미지 태그의 height와 width 값이 모두 0이기 때문에 "Submit" 버튼을 클릭하면 아무 내용도 출력되지 않는다. login.php 페이지에서 원래 비밀번호인 'bug'를 입력하면 로그인에 실패하고, 변경된 비밀번호인 'ev.. 2022. 7. 31.
서버 측 요청 변조 [서버 측 요청 변조의 정의] 서버 측 요청 변조는 공격자가 요청을 변조하여 취약한 서버가 내부 망에 악의적인 요청을 보내게 하는 취약점이다. 서버 측 요청 변조에는 여러 유형이 있는데, 첫 번째는 RFI를 사용하여 포트를 스캔하는 것이고 두 번째는 XXE를 사용하여 내부 망 자원에 접근하며, 세 번째는 XXE를 통하여 스마트 TV를 해킹한다. [RFI를 이용한 내부 네트워크 호스트의 포트 스캔] SSRF 유형 중 RFI로 비박스 서버의 포트를 스캐닝하는 방법으로, RFI 취약점이 존재하는 rlfi.php 페이지에 접속한다. RFI에 사용할 PHP 코드는 비박스 가상 환경에서 /var/www/evil 디렉토리에 존재한다. ssrf-1.txt는 포트 스캐닝 후 결과를 출력하는 PHP 코드로, 스캔하는 포트.. 2022. 7. 31.
반사된 XSS 취약점 [반사된 XSS의 정의] 반사된 XSS란 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격이다. 스크립트 코드가 포함된 URL을 메일로 전송하거나 게시물로 등록하여 사용자가 클릭하도록 유도한다. [GET] xss_get.php 페이지에 XSS 취약점이 존재하는지 알아보기 위해 First name 입력란에 "" 스크립트 코드를 입력한다. 스크립트 코드가 실행되면 'Succeed'라는 경고창을 출력한다. 경고창에 있는 확인 버튼을 클릭하면 기존 페이지를 보여주는데 First name에는 스크립트 코드를 입력하였기 때문에 Last name에 입력한 값만 출력한다. [POST] 1. 작은 따옴표를 우회하.. 2022. 7. 31.
세션 관리 취약점 [세션의 정의] 세션은 웹 사이트에서 서비스를 제공할 때 사용자의 로그인을 유지하기 위하여 사용한다. 세션 관리가 소홀하면 세션을 가로채서 재사용하는 공격이 가능하다. 정상적인 프로세스가 진행되는 과정에서 발생하는 만큼 자동 진단 도구에서도 특정한 패턴 매칭으로 도출할 수 없는 취약점이다. [관리자 페이지 접근] 우선 smgmt_admin_portal.php에서 관리자 권한을 체크하는 전달 값을 수정하여 관리자 인증 없이 내부 페이지에 접근 가능한지 점검해본다. 1. URL 조작 smgmt_admin_portal.php 페이지에 접속하면 URL에서 admin 변수를 확인할 수 있다. admin 변수에 입력된 값을 0에서 1로 변경한다. 1로 변경하게 되면 위와 같이 URL 조작으로 현재 페이지의 잠금을 .. 2022. 7. 17.
Blind SQL Injection - Time Based [Blind SQL Injection - Time Based의 정의] Time Based의 Blind SQL Injection은 참과 거짓에 상관없이 모두 동일한 결과를 보여준다. 따라서 참을 구별하기 위해 인자에 입력한 시간만큼 응답을 지연시키는 sleep 함수를 사용하여 Injection을 시도한다. [참과 거짓 판별] ' or 1=1 and sleep(5)# Time Based의 Blind SQL Injection 취약점을 알아보기 위하여 검색란에 항상 참으로 만드는 쿼리를 입력한다. SQL Injection 결과 5초 동안 대기한 후 이메일을 보낸다는 메시지가 출력된다. [데이터베이스 판별] ' or 1=1 and length(database())=5 and sleep(5)# 가장 먼저 lengt.. 2022. 7. 7.
Blind SQL Injection - Boolean Based [Blind SQL Injection - Boolean Based의 정의] Boolean Based의 Blind SQL Injection은 쿼리의 결과를 참과 거짓만 출력하는 페이지에서 사용하는 공격이다. 출력 내용이 참과 거짓 밖에 없기 때문에 데이터베이스의 내용을 추측하여 쿼리를 조작한다. 쿼리는 데이터베이스 내용이 일치하여 웹 페이지에서 참을 출력할 때까지 임의의 값을 대입한다. 쿼리에 사용하는 함수는 substring, ascii, length 등이 있다. substring 함수는 첫 번째 인자로 받은 문자열을 지정한 길이만큼 출력하는데, 주로 문자 하나씩 출력하여 이름을 알아내는데 사용한다. ascii 함수는 문자를 아스키코드로 변환하는데, 작은 따옴표(')가 필터링으로 막힌 경우에 사용한다. .. 2022. 7. 5.