목록2019/03/30 (4)
White Security
b00t2root 2019 web 4번 XSS 문제입니다. 링크에 접속하면 우측 상단에 버튼이 하나 보입니다. 관리자에게 메시지를 보내는 서비스 페이지입니다. 입력이 주어지면 상단에 alert 명령어가 보여지는데 관리자가 메시지를 금방 확인할 것이라고 합니다. script img 등 태그명, 온점 등이 필터링 되고 입력시 한탄하는 메시지가 나오므로 주의합시다. 온점이 들어가는 document.cookie 등은 document['cookie']로 바꾸고 ip 주소는 정수형태로 변경하여 필터링을 우회하였습니다. 수신되는 패킷의 쿠키를 확인해보면 접속해 볼 것도 없이 플래그가 주어집니다. 참조문서 https://blog.minivet.kr/?p=315
b00t2root 2019 web 3번 RCE 문제입니다. 접속하면 위와 같은 메시지를 보실 수 있는데 로컬에서 보낸 패킷이라고 여기게 하면 됩니다. X-Forwarded-For 헤더를 변조하여 해결하였는데요. 이는 프록시를 통해 통신할 경우에 사용되는 헤더로 실제 통신하는 프록시 서버에서는 연결자의 IP를 위 헤더에 첨가해 호스트로부터 응답자를 식별할 수 있도록 하는 역할을 합니다. 따라서 127.0.0.1로 설정해주고 다시 패킷을 전송해 봅니다. 페이지와 그 소스가 출력되는데 상단에 ping을 보내어 응답을 확인할 수 있도록 하는 폼이 보입니다. 서버가 존재하지 않는 IP를 입력해 테스트해 보면 Not Alive 문자열이 나타나는 것을 볼 수 있습니다. 정확하게는 shell_exec를 통해 실행된 명..
b00t2root 2019 web 2번 SQL 인젝션 문제입니다. 링크에 접속하면 소스가 출력되는 것을 확인할 수 있습니다. 다른 페이지에서도 모두 마찬가지입니다. 가입 페이지에 접근하면 위와 같은 소스를 볼 수 있는데 유저를 생성하기 위해 유저네임이 사용중인지 검증하는 쿼리에서 문자열 escape 처리가 되어 있지 않은데요. 여기서 blind sql injection을 사용해 문제를 해결할 수 있습니다. from urllib import request, parse import sys, math def send(query): data = parse.urlencode({ 'username' : "') and if((%s),1,0) #" % query }).encode() req = request.Reque..
b00t2root 2019 web 1번 PHP Type juggling, unserialize 취약점 문제입니다. 페이지에 접속하면 highlight_file 함수에 의해 소스가 출력되는데. 그 아래를 보면 $_GET['1']과 md5($_GET['1']) 을 비교하고 있습니다. md5에는 해싱 이후에도 동일한 0e[0-9]+ 형식이 반환되는 매직 해시가 존재하는데 http://3.16.68.122/Easy-php/?1=0e215962017 둘 모두 지수표현으로서 매우 작은 값이므로 이 매직 해시와 php의 느슨한 비교 취약점을 사용하면 비교문을 통과할 수 있습니다. 다음은 $_GET['2']와 $_GET['3'] 을 인자로 사용하는데 엄격한 비교 연산자 !== 를 사용해 둘이 모두 같지 않아야 하고 숨..