Hvv|【漏洞篇】面试


渗透测试面试总结【漏洞篇】

    • 1.OWAP TOP 10都有哪些?
    • 2.中间件漏洞
        • 常见的中间件漏洞及修复建议
        • Apache Shiro
    • 3.框架类漏洞
        • django
        • Fastjson反序列化
        • ThinkPHP框架特征
        • Struts 2 框架特征
    • 4.未授权访问漏洞
    • 5.编辑器漏洞

1.OWAP TOP 10都有哪些?
1、SQL注入 2、失效的身份认证和会话管理 3、跨站脚本攻击XSS 4、直接引用不安全的对象 5、安全配置错误 6、敏感信息泄露 7、缺少功能级的访问控制 8、跨站请求伪造CSRF 9、使用含有已知漏洞的组件 10、未验证的重定向和转发

2.中间件漏洞 常见的中间件漏洞及修复建议 IIS
1- IIS解析漏洞:基于文件名,该版本 默认会将 *.asp; .jpg 此种格式的文件名,当成Asp解析,原理是:服务器默认不解析`; `号及其后面的内容,相当于截断。 修复建议:1、限制上传目录执行权限,不允许执行脚本 2、不允许新建目录 3、上传的文件需经过重命名(时间戳+随机数+.jpg等) 2-PUT任意文件写入:IIS Server 在 Web 服务扩展中开启了 WebDAV之后,支持多种请求,配合写入权限,可造成任意文件写入 修复建议:关闭WebDAV和写权限 3-HTTP.SYS远程代码执行 修复建议:安装修复补丁

apache
1-未知扩展名解析漏洞:Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在mime.types文件内),则继续向左识别,直到识别到合法后缀才进行解析 2-AddHandler导致的解析漏洞:如果运维人员给.php后缀增加了处理器:AddHandler application/x-httpd-php .php 那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

Nginx
1-Nginx配置文件错误导致的解析漏洞:对于任意文件名,在后面添加/xxx.php(xxx为任意字符)后,即可将文件作为php解析。 例:info.jpg后面加上/xxx.php,会将info.jpg 以php解析。 2-目录穿越:Nginx在配置别名的时候,如果忘记加/,将造成一个目录穿越漏洞。可以访问服务器的根目录外还可以访问目录里面的数据 修复建议:只需要保证location和alias的值都有后缀/或都没有/这个后缀 3-目录遍历:当Nginx配置文件中,autoindex 的值为on时,将造成一个目录遍历漏洞 修复建议:将autoindex 的值为置为off

Tomcat
1-Tomcat 任意文件写入:Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件 修复建议:readonly=true 2-Tomcat manager App 暴力破解:通过burp生成的字典暴力破解manager页面的密码 修复建议:若无必要,取消manager/html功能;若要使用,manager页面应只允许本地IP访问

Apache Shiro 什么是反序列化漏洞?
首先了解一下序列化和反序列化的含义:序列化是指Java对象转化为二进制内容,转换的原因就是为了便于网络传输和本地存储。反序列化的含义是将相应的二进制转换为Java对象。
漏洞成因:当输入的反序列化的数据可以被用户控制,那么攻击者就可通过构造恶意输入,让反序列产生非预期对象,同时执行构造的恶意代码
【Hvv|【漏洞篇】面试】Shiro反序列化漏洞
原理:当用户勾选RememberMe并登录成功,Shiro会将用户的cookie值序列化,AES加密,接着base64编码后存储在cookie的rememberMe字段中,服务端收到登录请求后,会对rememberMe的cookie值进行base64解码,接着进行AES解密,然后反序列化。由于AES加密是对称式加密(key既能加密数据也能解密数据),所以当攻击者知道了AES key后,就能够构造恶意的rememberMe cookie值从而触发反序列化漏洞。
1-Shiro550:Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。 在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。 Payload产生的过程: 命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值 2-Shiro721:Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题 用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行

3.框架类漏洞 django
1-任意URL跳转漏洞:Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中 2-Django JSONField/HStoreField SQL注入漏洞:该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名 在键名的位置注入SQL语句。Django自带的后台应用Django-Admin中就存在这样的写法 3- Django GIS SQL注入漏洞:该漏洞需要开发者使用了GIS中聚合查询的功能,用户在oracle的数据库且可控tolerance查询时的键名,在其位置注入SQL语句。

Fastjson反序列化 fastjson 是阿里巴巴开发的 java语言编写的高性能 JSON 库,用于将数据在 Json 和 Java Object之间相互转换。它没有用java的序列化机制,而是自定义了一套序列化机制
利用过程:
fastjson中,在反序列化的时候 jdk中 的 jdbcRowSetImpl 类一定会被执行,我们给此类中的 setDataSourcesName 输入恶意内容(rmi链接),让目标服务在反序列化的时候,请求rmi服务器,执行rmi服务器下发的命令,从而导致远程命令执行漏洞
恶意类怎么上传到服务端?
通过jndi在服务端创造一个有危害的类,目标服务器收到rmi的命令之后,就会加载这个jndi生成的恶意类
fastjson rce的原理
jdk 中的 jdbcRowSetImpl 类中的 setAutoCommit 方法中的 lookup方法中的 getDataSourcesName 参数输入可控
ThinkPHP框架特征
1-类库导入:采用基于类库包和命名空间的方式导入类库,让类库导入看起来更加简单清晰,而且还支持冲突检测盒别名导入 2-URL模式:可以随心所欲地构建需要的URL地址和进行SEO优化工作 3-编译机制:独创的核心编译和项目的动态编译机制,有限减少OOP开发中文件加载的性能开销 4-查询语言:内建丰富的查询机制 5-视图模型:轻松动态第创建数据库视图,多表查询不再麻烦 6-分组模块:不用担心大项目的分工协调和部署问题,分组模块解决跨项目的难题 7-模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎 8-Ajax支持:内置Ajax数据返回方法,支持JSON、XML和EVAL格式返回客户端 9-缓存机制

Struts 2 框架特征
1-POJO形式和POJO动作:Struts2可以使用任何的POJO接收的形式输入。同样的,你现在可以看到任何POJO的Action类 2-Tag支持:新标签让开发人员写更少的代码 3-AJAX支持:Struts2整合到产品中AJAX支持创建AJAX的标签 4-模板支持:支持生成使用模板 5-插件支持:可以加强和扩大使用插件。大量的插件可供Struts2 6-概要分析:Struts2的提供集成的配置,调试和分析应用程序 7-标签修改容易:在Struts2标签标记,可以调整使用FreeMarker模板 8-提升更少的配置:Struts2的促进更少的配置与用于各种设置的帮助下,使用默认值

4.未授权访问漏洞
# 常见的未授权访问漏洞:1- Redis 未授权访问漏洞 2- MongoDB 未授权访问漏洞 3- Jenkins 未授权访问漏洞 4- Memcached 未授权访问漏洞 5- JBOSS 未授权访问漏洞 6- VNC 未授权访问漏洞 7- Docker 未授权访问漏洞 8- ZooKeeper 未授权访问漏洞 9- Rsync 未授权访问漏洞 10- Atlassian Crowd 未授权访问漏洞 11- CouchDB 未授权访问漏洞 12- Elasticsearch 未授权访问漏洞 13- Hadoop 未授权访问漏洞 14- Jupyter Notebook 未授权访问漏洞

5.编辑器漏洞
# 其实还是文件上传漏洞 1-FCKeditor编辑器 2-EWEbeditor编辑器 3-DotNetTextBox编辑器 4-Kedit编辑器 5-Cute Editor 在线编辑器

    推荐阅读