现成的WEB路径扫描工具颇多,但都不尽如人意,主要是它是根据返回的状态码来判断页面是否存在的,比如返回200,就认为找到页面,404则认为页面不存在。但这里有个问题,返回的状态码是服务端可控的,而工具对于状态码的判断规则大都是定死了的,这就使得扫描结果没有多大价值。
所以抽空写了个web扫描工具,它的原理是先探测一个肯定不存在的路径和页面,/mustnotexistspath/和/mustnotexistspath ext ,将他两的返回码作为页面不存在的标志,如果与之不同,则页面可能存在,原理相当简单,起到了动态判断的效果。
代码为:
#!/usr/bin/python import httplib2
import sysif len(sys.argv) < 3: print(“written by lanz….”) print( “Usage: ” sys.argv[0] ” host ” ” .ext”) print (“Eg: ” sys.argv[0] ” http://www.baidu.com .php”) sys.exit(0)
host = sys.argv[1]ext = sys.argv[2]
print(host)
http = httplib2.Http(“.cache”)response,content = http.request(host)
response,content=http.request(host ”/mustnotexistspath/”)nonpathstatus = response.status
response,content=http.request(host ”/mustnotexistspath” ext)nonpathextstatus = response.statusprint(“NoneExistPathStatus:”,nonpathstatus)print(“NoneExistFileStatus:”,nonpathextstatus)f = open ( ‘WebPath.txt’, ‘r’ )fileList = f.readlines()
def subscan(subpath): for fileLine in fileList: newline = fileLine.strip() path = subpath ”/” newline response,content= http.request(path,”GET”) if response.status!=nonpathstatus: st = str(response.status) print(st ” : “ path) subscan(path) pathext=path ext response,content= http.request(pathext,”GET”) if response.status!=nonpathextstatus: st = str(response.status) print(st ” : “ pathext)
subscan(host)f.close()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。