p1n9
'Hacking/Web' 카테고리의 글 목록

Hacking/Web

Hacking/Web

[Web Hacking] Thymeleaf SSTI

Thymeleaf SSTI HTML 삽입 미리보기할 수 없는 소스 Thymeleaf HTML 삽입 미리보기할 수 없는 소스 타임리프(Thymeleaf)는 Spring의 뷰 템플릿이다. 컨트롤러가 데이터를 전달하면 동적으로 화면을 구성할 수 있게 도와준다. SSTI를 알아보기 전에 Thymeleaf에 대해 알아보자 사용법 Thymeleaf를 사용할려면 xormdp th:text , th:fragment, th:block 등 과 같이 속성과 비슷하게 생긴 것이 온다. 표현식 변수 표현식 : ${} 선택 변수 표현식 : *{} 메시지 표현식 : #{} URL 표현식 : @{} 단편(Fragment) 표현식 : ~{} Thymeleaf SSTI HTML 삽입 미리보기할 수 없는 소스 Thymeleaf뿐만 아니라..

Hacking/Web

[Web Hacking] Java Reflection(feat. SSTI)

Reflection HTML 삽입 미리보기할 수 없는 소스 Reflection이란? HTML 삽입 미리보기할 수 없는 소스 Reflection은 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있는 java의 API이다. Java는 컴파일 언어라서 런타임 도중 클래스나 메소드를메서드를 가져오지 못하는데 Reflection을 이용하면 클래스나 메서드를 호출할 수 있다. SSTI CTF를 풀다가 나와서 정리를 해본다. 임의의 클래스 가져오기 "".getClass(); // 임의의 클래스를 가져온다. 클래스 로드 Class.forName("java.util.Scanner"); "".getClass().forName("java.util.Scanner"); 생성자 설정 Clas..

Hacking/Web

[Web Hacking] URL 구조

URL 구조 HTML 삽입 미리보기할 수 없는 소스 URL HTML 삽입 미리보기할 수 없는 소스 Scheme scheme은 Protocol을 의미한다(ftp, ssh, http, https..) file scheme도 있는데 file scheme은 소유자의 file을 찾기 위한 구조이다. file://host:port/path와 같은 형식으로 이루어져 있다. host:port를 생략하면 file:///path(local을 의미)와 같이 사용할 수 있다. User:Pass ssh를 접속할 때 @를 사용하여 사용자:[패스워드]@host 형식으로 주소를 지정한다. @앞의 부분을 username : password로 인식하고 @뒷 부분을 host로 인식한다. 이러한 특징으로 URL 필터링을 우회할 때도 사용된..

Hacking/Web

[Web Hacking] Flask Debugger PIN Exploit

Flask Debugger PIN Exploit HTML 삽입 미리보기할 수 없는 소스 Debugger PIN HTML 삽입 미리보기할 수 없는 소스 Flask에서 Debugger모드가 활성화되어 있을 때 어떠한 에러가 발생하면 에러를 보여주는 페이지가 나온다. 해당 페이지에서 콘솔을 실행시킬 수 있는데 콘솔을 실행시키려면 PIN이 필요하다. app.run(host='0.0.0.0', port=80, threaded=True, debug=True) Generate PIN PIN은 __init__.py에서 만들어지는데 machine-id , mac address 등 각각 컴퓨터마다 다른 값들을 이용해서 PIN을 만들기 때문에 예측하기는 불가능하다. __init__.py는 /usr/local/lib/pyth..

Hacking/Web

[Web Hacking] DNS rebinding

DNS rebinding HTML 삽입 미리보기할 수 없는 소스 DNS rebinding이란 HTML 삽입 미리보기할 수 없는 소스 DNS Rebinding은 공격자가 더미 dns서버를 구축하여 공격자의 dns질의를 가로채어 동일한 도메인 이름이지만 주소를 변조시키는 방법으로 내부 네트워크에 접근할 수 있다. 이는 SOP도 우회 되면서 내부 네트워크에 접근할 수 있는 SSRF공격의 한 종류이다. DNS rebinding 작동 원리 HTML 삽입 미리보기할 수 없는 소스 1. 희생자는 공격자가 만들어 놓은 DNS서버에 DNS를 질의를 한다. 2. 공격자 DNS서버는 처음에는 올바른 주소(공격자 IP)를 반환해주는데 TTL을 적게 설정한다. 3. 희생자는 TTL이 적은 값을 받았기 때문에 얼마 지나지 않아 ..

Hacking/Web

[Web Hacking] Missconfiguration DBMS

Missconfiguration DBMS HTML 삽입 미리보기할 수 없는 소스 MySQL HTML 삽입 미리보기할 수 없는 소스 my.cnf MySQL은 mysql이라는 user의 권한으로 파일 관련된 작업을 수행한다. my.cnf 파일 안의 설정 값 secure_file_priv의 설정에 따라 load_file, into outfile을 실행할 수 있다. 파일에 대한 관련 작업을 할 때는 디렉터리 / 파일의 권한을 가지고 있어야 한다. select @@secure_file_priv; # 설정 값 조회 load_file 파일을 로드하는 함수 select load_file('/var/lib/mysql-files/tempfile'); lnto outfile 쿼리 값이나 변수를 파일에 쓸 수 있다. SELE..

Hacking/Web

[Web Hacking] SSRF

SSRF HTML 삽입 미리보기할 수 없는 소스 SSRF란? HTML 삽입 미리보기할 수 없는 소스 SSRF는 Server Side Request Forgery의 약자이다. 어디서 뭔가 비슷한 게 보이지 않나 바로 CSRF이다. CSRF가 클라이언트 중심의 공격이었다면 SSRF는 서버 쪽을 타깃으로 하는 공격 기법이다. SSRF를 알기 위해서 Microservice를 아는 것이 필요한데 쉽게 설명하겠다. Microservice 현대에는 마이크로 서비스중심의 아키텍처를 가지고 있는데 말이 좀 어려워서 그런 거지 그냥 서비스마다 각각 나누어 설계한다라는 의미이다. 나누어 설계를 하다 보니 서버에서도 어느 하나의 서비스가 필요하다 하면내부망의 서버끼리 통신하면서 데이터를 가져오고 보낸다. 아래의 이미지(exa..

Hacking/Web

[Web Hacking] Command Injection

Command Injection HTML 삽입 미리보기할 수 없는 소스 Command Injection의 원리 HTML 삽입 미리보기할 수 없는 소스 Command Injection은 사용자의 입력값이 서버가 시스템 명령어로 동작하는 형태인 코드에서 발생된다. System() exec()과 같은 시스템 명령어를 실행시킬 수 있는 함수에 의해서 발생되는데 이런 형태의 코드는 개발할 때의 편의성을 위해 사용되는 경우가 있다. 메타 문자 HTML 삽입 미리보기할 수 없는 소스 linux에서의 메타 문자들로 인해 개발자 의도와는 다른 명령어가 실행될 수 있는데 이를 발생시키는 메타 태그들은 다음과 같다. 메타 의미 ; 명령어 뒤에 세미 콜론이 붙여지면 다음 명령어를 한 줄에 작성할 수 있음 || 앞의 명령어가 ..