Web安全测试学习手册.pdf

上传人:Ma****4 文档编号:14660914 上传时间:2023-06-25 格式:PDF 页数:48 大小:548.45KB
下载 相关 举报
Web安全测试学习手册.pdf_第1页
第1页 / 共48页
Web安全测试学习手册.pdf_第2页
第2页 / 共48页
Web安全测试学习手册.pdf_第3页
第3页 / 共48页
Web安全测试学习手册.pdf_第4页
第4页 / 共48页
Web安全测试学习手册.pdf_第5页
第5页 / 共48页
Web安全测试学习手册.pdf_第6页
第6页 / 共48页
Web安全测试学习手册.pdf_第7页
第7页 / 共48页
Web安全测试学习手册.pdf_第8页
第8页 / 共48页
Web安全测试学习手册.pdf_第9页
第9页 / 共48页
Web安全测试学习手册.pdf_第10页
第10页 / 共48页
Web安全测试学习手册.pdf_第11页
第11页 / 共48页
Web安全测试学习手册.pdf_第12页
第12页 / 共48页
Web安全测试学习手册.pdf_第13页
第13页 / 共48页
Web安全测试学习手册.pdf_第14页
第14页 / 共48页
Web安全测试学习手册.pdf_第15页
第15页 / 共48页
Web安全测试学习手册.pdf_第16页
第16页 / 共48页
Web安全测试学习手册.pdf_第17页
第17页 / 共48页
Web安全测试学习手册.pdf_第18页
第18页 / 共48页
Web安全测试学习手册.pdf_第19页
第19页 / 共48页
Web安全测试学习手册.pdf_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Web安全测试学习手册.pdf

《Web安全测试学习手册.pdf》由会员分享,可在线阅读,更多相关《Web安全测试学习手册.pdf(48页珍藏版)》请在冰点文库上搜索。

Web安全测试学习手册.pdf

1Web安全测试学习手册配置管理测试远程代码执行漏洞用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变$PATH或程序执行环境的其他方面来执行一个恶意构造的代码。

在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用eval函数(PHP函数)去处理。

比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。

由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。

命令注入攻击中WEB服务器没有过滤类似system(),eval(),exec(),assert(),pregreplace()+/e模式等函数是该漏洞攻击成功的最主要原因。

通用修复方案升级插件、框架新版本具体修复方案1.使用低权限用户执行应用程序。

2.升级到修复后的组件版本。

3.配置或代码过滤危险函数。

4.对于eval()函数一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式。

5.对于字符串一定要使用单引号包裹可控代码,并且插入前进行addslashes。

6.对于preg_replace放弃使用e修饰符。

如果必须要用e修饰符,请保证第二个参数中,对于正则匹配出的对象,用单引号包裹。

SlowHTTPDOS(慢速拒绝服务)漏洞2通用修复方案1.设置合适的timeout时间(Apache已默认启用了reqtimeout模块),规定了Header发送的时间以及频率和Body发送的时间以及频率。

2.增大MaxClients(MaxRequestWorkers):

增加最大的连接数。

根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkerswascalledMaxClientsbeforeversion2.3.13.Theoldnameisstillsupported。

3.默认安装的Apache存在SlowAttack的威胁,原因就是虽然设置的timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满Apache的所有连接。

具体修复方案WebSphere1.限制HTTP数据的大小在WebSphereApplicationServer中进行如下设置:

任何单个HTTP头的默认最大大小为32768字节。

可以将它设置为不同的值。

HTTP头的默认最大数量为50。

可以将它设置为不同的限制值。

另一种常见的DOS攻击是发送一个请求,这个请求会导致一个长期运行的GET请求。

WebSphereApplicationServerPlug-in中的ServerIOTimeoutRetry属性可限制任何请求的重试数量。

这可以降低这种长期运行的请求的影响。

设置限制任何请求正文的最大大小。

详见参考链接。

2、设置keepalive参数打开ibmhttpserver安装目录,打开文件夹conf,打开文件httpd.conf,查找KeepAlive值,改ON为OFF,其默认为ON。

这个值说明是否保持客户端与HTTPSERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequests设定值时请求将排队,导致响应变慢。

Weblogic1.在配置管理界面中的协议-一般信息下设置完成消息超时时间小于400。

2、在配置管理界面中的协议-HTTP下设置POST超时、持续时间、最大POST大小为安全值范围。

3Nginx1、通过调整$request_method,配置服务器接受http包的操作限制;2、在保证业务不受影响的前提下,调整client_max_body_size,client_body_buffer_size,client_header_buffer_size,large_client_header_buffersclient_body_timeout,client_header_timeout的值,必要时可以适当的增加;3、对于会话或者相同的ip地址,可以使用HttpLimitReqModuleandHttpLimitZoneModule参数去限制请求量或者并发连接数;4、根据CPU和负载的大小,来配置worker_processes和worker_connections的值,公式是:

max_clients=worker_processes*worker_connections。

Apache建议使用mod_reqtimeout和mod_qos两个模块相互配合来防护。

1、mod_reqtimeout用于控制每个连接上请求发送的速率。

配置例如:

#请求头部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。

可以防护slowloris型的慢速攻击。

RequestReadTimeoutheader=10-40,minrate=500#请求正文部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。

可以防护slowmessagebody型的慢速攻击。

RequestReadTimeoutbody=10-40,minrate=500需注意,对于HTTPS站点,需要把初始超时时间上调,比如调整到20秒。

2、mod_qos用于控制并发连接数。

配置例如:

当服务器并发连接数超过600时,关闭keepaliveQS_SrvMaxConnClose600限制每个源IP最大并发连接数为50QS_SrvMaxConnPerIP50这两个数值可以根据服务器的性能调整。

IHS服务器4请您先安装最新补丁包,然后启用mod_reqtimeout模块,在配置文件中加入:

LoadModulereqtimeout_modulemodules/mod_reqtimeout.so为mod_reqtimeout模块添加配置:

RequestReadTimeoutheader=10-40,MinRate=500body=10-40,MinRate=500对于HTTPS站点,建议header=20-40,MinRate=500。

参见:

http:

/F5负载均衡F5负载均衡设备有相应的防护模块,如无购买可参考附件中的详细配置过程。

关于F5的慢速攻击防护配置,请参考以下链接:

https:

/tomcat服务器1、设置Tomcat/server.xml文件connectiontimeout值,默认为20000ms,修改为2000ms(Tomcat自身安全漏洞)。

2、设置AJAX的全局timeout时间(默认为30000ms)$.ajaxSetup(timeout:

8000)。

点击劫持:

X-Frame-Options头丢失漏洞通用修复方案配置WebServer,更改配置文件,添加自定义响应头具体修复方案Apache5配置Apache在所有页面上发送X-Frame-Options响应头,需要把下面这行添加到site的配置中:

HeaderalwaysappendX-Frame-OptionsSAMEORIGINNginx配置nginx发送X-Frame-Options响应头,把下面这行添加到http,server或者location的配置中:

add_headerX-Frame-OptionsSAMEORIGIN;IIS配置IIS发送X-Frame-Options响应头,添加下面的配置到Web.config文件中:

.Tomcat在conf/web.xml中添加如下配置:

C:

ProgramFilesApacheSoftwareFoundationTomcat7.0confweb.xmlhttpHeaderSecurityorg.apache.catalina.filters.HttpHeaderSecurityFilterantiClickJackingOptionSAMEORIGINtruehttpHeaderSecurity/*REQUESTFORWARD服务器启用了不安全的HTTP方法漏洞6IIS修改站点权限,取消“写入”Tomcat修改web.xmlfortune/*PUTDELETEHEADOPTIONSTRACEBASICNginx在server代码块内写入如下代码,用于屏蔽非GET、POST请求:

if($request_method!

*GET|POST)return403;中间件版本信息泄露漏洞Apache将以下配置加入conf/httpd.conf:

ServerTokensProdServerSignatureOffPHP修改php.ini,将expose_phpOn改为:

expose_phpOffIIS7找到HTTP响应头设置响应报文内容,可以将ASP.NET随意更改,甚至删除Nginx在加入conf/nginx.conf一行:

server_tokensoff;Tomcat到apache-tomcat安装目录下的lib子文件夹,找到catalina.jar这包,并进行解解压修改:

libcatalina.ziporgapachecatalinautilServerInfo.propertiesserver.info=Xserver.number=8.8server.built=Dec1201522:

30:

46UTC服务器端目录遍历漏洞Apache修改站点目录对应的配置文件OptionsFollowSymLinksAllowOverrideAllOrderallow,denyAllowfromallRequireallgranted大家都见过很多框架的每个目录都有一个index.html文件,这个文件的存在是非常有意义的,很多线上的Web服务器都没有合格配置列出目录索引。

导致网站内部许多文件都被攻击者查看到,泄漏大量信息。

为了防止列出目录索引,我们可以在站点的每个文件夹中创建一个index.html,这个文件内容是什么都无所谓了。

当攻击者想通过列目录的手法访问你站点文件夹的时候,Web服务器将会判断当前目录下有没有DirectoryIndex默认首页,如果存在就显示DirectoryIndex对应的文件名的内容,这样攻击者就无法查看该目录下有什么文件了。

Tomcat修改conf/web.xml配置文件listingsfalseNginx修改conf/nginx.conf配置文件location/indexindex.htmlindex.htmindex.phpl.php;autoindexoff;IIS设置”目录浏览”权限中间件解析漏洞IIS短文件名漏洞通用修复方案执行命令(管理员权限):

regaddHKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem/vNtfsDisable8dot3NameCreation/tREG_DWORD/d1/f具体修复方案WindowsServer2008R2查询是否开启短文件名功能:

fsutil8dot3namequery关闭该功能:

fsutil8dot3nameset1WindowsServer2003关闭该功能:

fsutilbehaviorsetdisable8dot319应用程序未容错漏洞PHP在页面中添加:

error_reporting(0);或更改php.inidisplay_errors的默认值为On,代表显示错误提示,如果设置为Off,就会关闭所有的错误提示。

Tomcat修改web.xml,加入如下代码:

500/error.jspIIS“网站属性”-“主目录”-“应用程序配置”-调试,选择“向客户端发送下列文本信息”JSP1.检查程序中的所有变量,以了解所有预期的参数和值是否存在。

当参数缺失导致程序错误时,程序应转向统一的错误页面,不应该抛出未经处理的异常。

2.应用程序应验证其输入是否由有效字符组成(解码后)。

例如,应拒绝包含空字节(编码为%00)、单引号、引号等的输入值。

3.确保值符合预期范围和类型。

如果应用程序预期特定参数具有特定集合中的值,那么该应用程序应确保其接收的值确实属于该集合。

例如,如果应用程序预期值在10-99范围内,那么就该确保该值确实是数字,且在10-99范围内。

4.验证数据是否属于提供给客户端的集合。

5.请勿在生产环境中输出调试错误消息和异常。

SVN文件泄露漏洞10删除.svn目录Nginx服务器在nginx.conf中添加如下代码:

location(.*)/.svn/return404;Apache服务器在httpd.conf中添加如下代码:

Orderdeny,allowDenyfromallOpenSSL心脏出血漏洞1.将受影响的服务器下线,避免它继续泄露敏感信息。

2.停止旧版的openssl服务,升级openssl到新版本,并重新启动。

3.生成新密钥。

(因为攻击者可能通过漏洞获取私钥。

)将新密钥提交给你的CA,获得新的认证之后在服务器上安装新密钥。

4.服务器上线。

5.撤销旧认证。

6.撤销现有的会话cookies。

7.要求用户修改密码。

SSL/TLS“受戒礼”漏洞SSLPOODLE漏洞分布式部署文件可读漏洞在Apache的配置文件httpd.conf中添加:

RequirealldeniedSSI(Server-SideIncludesInjection)漏洞未授权访问漏洞通用修复方案111.使用安全配置,对敏感服务接口使用白名单访问控制列表。

2.验证一切来自客户端的参数,重点是和权限相关的参数,比如用户ID或者角色权限ID等。

3.sessionID和认证的token做绑定,放在服务器的会话里,不发送给客户端。

4.对于用户登录后涉及用户唯一信息的请求,每次都要验证检查所有权,敏感信息页面加随机数的参数,防止浏览器缓存内容。

5.把程序分成匿名,授权和管理的区域,通过将角色和数据功能匹配。

6.不使用参数来区分管理员和普通用户。

Redis未授权访问漏洞1.禁止使用root权限启动redis服务。

2.对redis访问启动密码认证。

3.添加IP访问限制,并更改默认6379端口。

MongoDB未授权访问漏洞-为MongoDB添加认证:

MongoDB启动时添加-auth参数、为MongoDB添加用户-MongoDB自身带有一个HTTP服务和并支持REST接口。

在2.6以后这些接口默认是关闭的。

mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。

修改配置文件或在启动的时候选择nohttpinterface参数nohttpinterface=false-启动时加入参数-bind_ip127.0.0.1或在/etc/mongodb.conf文件中添加以下内容:

bind_ip=127.0.0.1Jenkins未授权访问漏洞-升级版本。

-添加认证,设置强密码复杂度及账号锁定。

-禁止把Jenkins直接暴露在公网。

Memcached未授权访问漏洞-设置Memchached只允许本地访问。

-禁止外网访问Memcached11211端口。

12-配置访问控制策略。

-最小化权限运行。

-修改默认端口等。

JBOSS未授权访问漏洞-对jmx控制页面访问添加访问验证。

-进行JMXConsole安全配置。

VNC未授权访问漏洞-配置VNC客户端登录口令认证并配置符合密码强度要求的密码。

-以最小普通权限身份运行操作系统。

Docker未授权访问漏洞-简单粗暴的方法,对2375端口做网络访问控制,如ACL控制,或者访问规则。

-修改dockerswarm的认证方式,使用TLS认证:

OverviewSwarmwithTLS和ConfigureDockerSwarmforTLS这两篇文档,说的是配置好TLS后,DockerCLI在发送命令到dockerdaemon之前,会首先发送它的证书,如果证书是由daemon信任的CA所签名的,才可以继续执行。

ZooKeeper未授权访问漏洞-修改ZooKeeper默认端口,采用其他端口服务。

-添加访问控制,配置服务来源地址限制策略。

-增加ZooKeeper的认证配置。

Rsync未授权访问漏洞-账户认证:

正确配置认证用户名及密码。

-权限控制:

使用合理的权限。

-网络访问控制:

控制接入源ip。

-数据加密传输等AtlassianCrowd未授权访问漏洞-设置访问/crowd/admin/uploadplugin.action的源ip。

-升级最新版本(3.5.0以13上)。

CouchDB未授权访问漏洞-绑定指定ip。

-设置访问密码。

Elasticsearch未授权访问漏洞-访问控制策略,限制IP访问,绑定固定IP。

-在config/elasticsearch.yml中为9200端口设置认证等。

Hadoop未授权访问漏洞-如无必要,关闭HadoopWeb管理页面。

-开启身份验证,防止未经授权用户访问。

-设置“安全组”访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问包括50070以及WebUI等相关端口。

JupyterNotebook未授权访问漏洞-开启身份验证,防止未经授权用户访问。

-访问控制策略,限制IP访问,绑定固定IP。

GET请求传输敏感信息漏洞数据验证测试XSS(CrossSiteScripting)跨站脚本攻击漏洞1.将重要的Cookie标记为httponly,使javascript中的document.cookie语句不能获取到Cookie。

2.输入检查:

在构造白名单的过程中需要保证在不影响用户体验的同时,尽可能杜绝一切不必要的输入内容,只允许用户输入我们期望的数据。

例如:

14年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉。

3.输出检查:

对数据进行htmlencode处理,过滤移除特殊的html标签。

例如:

,<for,"for,过滤javascript事件的标签。

例如:

onclick=,onfocus等等建议过滤关键字为:

1右尖括号3双引号4单引号5反引号6%百分号7(左圆括号8)右圆括号9;分号10/正斜杠11反斜杠12左中括号13右中括号14&连接符号15#井号比如把编码为<。

4.其他参考:

富文本过滤库ruby:

https:

/https:

/注入(SQLinjection)漏洞1.使用参数检查的方式在参数拼接进入SQL语句执行前进行校验过滤,拦截带有SQL语句的参数传入应用程序。

2.使用预编译处理的方式处理拼接了用户可控参数的SQL语句,对SQL语句的语义进行完整性检查,确认语义没有发生变化。

3.Web应用程序接入数据库服务器使用的用户禁用系统管理员,用户角色应遵循最小权限原则。

4.定期审计数据库执行日志,查看是否存在应用程序正常逻辑之外的SQL语句执行痕迹。

任意文件读取漏洞漏洞介绍:

任意文件读取漏洞主要是由于应用系统在提供文件下载或读取功能时,在文件路径参数中直接指定文件路径的同时并没有对文件路径的合法性进行校验,导致攻击者可通过目录跳转(.或./)的方式下载或读取到原始指定路径之外的文件。

攻击者最终可通过该漏洞下载或读取系统上的任意文件,如数据库文件、应用系统源代码、密码配置信息等重要敏感信息,造成系统的敏感信息泄露。

15漏洞存在的地方:

应用系统中存在文件(附件/文档/图片等等资源)下载的地方。

漏洞危害:

通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等。

Windows系统常用参数:

C:

boot.ini/查看系统版本C:

WindowsSystem32inetsrvMetaBase.xml/IIS配置文件C:

Windowsrepairsam/存储系统初次安装的密码C:

ProgramFilesmysqlmy.ini/Mysql配置C:

ProgramFilesmysqldatamysqluser.MYD/MysqlrootC:

Windowsphp.ini/php配置信息C:

Windowsmy.ini/Mysql配置信息Linux系统常用参数:

/etc/passwd/etc/shadow/etc/hosts/root/.bash_history/root的bash历史记录/root/.ssh/authorized_keys/root/.mysql_history/mysql的bash历史记录/root/.wget-hsts/opt/nginx/conf/nginx.conf/nginx的配置文件/var/www/html/index.html/etc/f/etc/httpd/conf/httpd.conf/httpd的配置文件/proc/self/fd/fd0-9*(文件标识符)/proc/mounts/porc/config.gz/proc/sched_debug/提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用/proc/mounts/挂载的文件系统列表/proc/net/arp/arp表,可以获得内网其他机器的地址/proc/net/route/路由表信息/proc/net/tcpand/proc/net/udp/活动连接的信息/proc/net/fib_trie/路由缓存/proc/version/内核版本/proc/PID/cmdline/可能包含有用的路径信息/proc/PID/environ/程序运行的环境变量信息,可以用来包含getshell/proc/PID/cwd/当前进程的工作目录/proc/PID/fd/#/访问filedescriptors,某写情况可以读取到进程正在使用的文件,比如access.log#ssh/root/.ssh/id_rsa/root/.ssh/id_rsa.pub/root/.ssh/authorized_keys/etc/ssh/sshd_config/var/log/secure/etc/sysconfig/network-scripts/ifcfg-eth0/etc/syscomfig/network-scripts/ifcfg-eth1修复方案:

1.php.ini配置open_basedir(针对PHP应用程序)。

2.用户输入配置白名

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2