Server Side Includes (SSI) Injection
Web/Web Hacking Techniques
Server Side Includes (SSI)Server Side Includes (SSI)는 웹 서버가 HTML 페이지를 동적으로 구성하기 위해 사용하는 간단한 서버 사이드 스크립트 기술이다. SSI 지시어는 HTML 주석 형식으로 삽입되며, 페이지가 로드될 때 서버가 해당 지시어를 해석하여 내용을 치환한다. 즉, CGI나 기타 서버 프로그래밍으로 전체 페이지를 생성하지 않고도 다양한 동적 콘텐츠를 포함할 수 있다.SSI 지시어중 와 같은 문자를 HTML에 넣으면 페이지 출력 시 현재 서버 시간을 해당 위치에 채워 넣는다. 또한, 일반적으로 파일 확장자가 .shtml, .stm, .shtml 인 HTML 파일에서 동작한다. 웹 서버는 이러한 확장자의 파일을 응답하기 전에 내부적으로 파싱하여 SSI..
LDAP Injection (Active Directory)
Web/Web Hacking Techniques
LDAP?LDAP(Lightweigth Directory Access Protocol, 경량 디렉터리 액세스 프로토콜)은 디렉터리 서비스와 작용하기 위한 응용 프로토콜로, Active Directory(AD) 를 비롯한 여러 디렉터리 서비스에서 활용된다. AD는 조직 내 컴퓨터, 사용자, 그룹 등에 대한 인증과 권한 부여를 담당하는 핵심 윈도우 서비스이며, LDAP는 AD가 이러한 디렉터리 데이터를 조회하고 통신하는데 사용하는 "언어" 이다. 즉, AD에 저장된 사용자 계정 정보나 보안 정보를 다른 시스템이나 애플리케이션이 조회하려 할 떄 LDAP 프로토콜을 통해 질의와 응답이 이루어진다. 이렇듯, LDAP 및 AD는 기업 보안의 필수 요소이다. 현재 많은 웹 어플리케이션은 OAuth, JWT, SSO를..
MongoDB (MongoDB Injection)
Web/Web Hacking Techniques
MongoDB란?MongoDB는 문서 지향 NoSQL 데이터베이스로, 일반적으로 사용되는 관계형 데이터베이스인 RDBMS와 달리 스키마가 없거나 느슨한 스키마를 가지며 JSON 형태로 데이터를 저장하는 BSON(Binary JSON) 형식을 사용한다MongoDB의 주요 특징특징 설명NoSQL 기반스키마 없는 구조로 데이터 유연성과 확장성이 뛰어남문서 지향데이터를 문서(Document) 형태로 저장하며 JSON 유사 구조BSON 포맷바이너리 JSON으로 데이터를 저장하여 속도와 효율성 증가수평적 확장성Sharding 및 복제(Replication)를 통해 분산 확장 지원인덱싱 및 성능효율적인 인덱스 구조로 빠른 쿼리 처리 가능복제 및 고가용성Replica Set을 통해 장애 대비와 고가용성 확보MongoD..
[Load of SQL Injection] LOS - iron_golem(21단계)
WriteUP
21단계 = iron_golem 소스코드 해당 소스코드를 보면 이전문제와 다르게 추가적으로 적용된 필터링으로는 sleep, benchmark가 필터링되어 있다. 이는 Time based SQL Injection은 불가능하게 하기 위함으로 추측된다. 이번문제는 참값을 입력해도 참 거짓이 구분이 되지 않는다. 이럴 경우 사용할 수 있는 게 1. Time Based SQL Injection 2. Error Based SQL Injection 두 종류의 인젝션을 사용할 수 있는데 필터에서도 보았듯이 1번 해결법 Time Based SQL Injection은 사용불가다. 코드를 자세히 보면 즉 에러가 발생 시 에러페이지를 출력시켜 준다. 2번 해결법인 Error Based SQL Injection을 사용하면 될 ..
[Load of SQL Injection] LOS - xavis(19단계)
WriteUP
19단계 = xvais 소스코드 이번문제에서는 이상하리만큼 필터링되는 게 없으며, regex와 like가 필터링되고 있다. 이번 문제의 의도를 파악하기 힘든부분이었으며, 해당 문제에서 많은 걸 배우게 되었다. 우선 기존문제들과 동일하게 입력값과 db저장된값을 비교하므로, Blind SQL Injection을 이요하면 될 것이다. 정상적으로 구해지는 거 같은데 불안한 기분이 맴돌았다.. 늘 그래왔듯 패스워드길이와 문자열을 추출하기위해 파이썬코드를 작성하여 추출하려 시도하였지만 패스워드의 길이는 12자리인 걸 확인 후 문자열이 구해지지 않았다.... 우선 패스워드의 길이는 12자리였다. 파이썬 코드의 오류인가 싶어 아무리봐도 오류코드를 찾지 못하여 직접 URL로 값을 확인해본 결과 필터도 걸려있지 않는데 A..
[Load of SQL Injection] LOS - DARKKNIGHT(12단계)
WriteUP
12단계 = DARKKNIGHT 소스코드 이번문제에서는 넘겨줘야 할 파라미터값이 pw, no 두 가지로 보인다. 필터링되는 값을 확인해보면 pw 파라미터에서 '을 필터링하며, no파라미터에서 ', substr, ascii, = 를 필터링하고 있다. 이전 문제에서 사용한 것들을 잘 조합해서 사용하면 무난하게 우회가 가능할 거 같다. 우선 '를 필터링하여 문자열을 필터링하고 있다. 이럴 경우 id = 'admin'이 안되지만, My SQL에서는 아스키코드값인 16진수로 표현할 경우 문자열로 인식이 가능하다. 또한 no에서의 substr은 substrin(), mid() , left(), light()등 다양한 함수로 우회가 가능하다. ascii()는 ord(), hex()등으로 우회가 가능하다. =은 이제 ..