11月29日: 系统工程与密码学研究所web安全基础测试题 B卷 ——曾玉芳 1、什么是SSRF漏洞?举例说明 SSRF为服务器请求伪造是一种构造请求,由服务器发起请求的安全漏洞。一般的情况下,SSRF的目标就是与外部隔离的内网资源。如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在这种服务端请求伪造的缺陷,攻击者利用ssrf可以实现的攻击主要有5种: 1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息; 2.攻击运行在内网或本地的应用程序(比如溢出); 3.对内网web应用进行指纹识别,通过访问默认文件实现; 4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等); 5.利用file协议读取本地文件等。 2、什么是XSS漏洞,有哪些类型?举例说明 xss为跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。 xss一般有三种比较常见的类型: 1.反射型 攻击者不能将数据存在数据库里面,是一次性的,所见即所得,一般出现在查询类页面 2,存储型 攻击者的数据会被存储在数据库中,永久性存储,一般出现在留言板,注册等页面 3.DOM型 不与后台服务器产生的数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型 危害:存储型>反射型>DOM型 3、SQL 注入有哪几种类型? 最基础的注入-union注入攻击 Boolean注入攻击-布尔盲注 报错注入攻击 时间注入攻击-时间盲注 堆叠查询注入攻击 二次注入攻击 宽字节注入攻击 base64注入攻击 cookie注入攻击-http请求头参数注入 XFF注入攻击-http请求头参数注入 知道绝对路径的注入 4、什么是业务逻辑漏洞,有哪些类型? 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。其中越权访问又有水平越权和垂直越权两种: l 水平越权:相同级别(权限)的用户或者同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞,可能会造成大批量数据的泄露严重甚至会造成用户信息被恶意篡改。 l 垂直越权:就是不同级别之间的用户或不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能。 常见的逻辑漏洞有以下几类: 1. 支付订单:在支付订单时,可以篡改价格为任意金额;或者可以篡改运费或其他费用为负数,导致总金额降低。 2. 越权访问:通过越权漏洞访问他人信息或者操纵他人账号。 3. 重置密码:在重置密码时,存在多种逻辑漏洞,比如利用session覆盖重置密码、短信验证码直接在返回的数据包中等。 4. 竞争条件:竞争条件常见于多种攻击场景中,比如文件上传漏洞。 5、sg|map怎么对一个注入点注入?过程是什么? sqlmap.py-u “存在注入url” ——判断注入点 sqlmap.py -u “存在注入url” –dbs ——爆出所有数据库名字 sqlmap.py -u “存在注入url” --current-user ——查看当前使用账号 sqlmap.py -u “存在注入url” --current-db ——查看当前数据库 sqlmap.py -u “存在注入url”-D “当前数据库名” –tables ——列出数据库中所有表 sqlmap.py -u “存在注入url” -D “当前数据库名” -T“需要表名” –columns ——列出数据库中的表中的字段 sqlmap.py -u “存在注入url” -D “当前数据库名” -T “需要表名” -C “当前表的字段” –dump ——列出数据库中的表中的字段 6、报错注入的函数有哪些?举例 floor()、extractvalue()、updatexml()、exp() 7、延时注入如何来判断?举例 延时注入是利用sleep()或benchmark()等函数让mysql的执行时间变长。若要判断sql语句执行的正确性,我们可以用bp抓包,根据其页面响应时间的长短来判断sql语句是否正确 8、sql注入工具sqlmap的常见则试语句有哪些?举例 --current-db 当前数据库 --current-user 当前数据库用户名 --is-dba 查看当前用户是否为管理员权限 --data post型注入时的post数据 --threads 最大并发线程(不要超过10) -r 跟http请求头的头部文件.txt --cookie cookie注入 -a, --all 检索全部 -b, --banner 检索 banner --current-user 检索当前用户 --current-db 检索当前数据库 --passwords 列出用户密码的hash值 --tables 列出表 --columns 列出字段 --schema 列出DBMS schema --dump Dump DBMS数据库表的条目 --dump-all Dump 所有DBMS数据库表的条目 -D DB 指定数据库 -T TBL 指定表 -C COL 指定字段 9、owasp 10大漏洞都有哪些? 1.sql注入 2.失效的身份认证和会话管理 3.跨站脚本攻击——xss 4. 不安全的直接对象引用 Insecurity Direct Object Reference 5. 安全配置错误 Security Misconfiguration 6. 敏感信息泄露 Sensitive Data Exposure 7. 缺少功能级访问控制 8. 跨站请求伪造——CSRF 9. 使用含有已知漏洞的组件 10. 未验证的重定向和转发 10、PHP代码执行和命令执行的函数都有哪些? 代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort() 命令执行函数:system()、exec()、popen()、passthru()、shell_exec() 11、什么是XXE漏洞,举例说明 XEE漏洞是指xml外部实体注入漏洞。xml一般指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。攻击者可以通过实体将自定义的值发送给应用程序,然后让应用程序去呈现 12、如何向服务器写入webshell? 通过mysql注入点写入webshell 1、利用Union select 写入。 union 跟select into outfile,将一句话写入evil.php,仅适用于联合注入 2、利用分隔符写入。 当Mysql注入点为盲注或报错,那么可以通过分隔符写入。具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径 3、利用log写入 新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQL的log文件来获取Webshell。 13、常见的上传绕过方式有哪些? 1.js检测绕过 2.文件后缀绕过 3.文件类型绕过 4.文件截断绕过 14、什么是文件包含漏洞,PHP 相关函数是那些?举例说明 文件包含是指在通过服务器脚本的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露、恶意代码的注入等。 文件包含分为两种,一种为本地文件包含,一种为远程文件包含。 涉及函数:require()、require_once( )、include()、include_once() 15、盲注入的常用技巧有哪些?举例说明 1.布尔盲注 布尔(Boolean)型是计算机里的一种数据类型,只有True(真)和False(假)两个值。一般也称为逻辑型。页面在执行sql语句后,只显示两种结果,这时可通过构造逻辑表达式的sql语句来判断数据的具体内容。常用到的函数有: mid(str,start,length) :字符串截取 ORD() :转换成ascii码 Length() :统计长度 version() :查看数据库版本 database() :查看当前数据库名 user() :查看当前用户 2.延时注入 提交对执行时间敏感的函数sql语句,通过执行时间的长短来判断是否执行成功,比如:正确的话会导致时间很长,错误的话会导致执行时间很短 常用函数有: Sleep() :延迟函数 If(condition,true,false) :条件语句 mid(str,start,length) :字符串截取 ORD() :转换成ascii码 Length() :统计长度 version() :查看数据库版本 database() :查看当前数据库名 user() :查看当前用户 3,报错盲注 基于报错的盲注是通过输入特定语句使页面报错,网页中则会输出相关错误信息,从而是我们得到想要的基本信息——数据库名、版本、用户名 常用函数:Updatexml()、Exp()、floor()
|