핵시움 본선 전.. 시스템 말고 웹해킹 개념도 조금씩 복습을 해야 할 것 같아서 정리합니다.
XSS
XSS는, Cross-Site Scripting의 약자로 웹페이지에 사용자의 입력이 포함될 수 있을 때 발생합니다. 종류는 크게 3가지가 존재합니다.
Stored XSS
악성 스크립트가 DB에 저장되고, 다른 사용자가 해당 페이지를 열 때 자동으로 실행되는 XSS
ex) 게시판에 XSS 공격 코드를 저장해두면, 사용자가 그 게시판을 열람할 때마다 공격이 수행됩니다.
Dom-based XSS
서버가 아닌 클라이언트 측 JavaScript 코드가 사용자 입력을 처리할 때 발생합니다.
Reflected XSS
악성 스크립트가 요청 파라미터(URL 등)에 포함되어 있고, 서버에서 이를 반영해 페이지에 출력하면서 실행됩니다.
http://site.com/search?q=<script>alert('XSS')</script>
이런식으로 XSS 공격 코드가 파라미터에 포함될 수 있다면, 서버에서 이를 반영해서 공격이 수행됩니다.
CSRF
CSRF란, Cross-Site Request Forgery의 약자로 인증된 사용자의 권한을 악용해서 사용자가 의도하지 않은 요청을 다른 사이트로 전송하게 만드는 공격입니다.
예를 들어서, 특정 사용자의 권한으로만 작동되는 페이지가 있을 때, 만약 그 권한을 얻을 수 있다면 그 사용자의 권한으로 페이지에서 작업을 수행할 수 있습니다.
SQL Injection
SQL 구문으로 작동되는 페이지가 있을 때, 임의의 SQL 구문을 삽입해서 의도하지 않은 동작을 일으키는 것을 SQL Injection이라고 합니다. 예를 들어서 다음과 같이 작동하는 웹 페이지가 있다고 가정하겠습니다.
select * from users where uid = "{userid}" and upw = "{userpassword}"
이 때 만약 userid 부분에 다음과 같이 넣어주면, 뒤에 오는 userpassword의 값에 상관없이 무조건 통과됩니다.
admin" --
-- 로 인해서 뒷 부분이 주석처리되기 때문입니다.
SSRF
클라이언트가 아닌, 서버 스스로가 요청을 보내는 공격입니다. 예를 들어 아래와 같은 코드가 있다고 가정하겠습니다.
url = request.form.get("url", "")
urlp = urlparse(url)
if url[0] == "/":
url = "http://localhost:8000" + url
elif ("localhost" in urlp.netloc) or ("127.0.0.1" in urlp.netloc):
data = open("error.png", "rb").read()
img = base64.b64encode(data).decode("utf8")
return render_template("img_viewer.html", img=img)
try:
data = requests.get(url, timeout=3).content
img = base64.b64encode(data).decode("utf8")
except:
data = open("error.png", "rb").read()
img = base64.b64encode(data).decode("utf8")
return render_template("img_viewer.html", img=img)
이 코드에서는 url을 인자로 받아서 요청을 보내는데, 만약 이 인자로 받는 url이 또 다른 사이트의 주소라면, 그 주소로 요청을 보내게 되는 SSRF 취약점이 발생합니다.
'웹해킹 > 개념' 카테고리의 다른 글
| JWT 개념과 취약점 (0) | 2025.12.27 |
|---|---|
| SQL Injection 심화(Blind, Error based ...) (0) | 2025.07.03 |
| [Dreamhack-web] Exploit Tech: XS-Search (1) | 2024.12.12 |
| [Dreamhack-web] Exploit Tech: Document Object Model Vulnerability (1) | 2024.12.12 |
| [Dreamhack-web] Exploit Tech: Relative Path Overwrite (1) | 2024.12.12 |