转载地址:https://www.cnblogs.com/gqhwk/p/7273102.html?utm_source=itdadao&utm_medium=referral
安全测试-渗透性测试
明文传输/存储(明文包括:1.请求中存在明文数据传输。2.内存明文传输用户名和密码。3.响应数据中存在明文用户名和密码等。4.客户端反编译存在明文。明文数据直接被攻击者利用并对系统进行攻击。)
越权访问(用户未授权可以访问其他用户的敏感数据。)
敏感信息泄漏(应用程序返回版本号、程序错误详细信息、中间件、SQL语句、系统文件等敏感信息)
上传/下载漏洞(系统可以上传任意类型文件,如php、bat、jsp、class等文件。这些文件可以直接在操作系统层面运行,应用系统存在被攻击风险。)
路径遍历漏洞(攻击者通过向上检索的方式获取服务器上重要文件。如:passwd或者win.ini文件等。存在重要文件信息泄漏风险。)
-
xss攻击(恶意攻击者将恶意脚本代码(如HTML代码和Javascript脚本)嵌入请求中,当用户在不知情的情况下访问时,就会执行其中的恶意代码,可能会导致cookie窃取、会话劫持、钓鱼欺骗等各种攻击。)
1、最常见的最经典的XSS bug检测语句必然是
2、利用IMG图片标记属性跨站
3、突破程序员的过滤限制
利用javascript换行与空格突破过滤
///空格使用Tab键产生
ava script :a ler t(/xss/)>
利用注释 。。。。。
安全渗透测试要求
XSS跨站脚本漏洞
系统程序没有对用户提交的变量中的代码进行过滤或转换,在用户输入页面可插入 JavaScript、 Active等恶意脚本。SQL注入漏洞
系统的应用服务器端对SQL语句中使用的特殊字符“;”、“--”和“and”、“or”等未做过滤,并且允许其向数据库系统提交。明文传输漏洞
对系统用户口令等机密信息的保护不足,攻击者可以利用攻击工具,从网络上窃取合法用户的口令数据,从而登录系统执行非法操作。越权访问漏洞
目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源。明文存储
对系统用户口令等机密信息的存储保护不足,导致攻击者可以获取系统的访问权限。敏感信息泄露漏洞
系统暴露系统内部信息,如网站绝对路径、网页源代码、SQL语句、中间件版本和程序异常等信息。后台泄露漏洞
后台地址过于简单地址泄露或者默认后台,为攻击者攻击系统提供便利。攻击者可以通过弱口令或默认用户密码等方式进入后台,对系统造成危害。会话重放攻击
不断恶意或欺诈性地重复一个有效的数据包,重放攻击。攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制。如:可以抓取HTTP包固定账号破解密码、固定密码破解账号和重放提交投票数据包。默认口令/弱口令
应用系统存在默认口令/弱口令。中间件漏洞
使用不安全的http方法和IIS文件枚举漏洞设计缺陷/逻辑错误
程序都是通过逻辑实现各种丰富多彩的功能的,要实现这些功能,必须掌握大量的技巧并进行周密的安排。但是,有很多情况这些功能逻辑存在缺陷,比如程序员的安全意识,比如考虑问题不周全等。即使是最简单的web应用程序,每个阶段都会执行大量的逻辑操作。如:可以重复建立用户名相同的用户;不同浏览器中未验证会话有效性。不安全的cookie
cookies中包含有用户名或者密码等敏感信息,攻击者截取到cookies后可为攻击提供便利,若获取到用户密码可直接登录到系统中。SSRF漏洞
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSL3.0漏洞
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL常会爆出一些漏洞,如:心脏滴血漏洞等。CSRF(跨站请求伪造)
跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种使已登录用户在不知情的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果,所以CSRF攻击主要用来执行动作,而非窃取用户数据。当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全。命令执行漏洞
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击;另一种是由于漏洞而造成的命令执行(如:struts2、weblogic命令执行)上传漏洞
系统对上传的文件类型没有进行验证,在应用系统的运营过程中,不可避免地要对网站的某些页面或者内容进行更新,这时便需要使用到网站的文件上传的功能。如果不对被上传的文件进行限制或者限制被绕过,该功能便有可能会被利用于上传可执行文件、脚本到服务器上,进而进一步导致服务器沦陷。任意文件包含
任意文件包含,系统对传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入,导致恶意攻击者可以利用该缺陷读取服务器上指定文件任意文件下载
任意文件下载,系统提供文件下载功能,但未对下载文件名进行限制,可下载任意文件。目录遍历
目录遍历漏洞会将站点的目录暴露在攻击者眼前,攻击者可以从这些目录得知当前站点的信息,如开发语言、站点结构和数据库文件等信息。溢出攻击漏洞
系统的客户端和服务器端对输入数据的字符长度未做检查,提交超长数据后,服务器端会出现异常错误,可能导致缓冲区溢出或拒绝服务攻击等安全问题。XML实体注入
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。检测存在风险的无关服务和端口
检测存在风险的无关服务和端口,为攻击者攻击提供便利登录功能验证码漏洞
不断恶意或欺诈性地重复一个有效的数据包,重放攻击攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制,造成会话重放攻击。如:
固定账号破解密码、固定密码破解账号。验证码机制可以有效的解决会话重放攻击,但是验证码机制存在漏洞,会话重放攻击漏洞就仍然存在。
Nginx配置解决部分渗透测试问题
HOST头攻击
if ($http_Host !~* ^10.121.55.26:8061$) {
return 403;
}
CSRF跨站请求伪造
修改NG配置文件,server中增加
valid_referers none blocked server_names;
if ($invalid_referer) {
return 403;
}
敏感信息泄漏
修改NG配置文件,http中增加
server_tokens off;
不安全的HTTP方法
修改NG配置文件,server中增加
if (request_method !~ ^(GET|HEAD|POST)requestmethod! (GET∣HEAD∣POST) ) {
return 403;
}
参考配置
worker_processes 20;
events {
worker_connections 1024;
}
http {
#解决因nginx缓存区空间不足导致的JS加载异常问题(by sunwenyan)
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
include mime.types;
default_type application/octet-stream;
sendfile on;
server_tokens off;
keepalive_timeout 65;
upstream webserver.ygsoft.com {
server 10.51.90.13:7001;
#server 192.168.2.4:8081;
#server 192.168.2.5:8082;
ip_hash;
}
#HTTP server
server {
listen 80;
server_name localhost;
rewrite ^(.*) https://$host$1 permanent;
location / {
return 302 https://$host$request_uri;
}
}
# HTTPS server
#
server {
listen 443 ssl;
listen 9020;
server_name localhost;
ssl_certificate /home/nginx/ygcert/ygdemo.crt;
ssl_certificate_key /home/nginx/ygcert/ygdemo.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl on;
error_page 497 https://$host$uri?$args;
error_page 404 /gris_404.html;
error_page 404 500 502 503 504 /gris_500.html;
location = /gris_404.html {
root http://webserver.ygsoft.com/grm/error/gris_404.html;
}
location = /gris_500.html {
root http://webserver.ygsoft.com/grm/error/gris_500.html;
}
underscores_in_headers on;
add_header Set-Cookie "HttpOnly"; #Cookie添加HttpOnly
add_header Set-Cookie "Secure"; #Cookie添加Secure
add_header Cache-Control: no-store; #防止缓存
add_header Pragma: no-cache; #防止缓存
add_header X-Frame-Options "SAMEORIGIN"; #只允许本网站的frame嵌套
add_header X-XSS-Protection '1;mode=block'; #开启XSS过滤器
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; #HTTP 严格传输安全 (HSTS) 是保护安全 (HTTPS) Web 站点不被降级到不安全 HTTP 的机制
#add_header X-Content-Type-Options: nosniff; #可能防止在用户浏览器中执行不受信任的内容,可能会影响页面正常访问
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://10.51.90.224; img-src 'self' https://10.51.90.224; style-src 'self' 'unsafe-inline' https://10.51.90.224; font-src 'self' https://10.51.90.224; frame-src https://10.51.90.224; object-src 'none'"; #配置Content-Security-Policy
#防止XFF攻击/伪造IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#修复不安全http方式,只允许GET和POST方式
if ($request_method !~* GET|POST) {
return 403;
}
#修复CSRF Referer来源,但不添加CSRF ANTI TOKEN.(设置上面webserver.ygsoft.com的server IP地址)
valid_referers none blocked server_names 10.51.90.224;
if ($invalid_referer) {
return 403;
}
#修复HOST头攻击,需要设置对应的IP地址(设置上面webserver.ygsoft.com的server IP地址)
if ($http_Host !~* ^10.51.90.224$) {
return 403;
}
location ~ /FMISWeb/services/ {
proxy_set_header Host $host:9020;
proxy_set_header Accept-Encoding "";
proxy_pass http://webserver.ygsoft.com;
subs_filter_types text/xml;
subs_filter http://$host https://$host;
}
location ~ /YGFMISWeb/services/ {
proxy_set_header Host $host:9020;
proxy_set_header Accept-Encoding "";
proxy_pass http://webserver.ygsoft.com;
subs_filter_types text/xml;
subs_filter http://$host https://$host;
}
location ^~ /grm {
#防止XFF攻击/伪造IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
proxy_pass http://webserver.ygsoft.com;
}
location ~ \.(gif|jpg|jpeg|png|bmp|css|js|jsx|htc|vbs|txt|xml|swf|wav|html|htm|flv|ico|json|map|shtml|woff)$ {
expires 1h;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 5h;
proxy_cache_valid 304 5h;
proxy_cache_valid 301 302 1h;
proxy_cache_valid any 1m;
add_header X-Cache $upstream_cache_status;
proxy_pass http://webserver.ygsoft.com;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
}
location ~ /(barcodeServlet|ScriptServlet|contentmanage.viewFileServlet|getBillMainInfoServlet|getBillSubTableInfoServlet|getEcpFlowHistoryServlet|getBillAttachmentServlet|getEcpBillOptStateServlet|EfNavigateServlet|PageConfigServlet|MetaModelManagerServlet|IpGetterServlet|PortalCheckServlet|RemoteServiceServlet)(/*) {
expires 1h;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_methods GET POST;
proxy_cache_valid 200 5h;
proxy_cache_valid 304 5h;
proxy_cache_valid 301 302 1h;
proxy_cache_valid any 1m;
add_header X-Cache $upstream_cache_status;
proxy_pass http://webserver.ygsoft.com;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
}
location / {
proxy_pass http://webserver.ygsoft.com;
}
}
}