본문 바로가기

Vulnerability Assessment/Web Vulnerability

(5)
HTTP Methods 확인 Steps. 1. 개요 2. 테스트 방법 1. 개요HTTP는 웹 서버의 동작하는 데 사용할 수있는 몇개의 메소드를 제공하며, 대부분은 배포 및 HTTP 응용 프로그램을 테스트하는 개발자를 지원하기 위해 설계 되었다. HTTP Method는 아래와 같다.① GET Method : GET 요청 방식은 URI(URL)가 가진 정보를 검색하기 위해 서버 측에 요청하는형태이다.② POST Method : POST 요청 방식은 요청 URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다.③ HEAD Method : HEAD 요..
관리자 인터페이스 (페이지) 확인 Steps. 1. 개요 2. 테스트 방법 1. 개요관리자 인터페이스는 어플리케이션 프로그램 또는 특정 사용자가 사이트에 특별한 활동을 할 수 있도록 어플리케이션 프로그램 서버에 존재 한다. 관리자 인터페이스는 아무나 접근해서는 안된다. 만약 관리자 인터페이스가 노출되어 공격자가 접근 할 수 있다면, 인증 우회, 무차별 대입 공격등을 이용하여, 관리자로 로그인이 가능하게 된다. 이러한 관리자 인터페이스는 인증되지 않은 접근으로로부터 보호하기 위한 충분한 제어를하지 않는 경우 많다.2. 테스트 방법관리자 인터페이스는 존재하지만, 테스터의 눈에는 보이지 않을 수 있다. 이런 경우 아래와 같은 방법으로 관리자 인터페이스를 찾아본다. 1. 가장 기본적으로 /admin, /administrator, /manager..
웹 서버 정보 확인 (Web server fingerprinting) Steps. 1. 개요 2. 테스트 방법 1. 개요웹 서버 핑거프린팅 (Web server fingerprinting)는 침투테스트에서 중요한 작업이다. 실행중인 웹 서버의 버전 및 종류를 알고 있으면, 알려진 취약점을 선택하여 적절한 공격을 진행 할 수 있다. Web 서버의 종류를 안다는 것은 테스트 프로세스에 도움이 되며 테스트 과정을 변경할 수 있다.웹 서버의 소프트웨어의 각 버전을 확인하는 방법은 특정 명령을 전송하여, 명령에 의한 응답값을 분석하여 도출 할 수 있다. 하지만 특정 명령을 전송하였을 때, 동일한 반응을 하지 않는다. 그렇기 때문에 여러 명령을 전송하여 응답값을 비교하여 정확도를 높여야 한다.2. 테스트 방법웹 서버를 식별하는 간단하고 가장 기본적인 형태는 HTTP 응답 헤더에서 서..
웹페이지 소스코드에 중요 정보 노출 확인 Steps. 1. 개요 2. 테스트 방법 1. 개요개발자가 소스코드에 대한 상세한 설명 및 메타 데이터를 포함하는 것은 매우 흔한 일이다. 그러나 HTML 코드에 포함된 의견이나 메타 데이터는 잠재적인 공격자에게 제공되어서는 안되는 내부 정보가 포함되어 있을 수 있다. 의견이나 메타데이터 리뷰는 어떤 정보가 노출되어 있는지 확인하기 위해 반드시 수행되어야 한다.2. 테스트 방법웹 페이지 개발 당시 개발자는 어플리케이션 프로그램에 대한 디버깅 정보를 HTML 주석을 이용해서 많이 작성한다. 개발자는 이러한 주석을 개발이 완료된 후 서비스 오픈 하기 전에 모두 삭제 해야 하지만 그렇지 않고 종료하는 경우가 빈번히 발생한다. 공격자는 어플리케이션 프로그램에 대한 자세한 정보를 얻기 위해 웹 브라우저에서 소스 ..
검색 엔진을 이용하여 노출된 정보 확인 Steps. 1. 개요 2. 테스트 방법 1. 개요검색엔진을 이용하여 노출된 정보를 확인하는 방법은 간접적인 방법과 직접적인 방법이 있다. 직접 방법은 인덱스와 캐시에서 관련 콘텐츠를 검색하는 것이며, 간접 방법은 검색 포럼, 뉴스 그룹 등에서 민감한 정보를 수집하는 것이다. 검색 엔진 로봇이 크롤링을 완료하면, 관련 검색 결과를 리턴하기 위해 태그 및 와 같은 속성을 기초하여 웹 페이지를 인덱싱 한다.검색 엔진 로봇이 수집하는 데이터는 서버에 캐시상태로 저장하기 때문에, 해당 사이트가 삭제된 후 오랜 시간이 지나기 전엔 검색결과에노출된다. 그렇기 때문에 이전 페이지가 그대로 노출 될 수 있으며, 이 데이터를 모으면 손쉽게 취약점을 찾을 수 있다.2. 테스트 방법검색 엔진을 사용하여 아래와 ..</span> </a> </div> </div> <div class="pagination"> <a class="prev no-more-prev">이전</a> <a ><span class="selected">1</span></a> <a class="next no-more-next">다음</a> </div> </article> </section> <hr> <footer id="footer"> <p class="copyright">DESIGN BY <a href="#">TISTORY</a> <a href="https://darksoulstory.tistory.com/manage" class="admin">관리자</a></p> </footer> </div> <script src="https://tistory3.daumcdn.net/tistory/0/pg_Poster/images/script.js"></script> <script type="text/javascript"> document.oncontextmenu = new Function ('return false'); document.ondragstart = new Function ('return false'); document.onselectstart = new Function ('return false'); document.body.style.MozUserSelect = 'none'; </script> <script type="text/javascript" src="https://t1.daumcdn.net/tistory_admin/assets/blog/be8577515ec5be3f926abc32e54abff9e41306af/blogs/plugins/PreventCopyContents/js/functions.js?_version_=be8577515ec5be3f926abc32e54abff9e41306af"></script> <script src="//search1.daumcdn.net/search/statics/common/js/g/search_dragselection.min.js"></script> <script> (function($) { $("body").bind('copy', function (e) { var url = document.location.href, decodedUrl = decodeURI(url), selection = window.getSelection(); if (typeof window.getSelection == "undefined") {//IE8 or earlier... event.preventDefault(); var pagelink = '\n\n 출처: ' + decodedUrl, copytext = selection + pagelink; if (window.clipboardData) { window.clipboardData.setData('Text', copytext); } return; } var body_element = document.getElementsByTagName('body')[0]; //if the selection is short let's not annoy our users if (("" + selection).length < 30) return; //create a div outside of the visible area var newdiv = document.createElement('div'); newdiv.style.position = 'absolute'; newdiv.style.left = '-99999px'; body_element.appendChild(newdiv); newdiv.appendChild(selection.getRangeAt(0).cloneContents()); //we need a <pre> tag workaround //otherwise the text inside "pre" loses all the line breaks! if (selection.getRangeAt(0).commonAncestorContainer.nodeName == "PRE") { newdiv.innerHTML = "<pre>" + newdiv.innerHTML + "</pre>"; } newdiv.innerHTML += '<br /><br />출처: <a href="' + url + '">' + decodedUrl + '</a> [DarkSoul.Story]'; selection.selectAllChildren(newdiv); window.setTimeout(function () { body_element.removeChild(newdiv); }, 200); }); })(tjQuery); </script> <script> lightbox.option({ "fadeDuration": 200, "resizeDuration": 200, "wrapAround": false, "albumLabel": "%1 / %2", "fitImagesInViewport":true , "stopEvent": false }) </script><script type="text/javascript"> var _tiq = 'undefined' !== typeof _tiq ? _tiq : []; _tiq.push(['__setConfig', {enableScroll:true, enableClick:true, enableButton:true}]); _tiq.push(["__setParam", "svcdomain", "user.tistory.com"]); (function(d) { var se = d.createElement('script'); se.type = 'text/javascript'; se.async = true; se.src = location.protocol + '//m2.daumcdn.net/tiara/js/td.min.js'; var s = d.getElementsByTagName('head')[0]; s.appendChild(se); })(document); _tiq.push(['__setParam', 'param_ex', JSON.stringify({"userId":"1126795","blogId":"1434954","role":"guest","filterTarget":false})]); _tiq.push(['__trackPageview']); var addEvent = function (evt, fn) { window.addEventListener ? window.addEventListener(evt, fn, false) : window.attachEvent('on' + evt, fn); }; var removeEvent = function(evt, fn) { window.removeEventListener ? window.removeEventListener(evt, fn, false) : window.detachEvent('on' + evt, fn);}; var ua = navigator.userAgent.toLowerCase(); var isIOS = /iP[ao]d|iPhone/i.test(ua); var contentExStat = function() { _tiq.push(['__content', 't_content_ex', { 'data_type':'usage' }]); removeEvent(isIOS ? 'pagehide' : 'beforeunload', contentExStat); }; addEvent(isIOS ? 'pagehide' : 'beforeunload', contentExStat); </script> <script type="text/javascript">window.roosevelt_params_queue = window.roosevelt_params_queue || []; window.roosevelt_params_queue.push({channel_id: "dk", channel_label: 'tistory'});</script> <script type="text/javascript" src="//t1.daumcdn.net/midas/rt/dk_bt/roosevelt_dk_bt.js" async></script><script type="text/javascript">if(window.console!=undefined){setTimeout(console.log.bind(console,"%cTISTORY","font:8em Arial;color:#EC6521;font-weight:bold"),0);setTimeout(console.log.bind(console,"%c 나를 표현하는 블로그","font:2em sans-serif;color:#333;"),0);}</script><iframe style="position:absolute;width:1px;height:1px;left:-100px;top:-100px" src="//darksoulstory.tistory.com/api" id="editEntry"></iframe> <div class="#menubar menu_toolbar "> <h2 class="screen_out">티스토리툴바</h2> </div> <div class="#menubar menu_toolbar "><div class='btn_tool btn_tool_type1' id='menubar_wrapper'></div></div> <script type="text/javascript" src="https://t1.daumcdn.net/tistory_admin/assets/blog/be8577515ec5be3f926abc32e54abff9e41306af/blogs/script/menubar.min.js?_version_=be8577515ec5be3f926abc32e54abff9e41306af"></script> <div class="layer_tooltip"> <div class="inner_layer_tooltip"> <p class="desc_g"></p> </div> </div><div id="tistoryEtcLayer" class="layer_post"></div><div id="tistorySnsLayer" class="layer_post"></div></body> </html>