IT/Web

[보안] XSS HTML Image 태그 주의할 점

상쾌한기분 2023. 4. 8. 22:21
728x90
반응형

[보안] HTML Image 태그 주의할 점

회사를 다니며 상용 서비스를 운용과 개발을 해왔는데, 그 길지도 않은 기간동안 악의적인 목적으로 혹은 학습 목적으로 보이는 경우의 운용중인 서버를 바라보는 공격적인 행위가 있었다.
그 때의 추억을 되새기며 몇가지 간단한 것들에 대해서 한번 정리 해볼려고 한다.

이미지 파일에 스크립트를 삽입하는 방법

샘플 예시

https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/

 

How To Bypass CSP By Hiding JavaScript In A PNG Image

Hide a malicious JavaScript library in a PNG image and tweet it, then include it in a vulnerable website by exploiting a XSS bypassing its Content-Security-Policy (CSP).

www.secjuice.com

https://vallhalla-edition.tistory.com/58

 

Python 이미지 파일 해킹하기

※ 본 포스팅은 (조성문 정영훈 저) 를 기반으로 작성되었습니다. 개요 (출처: 네이버 웹툰 ) Python은 무시무시한 확장성을 자랑하는 언어이다. 파일을 다루는 방면에서도 아주 강력한 기능을 지

vallhalla-edition.tistory.com


이미지 주소를 HTTP API를 삽입하는 방법

간단한 웹서버를 올림

  • Django, Spring 이든 백엔드 서버는 어떤걸로 하든 상관 없다. 일단 귀찮으니 대충 데모 개발 이후 폴더에 쓸쓸히 있던 Django로 올려서 해보겠다.
# urls.py
path("something", SomethingView.as_view()),

# views.py
class SomethingView(View):

    def get(self, request, *args, **kwargs):
        print(request.headers)
        return HttpResponse(status=204)

백엔드 개발한 내용을 dns 등록되어 접속 가능한 주소로 띄우자.

  • AWS EC2 같은 클라우드 인스턴스를 사용하거나 IDC나 혹은 집에 공인 IP로 사용 중인 서버만 있으면 된다.

HTML Img src에 API 주소 삽입

  • 해당 이미지 태그를 내 블로그에 삽입
<.img src="https://my.host.com/something"/>

결과

  • 결과로 접속한 유저의 정보를 가져올 수 있다.
{
  "Content-Length": "",
  "Content-Type": "text/plain",
  "Host": "*********************",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
  "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
  "Accept-Encoding": "gzip, deflate, br",
  "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6,und;q=0.5",
  "Cookie": "abuse_interstitial=3487-222-107-226-43.ngrok-free.app",
  "Referer": "*****************************************",
  "Sec-Ch-Ua": "Google Chrome;v=111, Not(A:Brand;v=8, Chromium;v=111",
  "Sec-Ch-Ua-Mobile": "?0",
  "Sec-Ch-Ua-Platform": "Windows",
  "Sec-Fetch-Dest": "image",
  "Sec-Fetch-Mode": "no-cors",
  "Sec-Fetch-Site": "cross-site",
  "X-Forwarded-For": ""*****************************************",",
  "X-Forwarded-Proto": "https"
}
 
728x90
반응형