본문 바로가기

해킹-보안

주석을 통한 정보 노출 진단 스크립트

반응형


소스코드 내 중요 정보 노출

 
소스코드 주석문에 민감 정보(개인 정보, 시스템 정보 등)가 포함된 경우, 외부공격자에 의해 패스워드, 관리자 페이지 등
보안 관련정보가 노출될 수 있는 취약점이다. 개발자의 실수로 사용자에게 노출되면 안 될 민감 정보를
그저 주석 처리하거나 display:none 따위로 감춰둔 경우가 해당된다. 페이지마다 소스코드를
직접 확인해볼 수도 있지만 스크립트로 숨겨진 요소들을 모두 드러내면 진단 시간을 절약할 수 있다. 

 

 


진단 스크립트

 // 주석 제거
 document.write(document.querySelectorAll("html")[0].outerHTML.replaceAll('<!--','').replaceAll('-->','').replaceAll('/*','').replaceAll('*/','') )
 
 // 숨겨진 요소 확인
 let obj = document.querySelectorAll('*');
 let len = obj.length;
     for( let i=0; i<len; i++) {
 
         if ( obj[i].style.display == "none" ) 
         { 
           console.log(obj[i]);
           obj[i].style.display='block';
         } else if ( obj[i].style.visibility == "hidden" ) 
         {
           console.log(obj[i]);
           obj[i].style.visibility="visible";
         }
     }
 
 // 페이지 내 url 추출
 let html = document.getElementsByTagName("HTML")[0].innerHTML;
 let url_regex = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi;
 let url = html.match(url_regex)
 console.table(url);




진단용 html

 js 생략.. <html lang="ko"><head><title>로그인 폼</title>
 <meta charset="utf-8"> <body><center>
       <form name="login_form">
          <table border="1" align="center" width="300">
              <tbody><tr>
                  <th colspan="2">로그인 하기</th>
               </tr>   
               <tr>
                   <th>아이디</th>
                   <td><input type="text" size="12" maxlength="12" name="id" autofocus=""></td> 
               </tr>   
              <tr>
                   <th>비밀번호</th>
                   <td><input type="text" size="12" maxlength="16" name="pw"></td>
              </tr> 
              <tr>
                   <th>비밀번호 확인</th>
                   <td><input type="text" size="12" maxlength="16" name="pwcheck"></td>
              </tr> 
           <tr>
               <td colspan="2"><center>
                  <input type="button" value="확인" onclick="login_func()">
                  <input type="button" style="display:none" value="guest 로그인">
                  </center></td>
           </tr>
          </tbody></table>        
      </form>
 	 <table>
 	 <tr><td> <!-- 관리자 계정 - admin/admin1234 --></td></tr>
 	 <tr><td> <!-- hidden page1 : http://127.0.0.1:8941/web/index.jsp --></td></tr>
 	 <tr><td> <!-- hidden page2 : https://127.0.0.1:11322/web/index.jsp --></td></tr>
 	 <tr><td> <!-- Manager Page : http://127.0.0.1/adm_manager/ --></td></tr>
     </center>
 </body></html>

 

샘플용 HTML에서 진단 스크립트 실행 결과, 주석과 숨겨진 요소가 해제되면서
관리자 계정/중요페이지, guest 로그인 버튼이 노출되었다.
 
 
 
 





반응형

'해킹-보안' 카테고리의 다른 글

패스워드 사전 파일 생성  (0) 2021.09.04
무선 AP 숨겨진 SSID 확인  (0) 2021.06.30
Genian NAC 에이전트 삭제  (0) 2021.06.15
NAC(Network Access Control) 우회  (0) 2021.05.13
nmap 포트스캔  (0) 2021.05.06