Hacking/Web.

[취약점][PHP] $_SERVER['PHP_SELF'] 취약점

2016. 9. 3. 15:29

※ 본 게시글은 휴먼급식체로 작성되었습니다. 작성자가 중3이거등옄ㅋㅋㅋㅋㅋㅋ



안녕하세여 지금 완전 흥분 상태임. 제가 취약점을 발견했거등여ㅋㅋㅋㅋㅋㅋ

근데 콜롬버스처럼 이미 발견된 거 발견한거임ㅋㅋㅋㅋㅋㅋㅋ 안습.


어째뜬


PHP에 $_SERVER 변수가 있는데 일단 설명하기 귀찮아서 링크 걸어둠

http://unabated.tistory.com/entry/PHP-SERVER-%ED%95%A8%EC%88%98


위에 링크해둔 블로그에 $_SERVER['PHP_SELF'] 설명에 이렇게 써있음 ㅇㅅㅇ


$_SERVER['PHP_SELF'] = 현재페이지의 주소에서 도메인과 넘겨지는 값 제외 = index.php


솔까(솔직히 까고 말해서) 나도 이해안돼서 그냥 해봤음. 그 때는 취약점이 있을지 생각도 못함. 근데 사이트 만들다 우연히 발견함 헤헤


일단 PHP_SELF는 이런 내용을 출력한다라는 것을 알기 위해 이런 웹페이지를 만들어 봤음

언듯 보기에는 취약점 없이 잘 작동할 것 같아보였음 ㅇㅅㅇ


일단 테스팅하는 데 쓰였던 최종 코드임. 좀 고쳤음. 

ㅂ..블로..그에 ...ㅂ..보옂..주려고...흥! ㄷ..딱..히 이글을 읽고 있는 너에게 준비된 건 ㅇ..아니라구! 

이건 내가 사이트 만들고 있을 때 할 짓 없어서 리눅스 쓸 때 습관적으로 썼던 슬래쉬를 붙이고 응가를 썼는데 이게 떠서 직감적으로 취약점이 있겠구나 싶었음. 


PHP_SELF에는 파라미터가 들어가지 않음. 테스트 해봤는데 안되더라구여. 아무래도 파라미터는 좀 위험하니까 그런거 아닌가 싶어여


내가 이 취약점을 발견한 코드가 html의 form 코드이기 때문에 form에 다시 넣어서 이런 값을 넣어줬음.

그랬더니 앞에 

" > ..

이상한게 뜨네? 갓크롬찡이 XSS를 막아줌ㅋ 그럼 IE로 해볼까

같은 URL로 인터넷 익스플로러를 사용해봤음. 그런데 공격 성공임 정ㅋ벅ㅋ


근데 왜 이런 결과가 나왔는지 생각해보기로 함


원래 html 태그에는 

<form method="get" action="/php/vuln.php"> 가 생성되어야하는데

이 PHP_SELF라는 녀석이 슬래쉬(/)를 URL의 일부라고 생각하기 때문에 그 뒷녀석도 같이 URL로 저장되나봄.

그럼 아까와 같은 코드를 삽입했을 때는


원래 코드와는 다른

<form method="get" action="/php/vuln.php/"><script>alert('xss');</script> ">

위 코드가 실행되는 데, 코드를 정리해보자면


<form method="get" action="/php/vuln.php/">

<script>alert('xss');</script>

"> 

(바탕색 칠 한 부분이 출력된거)


이렇게 해서 뚫리는 거지여 (PHP가 서버 딴에서 실행되서 HTML로 바뀌고 HTML은 브라우져(사용자)에서 해석되니까 어떻게 보면 당연한듯)


그럼 XSS공격이 실행되는 거 ㅇㅋ?



대충 구글링 해보니까 PHP_SELF에서 취약점이 발견돼서 이렇게 쓰라고 돼있음.

<form method="get" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>>


그럼 20000 

이렁거 처음 써봐서 잘 못썼어여..ㅜ ㄷ..다음부턴 더 여..열심히.. 


'Hacking > Web.' 카테고리의 다른 글

SQL Injection bypassing  (0) 2016.11.12
MySQL에서의 SQL Injection시 유용한 주석 리스트  (0) 2016.11.07
[LoS] Orc 풀이  (1) 2016.10.30
[SQL injection][PHP] magic_qutoes_gpc 우회  (0) 2016.09.10
[wargame.kr] md5 password  (0) 2016.09.08