web方面(top10漏洞等)3
1、sql注入的原理
答:指的是web应用程序对用户输入的sql语句没有进行严格的过滤和验证,导致攻击者可以将自己构造的sql语句与我们后端的sql语句进行拼合,在管理员不知情的情况下实现非法操作,比如攻击者可以在我们服务器上执行非授权的任意查询,从而是我们的信息泄露。
2、sql盲注的原理
答:sql盲注和sql注入差不多,只不过sql盲注需要通过页面的回显内容来判断注入的字符是否正确,攻击者需要一个字符一个字符的去猜测。
3、宽字节注入的原理
答:向系统提交表单或查询请求时,将一些特殊的字符以另外的编码方式提交给服务器,让服务器错误的解读字符,从而使请求出现异常。
4、堆叠注入的原理
答:mysql数据库sql语句的默认结束符是以“;”结尾,在执行多条sql语句时就要用结束符隔开,那么分号结束一条sql语句后继续构造下一条语句,然后去执行。
5、报错注入用到的函数以及原理
答:函数:updatexml、floor、exp
原理:updatexml()一共有三个参数,第一个是xml内容、第二个参数是update的位置XPATH路径、第三个参数是更新后的内容;这里报错的主要原理是利用第二个参数,当其校验输入的内容是否符合XPATH格式的时候,不符合就报错,我们将第二个参数替换为version()或者database()等等,因为不满足XPATH格式所以会输出错误,输出错误的时候将sql代码(verson()/database()等)执行了。
6、sql注入的分类
答:我们可以把sql注入直接的分为字符型和数字型,主要特点就是在进行sql注入的时候是否需要闭合传参的单引号,不需要闭合说明是数值型,反之就是字符型;还可以将sql注入分为有回显的注入和无回显的注入,无回显的注入又别称为盲注,盲注有三大类,布尔盲注、时间盲注以及报错盲注;根据sql注入各自的特点可以分为联合注入、二次注入、宽字节注入、堆叠注入等,根据http报文中的不同位置可以有cookie注入、referer注入、x-forwarded-for注入等。
7、sql注入的绕过方式
答:大小写绕过 、编码绕过、注释绕过、关键字/关键函数替换、参数污染、缓存区溢出、特殊符号等
8、文件上传漏洞的原理
答:在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。
9、文件下载漏洞的原理
答:是指攻击者利用Web应用程序中的漏洞,通过某种方式下载到了应该不被公开访问的文件,这些文件可能包含敏感信息,如用户凭证、密码等,从而造成安全风险。
10、为了防止文件下载漏洞,应该采取的措施
答:1. 对文件下载链接进行严格的访问控制,只有经过授权的用户才能访问;
2. 验证用户请求中的参数,防止攻击者利用构造的请求进行攻击;
3. 对应用程序进行安全测试,及时发现和修复漏洞。
11、命令执行漏洞的原理
答:命令执行漏洞是指攻击者能够通过向应用程序或系统发送恶意输入,从而使其执行未经验证或不受信任的命令。
12、命令执行漏洞的防御措施
答:1. 输入验证:应用程序必须对所有输入数据进行严格验证,以防止攻击者提交恶意数据。
2. 输入过滤:应用程序必须过滤掉不必要的字符和符号,以确保输入数据不包含任何恶意代码。
3. 最小权限原则:应用程序应该以最小的权限级别运行,以减少攻击者利用漏洞获取系统权限的可能性。
13、代码执行漏洞的原理:
答:代码执行漏洞是指攻击者能够在Web应用程序中执行自己的恶意代码。这种漏洞可能会导致攻击者控制整个应用程序,从而窃取敏感信息、篡改数据、甚至在服务器上执行命令。
14、为了避免代码执行漏洞,可以采取以下预防措施:
答:1. 对于用户输入的数据,需要进行严格的过滤和验证,避免用户输入的数据被当做代码执行。
2. 在服务器上,需要正确设置文件和目录的访问权限,避免攻击者利用目录遍历漏洞在服
务器上执行命令。
15、XSS漏洞的原理(简称为跨站脚本攻击)
答:是一种常见的Web安全漏洞,攻击者可以通过注入恶意脚本,获取用户的敏感信息或者控制用户的浏览器。XSS攻击通常发生在网站中的表单、搜索框、评论等交互式页面中。常见的payload:Script标签、Img标签、a标签。
17、XSS漏洞可以分为以下三种类型
答:1. 存储型XSS:攻击者将恶意脚本存储在数据库中,当用户浏览页面时,恶意脚本会从数据库中取出并执行,从而攻击用户。
2. 反射型XSS:攻击者通过URL或者表单提交等方式将恶意脚本注入到页面中,用户打开页面后,恶意脚本会被执行,从而攻击用户。
3. DOM型XSS:攻击者通过修改页面的DOM节点,注入恶意脚本,当用户与页面交互时,恶意脚本会被执行,从而攻击用户。
18、XSS漏洞的预防措施包括:
答:1. 过滤用户输入的数据,特别是用户的HTML、JavaScript等代码,以防止注入攻击。
2. 对用户输入的数据进行编码,例如使用HTML实体编码、URL编码等。
3. 限制用户输入的数据长度,避免攻击者通过输入超长数据来进行攻击。
4. 及时更新Web应用程序的安全补丁,避免已知的安全漏洞被攻击者利用。
5. 对于需要认证的页面,需要验证用户的身份,以避免攻击者通过伪造用户身份进行攻击。
6. 使用HTTP-only,禁止javaScript读取cookie。
19、CSRF漏洞的原理(简称为跨站请求伪造攻击)
答:是一种常见的Web安全漏洞,攻击者利用用户已登录的身份,向Web应用程序发起恶意请求,以实现攻击目的。CSRF攻击通常发生在网站中的表单、链接、图片等交互式元素中。
20、CSRF攻击的过程可以简单描述为以下几步:
答:1. 攻击者构造恶意请求,其中包含攻击目标的关键操作,例如转账、修改密码等。
2. 攻击者将恶意请求嵌入到诱骗用户点击的链接、图片等元素中。
3. 用户在登录状态下访问包含恶意请求的页面时,浏览器会自动发送请求,攻击目标就会执行,从而达到攻击者的目的。
21、为了避免CSRF漏洞,可以采取以下预防措施
答:1. 在关键操作之前,先进行身份验证,例如输入密码、输入验证码等。
2. 在Web应用程序中加入随机令牌机制,防止攻击者伪造请求。
3. 使用HTTP-only,禁止javaScript读取cookie。
22、SSRF(简称服务器端请求伪造)
答:是一种常见的Web安全漏洞,攻击者通过构造恶意请求,利用Web应用程序的漏洞,将请求发送到内部网络中的其他服务,进而获取敏感信息或者获得内部服务的控制权。
23、SSRF攻击的过程可以简单描述为以下几步:
答:1. 攻击者构造恶意请求,其中包含攻击目标的关键操作,例如读取文件、获取机密信息等。
2. 攻击者将恶意请求发送给Web应用程序,Web应用程序将恶意请求发送到内部网络中的其他服务。
3. 内部网络中的其他服务执行了恶意请求,将敏感信息或者控制权返回给攻击者。
24、为了避免SSRF漏洞,可以采取以下预防措施:
答:1. 对于外部请求,需要进行严格的输入验证和过滤,避免攻击者通过构造恶意URL来绕过防护措施。
2. 对于内部请求,需要对请求的URL进行白名单校验,只允许请求已经明确授权的内部服务。
25、文件包含漏洞
答:web应用程序中没有正确的过滤或验证用户输入,导致攻击者可以通过构造恶意请求,将任意文件包含到web应用程序中,从而执行恶意代码或读取敏感数据等操作。
26、文件包含漏洞的防御措施
答:1、 对用户输入的数据进行过滤和安全验证。
2、检查系统配置,确保 PHP 中禁用了 allow_url_fopen 和 allow_url_include 选项。这将禁止远程文件包含和文件读取操作,从而减少了攻击者利用文件包含漏洞的机会。
27、XXE漏洞的原理
答:是指攻击者通过构造恶意XML数据来触发XML解析器漏洞,从而读取本地文件、执行任意命令等操作。
28、XXE漏洞的防范
答:1、应该使用验证器和解析器,清除不信任的输入数据,以防止注入攻击。
2、禁止外部实体,设置解析器的特定属性来进行解析。
29、目录遍历漏洞
答:目录遍历通常是由于web服务器配置错误,或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。
30、反序列化漏洞原理
答:序列化是指Java对象转化为二进制文件的过程,反序列化指的是这个文件再转化为Java对象的过程,本身是个正常过程,但如果被转化的这个文件是个恶意的,转化后的对象也是会是恶意的,由此可造成命令执行等等威胁。
31、反序列化漏洞修复建议
答:一般我们遇到的反序列化漏洞,基本都是使用了具有反序列化漏洞的组件或者类造成的,一般我们打补丁或者升级到最新版本就可以防御。
32、Shiro反序列化漏洞
答:Shiro < 1.2.4版本会存在此漏洞,挖掘的时候删除请求包中的rememberMe参数,返回包中包含rememberMe=deleteMe字段。说明使用了shiro组件,可以尝试此漏洞。
如果返回包无此字段,可以通过在发送数据包的cookie中增加字段:rememberMe=,然后查看返回数据包中是否存在关键字。
33、Fastjson反序列化漏洞
答:Fastjson提供了反序列化功能,允许用户在输入JSON串时通过“@type”键对应的value指定任意反序列化类名,由此造成反序列化漏洞。
34、Log4j漏洞
答:本身是Apache日志功能,他有个日志遍历的功能,当碰到${jndi:// } ,会遍历执行,JNDI功能又可以使用ldap或者rmi来引入class文件,我们只需要在class文件中加入需要执行的恶意代码,就可以造成代码注入。
35、中间件漏洞 解析漏洞
答:Apache文件名解析
从后往前解析,如果解析文件a.php.abc,先解析abc,Apache发现不认识,就会往前,解析PHP,最终文件会以PHP方式解析
IIS解析漏洞
1、目录解析:IIS从前往后解析,解析a.asp/a.jpg文件时,会先发现asp后缀,以为文件格式为asp,按照asp的方式解析
2、文件名解析:IIS从前往后解析,解析a.asp;.jpg文件时,会先发现asp后缀,以为文件格式为asp,按照asp的方式解析
3、Nginx 畸形文件名解析
解析文件a.jpg文件时,访问a.jpg/.php,查找文件内容时,.php不是完整文件名,因此从后往前找到a.jpg文件,确认文件类型时,nginx关注的是后缀,.php有完整的后缀,所以按照php去解析,因此a.jpg文件就会被解析成php。
36、有反序列化漏洞的中间件
答:Tomcat、Jboss、weblogic