SQL Injection 최적화
·
보안/웹
목적SQL Injection은 단순히 "주입이 된다 / 안 된다"의 문제가 아니다. 단 한 번의 쿼리로 모든 것을 알 수 있다면 좋겠지만, 현실에서 대부분의 SQLi는 부분적인 정보 획득을 위한 수많은 요청의 반복으로 이루어진다. 특히 Blind SQL Injection, Time-based Injection 으로 제한된 환경에서는 더더욱 그렇다.예를 들어, 직접 출력이 없는 Blind SQL Injection 상황에서 FLAG 값을 하나하나 알아내려면 다음과 같은 방식이 사용된다.' and substr(flag, 1, 1) = 'a'-- - Blind SQL Injection에서는 서버의 직접적인 응답 대신 참/거짓에 따른 간접적인 반응(예: 시간 지연, 응답 내용 차이)을 통해 데이터를 추출한다. 이..
PHAR Deserialization Vulnerability
·
보안/웹
PHAR(PHP Archive) 구조PHAR 파일은 4가지의 구조로 이루어져있다. Stub작은 형태의 코드를 담을 수 있는 공간__HALT_COMPILER(); 코드가 있어야 PHAR 파일로 인식Stub을 지정하지 않으면 약 7KB 코드가 기본값으로 설정됨 Manifest해당 PHAR 내부 파일에 대한 메타데이터 저장setMeta(mixed $metadata) 함수를 통해 설정 가능 File ContentsPHAR 내 데이터 영역 Signature(Optional)PHAR에 대한 시그니처 그 중 PHAR Manifest의 각 파일에는 다음 정보가 포함되어 있으며 마지막 바이트 부분에서 직렬화 포맷을 사용하고 있다. 따라서, 공격자는 Manifest의 serialize 영역에 의도적인 PHP 객체 페이로드..
Dom Clobbering
·
보안/웹
Dom Clobbering이란?Dom Clobbering은 웹 보안에서 DOM 객체와 HTML 요소의 속성이 충돌하여 예상치 못한 동작을 유발하는 취약점이다. HTML 문서 내에서 요소의 id나 name 속성을 사용하면, 자바스크립트에서 해당 요소가 전역 객체의 속성으로 자동으로 등록된다. 이를 악용하면 기존의 전역 변수나 함수가 덮어 씌워져 보안 문제가 발생할 수 있다. 공격 방법DOM Clobbering 성공 여부를 확인하는 PoC 코드이다.더보기 HTML 요소에 id 속성을 부여하면, 해당 요소는 전역 객체(window)의 속성으로 자동으로 등록되어 전역에서 접근할 수 있다. 하지만, HTML에서 id는 문서 내에서 유일해야 하며 만약 중복된 id가 존재하게 되면 동작을 예측할 수 없게 된다. 반면..