본문 바로가기

[PROGRAMMING]/▶Python

Parameter.exe 점검도구

개요

웹사이트 취약점을 자동점검과 수동점검으로 진행하게 되는데 수동점검시 수많은 파라미터를 체크하기에는 시간이 부족할 수 있습니다.

그래서 중복되는 파라미터는 제외해서 url로 재구성하도록 만들어봤습니다.

하지만 이 도구를 사용해서 점검을 할 경우 중복되는 파라미터를 제외해주기 때문에 수동점검 속도는 올려주나 취약점을 놓칠수 있는 오류를 범할 가능성이 있습니다.

그렇기 때문에 한번 발견된 종류의 취약점중에 다수의 샘플을 얻을때 사용하는것이 효율적이라고 생각됩니다.

예로 xss 또는 sql injection 등의 취약점을 a라는 파라미터에서 발견되었고 해당사이트에 다수의 xss 취약점이 존재한다고 보고서를 작성할때 사용하면 좋을것이고

반면에 사이트에서 모든 xss 취약점 인자를 빠짐없이 다 찾는방식에서는 이 도구를 사용하면 안될것입니다.

python 문법을 인터넷으로 문법공부하고 바로 만들어본거여서 코드 가독성 및 안정성은 떨어지지만 여러 시행착오를 거처 완성했습니다.

이 도구를 만드는 목적은 실 생활에 필요한 도구?, 업무효율을 높일 수 있지않을까? 하고 설계 없이 생각한 대로 만들었는데 업무효율은 높일수 있지만 취약점 점검시 안정성은 떨어집니다.

 

 

사용된 언어 및 툴

Python3 / idle / pyscripter

 

동작 원리

간단한 동작원리 에대한 설명입니다.

url1.txt와 url2.txt 두개의 파일을 생성하고 url2.txt에서 사용자에게 url을 입력받는다.
url1에는 url2에서 입력받은 값을 복사하며 중복된 url은 복사하지 않는다. 즉 중복되지 않은 url만 url1.txt에 저장된다
ex) 처음 url2.txt에서 www.test.com?a=1&b=1&c=2 라는 url을 저장한다. 그럼 url1.txt에 해당 url이 없으면 저장하게된다.
그리고 두번째로 url2.txt에 www.test.com?ac=1&ba=1&c=2를 저장한다.
두번째로 저장하고 창을 닫으면 url1.txt와 url2.txt의 값이 같은지 securl.py에서 검사하게되고 값이 같을경우 추가하지않고 값이 없을경우 url1에 추가한다.


각 url의 파라미터 www.test.com?a=1&b=1&c=2 처음 1회는 ? ~ & 까지 그다음부터 끝까지는 위치를 기억한후 &전까지 탐색하여 딕셔너리로 저장한다.
그리고 dic1과 dic2를 하나씩 비교해서 같은값의 dic2의 키값으로 tmp변수에 저장한다. 즉 값이 같을때만 키값을 저장한다.
그리고 dic1의 키값을 뽑고 dic2의 비교한 키값을 저장하고 url2(dic2)에서 dic1과 dic2의 같은 키값을 제외한 같지 않은 키값의 파라미터만 재구성하여
url로 만들어 준다. 

 

시연

 

url2에 url주소를 입력하면 url1에 입력됬던 값드를 중복여부 체크후에 저장합니다.

 

[파라미터가 중복된 경우]

 

 그리고 위와 같이 url2의 파라미터가 url1에 있다면 all parameter match url pass 라고 알려줍니다.

하지만 파라미터는 중복이지만 full url은 url1에 없기 때문에 URL add를 합니다.

 

[파라미터가 중복이 되지 않은 경우]

 

test code aid : 1 2 3

test code tmp : 1

과 같이 나왔는데 이것은 url1의 3개의 파라미터  www.test.com?a=1&b=1&c=2 와 url2 의 파라미터  www.test.com?a=1&aid=74&bid=74를 비교하고 없는 파라미터만 보여주고

그 파라미터들만 재구성 합니다.

 

 

[파라미터가 중복이 된 경우]

 

그리고 동일한 url을 입력했을 경우는  URL overlab과 같이 중복검사 결과를 보여주고 url을 추가하지 않습니다.

 

[중복되지 않은 파라미터만 url로 재구성]

 

마지막으로 없는파라미터만 재구성하여 urllist.txt 파일에 저정합니다.

점검은 이 url로 점검을 진행하면 되는데 취약점 발견 누락이 발생할 수 있기 떄문에 처음에 설명한대로 사용하면 될것입니다.

개발 컨셉을 잘못잡아서 파이썬으로 처음만들어 본거지만 별 쓸모는 없는것 같네요...;

하지만 이것을 시작으로 더욱더 강력하고 사용자 편의 중심의 도구를 만들어 봐야겠습니다..