관리 메뉴

의미없는 블로그

Python - 응답값 헤더 내 서버 버전정보 출력 본문

# 나/pentest (WEB)

Python - 응답값 헤더 내 서버 버전정보 출력

SaltLee 2019. 8. 7. 17:13

 

[server_header.py]

server_header_1.3.py
0.00MB

 

응답값 헤더 일일이 점검하기 귀찮을 때...

 

근데 Server 헤더가 그냥 일반 페이지에서는 안보이다가

존재하지 않는 페이지를 요청했을땐 보이는 경우가 있다

그래서 Server 헤더는 아예 첨부터 존재하지 않는 페이지 /aaaaa 를 붙여서 날린다(res2)

 

반대로 X-Powered-By 헤더는 존재하는 페이지에서만 출력된다

그래서 정상페이지도 날려야 함(res)

 

그리고 같은 요청값을 날려도 200 떴다가 303 떴다가 하는것들이 있다

그래서 303 뜨면 다시 날리게끔 while 문 썼다

 

 

import sys
import requests
import re

if len(sys.argv) > 1:
 filename = sys.argv[1]
 
f = open('server_header.txt', 'w')
f.write('URL\t')
f.write('Server Header\t')
f.write('X-Powered-By\t\n')


def get_server(res, res2, header, header2):
 if "Server" in header2 :                          
  f.write(res2.headers['server']+'\t')
 else :
  f.write(''+'\t')  
 if "X-Powered-By" in header :                    
  f.write(res.headers['X-Powered-By']+'\t\n')  
 else:
  f.write(''+'\t\n')       
 

for i in open(filename, 'r'):
   url = i.strip('\n')                              
   f.write(url+'\t')
  
   url_bunri1 = re.split('://', url)                
   url_bunri2 = re.split('/', url_bunri1[1])        
   url_bunri3 = url_bunri1[0]+"://"+url_bunri2[0]   
   url2 = url_bunri3+"/aaaaa"                        
     
   history = "[<Response [303]>]"                          
   history2 = "[<Response [303]>]" 
   
   while (str(history2) == "[<Response [303]>]" or str(history) == "[<Response [303]>]") :  
    res = requests.get(url, verify=False)                  
    res2 = requests.get(url2, verify=False)                
    history = res.history                                  
    history2 = res2.history                                
    header = res.headers                                   
    header2 = res2.headers                                 
                                                                                                                
   get_server(res, res2, header, header2)   

Comments