iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python怎么查网站漏洞
  • 191
分享到

python怎么查网站漏洞

2024-04-02 19:04:59 191人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python查网站漏洞的方法:使用Python脚本实现WEB漏洞扫描工具,代码如下:#!-*-coding:UTF-8-*- import optparse, random, re, string, urllib, urllib2,diff

python怎么查网站漏洞

python查网站漏洞的方法:

使用Python脚本实现WEB漏洞扫描工具,代码如下:

#!-*-coding:UTF-8-*-

import optparse, random, re, string, urllib, urllib2,difflib,itertools,Httplib

NAME = "Scanner for RXSS and sqlI"

AUTHOR = "Lishuze"

PREFIXES = (" ", ") ", "' ", "') ", "\"")

SUFFIXES = ("", "-- -", "#")

BOOLEAN_TESTS = ("AND %d=%d", "OR NOT (%d=%d)")

TAMPER_SQL_CHAR_POOL = ('(', ')', '\'', '"''"')

TAMPER_XSS_CHAR_POOL = ('\'', '"', '>', '<', ';')

GET, POST = "GET", "POST"

COOKIE, UA, REFERER = "Cookie", "User-Agent", "Referer"

TEXT, HTTPCODE, TITLE, html = xrange(4)

_headers = {}

USER_AGENTS = (

"Mozilla/5.0 (X11; linux i686; rv:38.0) Gecko/20100101 Firefox/38.0",

"Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",

"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21",

)

XSS_PATTERNS = (

(r"","\"\", inside the comment", None),

(r"(?s)","\"\", enclosed by ',"'', enclosed by ","\"\", enclosed by |"),

(r"<[^>]*'[^>']*%(chars)s[^>']*'[^>]*>", "\"<.'.xss.'.>\", inside the tag, inside single-quotes", r"(?s)|"),

(r'<[^>]*"[^>"]*%(chars)s[^>"]*"[^>]*>', "'<.\".xss.\".>', inside the tag, inside double-quotes", r"(?s)|"),

(r"<[^>]*%(chars)s[^>]*>", "\"<.xss.>\", inside the tag, outside of quotes", r"(?s)|")

)

DBMS_ERRORS = {

"Mysql": (r"SQL syntax.*mysql", r"Warning.*mysql_.*", r"valid MySQL result", r"MySqlClient\."),

"Microsoft SQL Server": (r"Driver.* SQL[\-\_\ ]*Server", r"OLE DB.* SQL Server", r"(\W|\A)SQL Server.*Driver", r"Warning.*mssql_.*", r"(\W|\A)SQL Server.*[0-9a-fA-F]{8}", r"(?s)Exception.*\WSystem\.Data\.SqlClient\.", r"(?s)Exception.*\WRoadhouse\.Cms\."),

"Microsoft Access": (r"Microsoft Access Driver", r"JET Database Engine", r"Access Database Engine"),

"oracle": (r"ORA-[0-9][0-9][0-9][0-9]", r"Oracle error", r"Oracle.*Driver", r"Warning.*\Woci_.*", r"Warning.*\Wora_.*")

}

def _retrieve_content_xss(url, data=None):

surl=""

for i in xrange(len(url)):

if i > url.find('?'):

surl+=surl.join(url[i]).replace(' ',"%20")

else:

surl+=surl.join(url[i])

try:

req = urllib2.Request(surl, data, _headers)

retval = urllib2.urlopen(req, timeout=30).read()

except Exception, ex:

retval = getattr(ex, "message", "")

return retval or ""

def _retrieve_content_sql(url, data=None):

retval = {HTTPCODE: httplib.OK}

surl=""

for i in xrange(len(url)):

if i > url.find('?'):

surl+=surl.join(url[i]).replace(' ',"%20")

else:

surl+=surl.join(url[i])

try:

req = urllib2.Request(surl, data, _headers)

retval[HTML] = urllib2.urlopen(req, timeout=30).read()

except Exception, ex:

retval[HTTPCODE] = getattr(ex, "code", None)

retval[HTML] = getattr(ex, "message", "")

match = re.search(r"(?P<result>[^<]+)", retval[HTML], re.I)

retval[TITLE] = match.group("result") if match else None

retval[TEXT] = re.sub(r"(?si)|||<[^>]+>|\s+", " ", retval[HTML])

return retval

def scan_page_xss(url, data=None):

print "Start scanning RXSS:\n"

retval, usable = False, False

url = re.sub(r"=(&|\Z)", "=1\g<1>", url) if url else url

data=re.sub(r"=(&|\Z)", "=1\g<1>", data) if data else data

try:

for phase in (GET, POST):

current = url if phase is GET else (data or "")

for match in re.finditer(r"((\A|[?&])(?P[\w]+)=)(?P[^&]+)", current):

found, usable = False, True

print "Scanning %s parameter '%s'" % (phase, match.group("parameter"))

prefix = ("".join(random.sample(string.ascii_lowercase, 5)))

suffix = ("".join(random.sample(string.ascii_lowercase, 5)))

if not found:

tampered = current.replace(match.group(0), "%s%s" % (match.group(0), urllib.quote("%s%s%s%s" % ("'", prefix, "".join(random.sample(TAMPER_XSS_CHAR_POOL, len(TAMPER_XSS_CHAR_POOL))), suffix))))

content = _retrieve_content_xss(tampered, data) if phase is GET else _retrieve_content_xss(url, tampered)

for sample in re.finditer("%s([^ ]+?)%s" % (prefix, suffix), content, re.I):

#print sample.group()

for regex, info, content_removal_regex in XSS_PATTERNS:

context = re.search(regex % {"chars": re.escape(sample.group(0))}, re.sub(content_removal_regex or "", "", content), re.I)

if context and not found and sample.group(1).strip():

print "!!!%s parameter '%s' appears to be XSS vulnerable (%s)" % (phase, match.group("parameter"), info)

found = retval = True

if not usable:

print " (x) no usable GET/POST parameters found"

except KeyboardInterrupt:

print "\r (x) Ctrl-C pressed"

return retval

def scan_page_sql(url, data=None):

print "Start scanning SQLI:\n"

retval, usable = False, False

url = re.sub(r"=(&|\Z)", "=1\g<1>", url) if url else url

data=re.sub(r"=(&|\Z)", "=1\g<1>", data) if data else data

try:

for phase in (GET, POST):

current = url if phase is GET else (data or "")

for match in re.finditer(r"((\A|[?&])(?P\w+)=)(?P[^&]+)", current):

vulnerable, usable = False, True

original=None

print "Scanning %s parameter '%s'" % (phase, match.group("parameter"))

tampered = current.replace(match.group(0), "%s%s" % (match.group(0), urllib.quote("".join(random.sample(TAMPER_SQL_CHAR_POOL, len(TAMPER_SQL_CHAR_POOL))))))

content = _retrieve_content_sql(tampered, data) if phase is GET else _retrieve_content_sql(url, tampered)

for (dbms, regex) in ((dbms, regex) for dbms in DBMS_ERRORS for regex in DBMS_ERRORS[dbms]):

if not vulnerable and re.search(regex, content[HTML], re.I):

print "!!!%s parameter '%s' could be error SQLi vulnerable (%s)" % (phase, match.group("parameter"), dbms)

retval = vulnerable = True

vulnerable = False

original = original or (_retrieve_content_sql(current, data) if phase is GET else _retrieve_content_sql(url, current))

for prefix,boolean,suffix in itertools.product(PREFIXES,BOOLEAN_TESTS,SUFFIXES):

if not vulnerable:

template = "%s%s%s" % (prefix,boolean, suffix)

payloads = dict((_, current.replace(match.group(0), "%s%s" % (match.group(0), urllib.quote(template % (1 if _ else 2, 1), safe='%')))) for _ in (True, False))

contents = dict((_, _retrieve_content_sql(payloads[_], data) if phase is GET else _retrieve_content_sql(url, payloads[_])) for _ in (False, True))

if all(_[HTTPCODE] for _ in (original, contents[True], contents[False])) and (any(original[_] == contents[True][_] != contents[False][_] for _ in (HTTPCODE, TITLE))):

vulnerable = True

else:

ratiOS = dict((_, difflib.SequenceMatcher(None, original[TEXT], contents[_][TEXT]).quick_ratio()) for _ in (True, False))

vulnerable = all(ratios.values()) and ratios[True] > 0.95 and ratios[False] < 0.95

if vulnerable:

print "!!!%s parameter '%s' could be error Blind SQLi vulnerable" % (phase, match.group("parameter"))

retval = True

if not usable:

print " (x) no usable GET/POST parameters found"

except KeyboardInterrupt:

print "\r (x) Ctrl-C pressed"

return retval

def init_options(proxy=None, cookie=None, ua=None, referer=None):

global _headers

_headers = dict(filter(lambda _: _[1], ((COOKIE, cookie), (UA, ua or NAME), (REFERER, referer))))

urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler({'http': proxy})) if proxy else None)

if __name__ == "__main__":

print "----------------------------------------------------------------------------------"

print "%s\nBy:%s" % (NAME, AUTHOR)

print "----------------------------------------------------------------------------------"

parser = optparse.OptionParser()

parser.add_option("--url", dest="url", help="Target URL")

parser.add_option("--data", dest="data", help="POST data")

parser.add_option("--cookie", dest="cookie", help="HTTP Cookie header value")

parser.add_option("--user-agent", dest="ua", help="HTTP User-Agent header value")

parser.add_option("--random-agent", dest="randomAgent", action="store_true", help="Use randomly selected HTTP User-Agent header value")

parser.add_option("--referer", dest="referer", help="HTTP Referer header value")

parser.add_option("--proxy", dest="proxy", help="HTTP proxy address")

options, _ = parser.parse_args()

if options.url:

init_options(options.proxy, options.cookie, options.ua if not options.randomAgent else random.choice(USER_AGENTS), options.referer)

result_xss= scan_page_xss(options.url if options.url.startswith("http") else "http://%s" % options.url, options.data)

print "\nScan results: %s vulnerabilities found" % ("possible" if result_xss else "no")

print "----------------------------------------------------------------------------------"

result_sql = scan_page_sql(options.url if options.url.startswith("http") else "http://%s" % options.url, options.data)

print "\nScan results: %s vulnerabilities found" % ("possible" if result_sql else "no")

print "----------------------------------------------------------------------------------"

else:

parser.print_help()

--结束END--

本文标题: python怎么查网站漏洞

本文链接: https://www.lsjlt.com/news/114745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python怎么查网站漏洞
    python查网站漏洞的方法:使用Python脚本实现Web漏洞扫描工具,代码如下:#!-*-coding:UTF-8-*- import optparse, random, re, string, urllib, urllib2,diff...
    99+
    2022-10-23
  • google怎么查有漏洞网站
    google查有漏洞网站的方法:intitle:搜索网页标题中包含有特定字符的网页,例如输入“intitle: cbi”,这样网页标题中带有cbi的网页都会被搜索出来。inurl:搜索包含有特定字符的URL,例如输入“inurl:cbi”,...
    99+
    2022-10-24
  • 网站被攻击怎么办 如何查找网站漏洞攻击源
    很多企业网站被攻击,导致网站打开跳转到别的网站,尤其一些等非法网站上去,甚至有些网站被攻击的打不开,客户无法访问首页,给客户造成了很大的经济损失,很多客户找到我们SINE安全公司寻求防止网站被攻击的解决方案,针对这一情况,我们安全部门的技术...
    99+
    2023-06-03
  • html静态网站如何检查漏洞
    html静态网站检查漏洞的方法:借助百度来检查漏洞。打开百度首页,点击左上角导航栏中的“更多”。滑到“站长与开发者服务”,选择“百度云观测”服务。点击进入检测页面,在输入框中填写你的网站网址。最后点击“开始检测”即可。...
    99+
    2022-10-21
  • 网站黑链漏洞怎么处理
    网站黑链漏洞的处理方法:先备份网站程序数据,将网站文件放进杀毒软件里面进行全部扫描。对扫描出问题的文件进行检查,查看是否有被修改过。将可疑代码清理后,对网站目录权限如:“读”、“写”、“执行”、“是否允许脚本”等进行分配即可。...
    99+
    2022-10-13
  • 网站漏洞是怎么产生的
    网站漏洞的产生:网站漏洞是由于开发人员在设计程序时,没有严格对用户的输入数据或页面中所携带的信息进行必要的合法性判断,导致了攻击者可以利用这个编程漏洞来入侵数据库或者攻击Web应用程序的使用者,由此获得一些重要的数据和利益。...
    99+
    2022-10-16
  • 网站跨站脚本漏洞怎么修复
    网站跨站脚本漏洞的修复方法:利用第三方安全工具对网站上的XSS跨站漏洞进行修复。对get、post、cookies进行安全效验。对XSS跨站攻击代码进行拦截。对前端输入的值以及输出的值进行全面的安全过滤。对一些非法的参数,像、",'等进行自...
    99+
    2022-10-21
  • 网站服务器漏洞怎么修复
    网站服务器漏洞的修复方法:查看是否有账号泄露的情况以及有没有异常登录。查看系统补丁是否更新到最新版。如果同一服务器提供商同期内有多个站点被黑,可联系提供商做出应对方案。关闭危险端口,开启系统防火墙。更新网站文件并覆盖可疑或者被修改过的文件。...
    99+
    2022-10-11
  • 网站弱口令漏洞怎么修复
    网站弱口令漏洞的修复方法:可利用第三方网站漏洞扫描工具进行一键修复。设置强度复杂的口令,可以有效避免被攻击者轻易猜解成功。限制IP访问配置phpMyadmin。...
    99+
    2022-10-07
  • 被挂码网站漏洞怎么修复
    被挂码网站漏洞的修复方法:立即停止网站服务,避免用户继续受影响以及防止继续影响其他站点。排查出黑客上传、修改过的文件进行清理。关闭危险端口,开启系统防火墙。排查有无异常账号或异常登录情况。更新网站文件覆盖可疑或者被修改过的文件。...
    99+
    2022-10-09
  • 网站存在xss漏洞怎么修复
    网站存在xss漏洞的修复方法:对前端输入的值以及输出的值进行全面的安全过滤。对一些非法的参数,像、",'等进行自动转义或者强制拦截并提示。过滤双引号、分号、单引号以及对字符进行HTML实体编码操作。...
    99+
    2022-10-24
  • 网站被黑该怎么修复漏洞
    近日wordpress被爆出高危的网站漏洞,该漏洞可以伪造代码进行远程代码执行,获取管理员的session以及获取cookies值,漏洞的产生是在于wordpress默认开启的文章评论功能,该功能在对评论的参数并没有进行详细的安全过滤与拦截...
    99+
    2023-06-03
  • 网站漏洞指什么意思
    网站漏洞指的开发人员在编写代码的时,没有严格对用户的输入数据或页面中所携带的信息进行必要的合法性判断,导致了攻击者可以利用这个编程漏洞来入侵数据库或者攻击Web应用程序的使用者,由此获得一些重要的数据和利益。...
    99+
    2022-10-09
  • 如何查看网站是否有权限漏洞
    查看网站是否有权限漏洞的方法:借助百度来检查漏洞。打开百度首页,点击左上角导航栏中的“更多”。滑到“站长与开发者服务”,选择“百度云观测”服务。点击进入检测页面,在输入框中填写你的网站网址。最后点击“开始检测”即可,检查结果会返回到页面中。...
    99+
    2022-10-17
  • 网站漏洞修复之Metinfo 文件上传漏洞
    Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本,以及以前的所有Metinfo...
    99+
    2023-06-03
  • 如何扫描网站漏洞 针对于海洋CMS的漏洞检查分析
    临近9月底,seacms官方升级海洋cms系统到9.95版本,我们SINE安全在对其源码进行网站漏洞检测的时候发现问题,可导致全局变量被覆盖,后台可以存在越权漏洞并绕过后台安全检测直接登录管理员账号。关于该漏洞的具体详情,我们来详细的分析一...
    99+
    2023-06-03
  • 网站存在轻微漏洞怎么解决
    网站存在轻微漏洞的解决方法:可以借助第三方软件“Webpecker(网站啄木鸟)”来扫描检测。下载并安装Webpecker。打开软件,在左侧点击“web安全”。输入一个网址进行检测验证。若存在轻微漏洞,会显示在中间列表中,根据提示进行清理即...
    99+
    2022-10-05
  • 虚拟主机网站漏洞怎么修复
    虚拟主机网站漏洞的修复方法:检查是否有账号泄露的情况以及有没有异常登录。检查系统补丁是否更新到最新版。网站文件下载到本地,利用安全扫描软件扫描网页后门木马,清理网页后门木马。关闭危险端口,开启系统防火墙。更新网站文件覆盖可疑或者被修改过的文...
    99+
    2022-10-24
  • 网站存在系统漏洞怎么处理
    网站存在系统漏洞的处理方法:打开控制面板功能。点击“系统和安全”。找到相关的防火墙设置,点击进入。再对防火墙进行更新即可。或者借助腾讯电脑管家来进行检测修复。...
    99+
    2022-10-08
  • 怎么检测网站是否存在漏洞
    检测网站是否存在漏洞的方法:可以借助漏洞扫描工具来检测,例如使用w3af工具扫描网站漏洞:安装并运行工具。在Profiles下,选择一个扫描规则。例如选择全面审计,则是选择Profiles下的“full_audit”。然后在“Target”...
    99+
    2022-10-23
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作