⽹络安全-常见⾯试题(Web、渗透测试、密码学、Linux等)⽬录
秋招接近尾声,安全⽐较⼩众,题和⾯经都⽐较少,这是博主秋招时准备的题,学习安全不到两年,只有web了解的多⼀点,答案不保证准确性,仅做参考。。。喜欢的点赞,收藏⼀波~
WEB安全
(2017)
Injection - 注⼊攻击
例如 SQL、NoSQL、OS 和 LDAP 注⼊,当不受信任的数据作为命令或查询的⼀部分发送到解释器时就会发⽣。攻击者的恶意数据可以诱使解释器执⾏⾮预期的命令或在未经适当授权的情况下访问数据。
本⽂只写了SQL注⼊攻击
sql注⼊单引号被过滤了怎么绕过?
攻击⽅账号输⼊ 1\,密码输⼊or 1=1 --+ ,最后拼接出来的语句是select * from xxx where id='1\' and pwd='or 1=1--+' 其中\将'转义,id的值就变为(1' and pw=),后边跟⼀个or 1=1返回的逻辑为true就可以进⾏SQL注⼊了。
过滤了select怎么注⼊?
kettle有什么好处盲注 但是只能注⼊当前表
如果可以堆叠注⼊的话,可以赋值变量为16进制
mysql不知道列名怎么爆字段?
查询information_schema表。
追问,这个表⽆权访问怎么办?
利⽤union查询,进⾏查询时语句的字段数必须和指定表中的字段数⼀样,不能多也不能少,不然就会报错,例如:Select 1,2,3 union select * from xxx; (xxx表有三列),结果为三列。
mysql报错注⼊常⽤的函数及原理?
1.XML类
extractvalue() 对xml⽂档查询,报错原理与updatexml相同
updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) 对xml⽂档修改
第⼀个参数:XML_document是String格式,为XML⽂档对象的名称,⽂中为Doc
第⼆个参数:XPath_string (Xpath格式的字符串) ,Xpath即为xml⽂档中的路径表⽰⽅法(标签即视为路径),有点类似于linux⽂件系统的路径表⽰
第三个参数:new_value,String格式,替换查到的符合条件的数据
语句中,concat返回的路径不符合Xpath格式,所以报XPATH syntax error的错
2.floor()+rand()+group by
向下取整
select count(*),(concat(floor(rand(0)*2),(select version())))x from table1 group by x;
group by会产⽣虚拟表,floor(rand(0)*2)产⽣0或1,导致虚拟表主键重复,产⽣报错
id=1 and exp(~(select * from(select user())a)),利⽤exp溢出、取反~、⼦查询。
⼏何函数
geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring()
例如,id=1 and linestring((select * from(select * from(select user())a)b))
宽字节注⼊原理?
宽字节是在⼀些特定的编码,如GBK中才有的,编码将两个字节认为是⼀个汉字(前⼀个字符ascii码要⼤于128,才到汉字的范围)。PHP的函数为了防⽌sql注⼊,将传⼊参数值进⾏转义,将' 转义为\',单引号失去作⽤。因此,我们需要将\给绕过,这样才可以加'号。
pdo防sql注⼊原理?
参数化查询:变量和SQL模板分两次发送,预编译已经产⽣了词法分析树,再传参不会修改语义。
预编译select a from b where c = ? and d = ? 再传递变量进去
通过sql注⼊写webshell导致RCE?
select ... into outfile 'filename'
例如
select <?php eval($_POST[ximo]); ?> into outfile xxx
具有⽂件读写权限,写⼊的⽂件所在⽬录有执⾏权限才可以。
sqlmap的使⽤模式和⽀持的数据库?
BEUSTQ,布尔盲注、错误、联合、堆叠、时间、内联
⽀持数据库:MySQL,Oracle,PostgreSQL,Microsoft SQL Server,MicrosoftAccess, IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB
limit 后怎么注⼊?
procedure analyse()这个⼦查询,利⽤extractvalue ,BENCHMARK等函数
参考:
Broken Authentication-失效的⾝份认证
与⾝份验证和会话管理相关的应⽤程序功能经常被错误地实现,允许攻击者破坏密码、密钥或会话令牌,或利⽤其他实现缺陷来暂时或永久地假设其他⽤户的⾝份。
例如:token不够随机,可预测
Sensitive Data Exposure-敏感数据泄露
许多 Web 应⽤程序和 API 没有正确保护敏感数据,例如⾦融、医疗保健。攻击者可能会窃取或修改此类保护不⼒的数据,以实施信⽤卡欺诈、⾝份盗⽤或其他犯罪活动。敏感数据可能会在没有额外保护的情况下受到损害,例如静态或传输中的加密,并且在与浏览器交换时需要特殊的预防措施。
例如,查看他⼈信息的API,⾝份证号在前端加了*,导致可以在流量中获取完整⾝份证号,导致密码为⽣⽇的⽤户被攻击。
XXE-XML 外部实体
许多旧的或配置不当的 XML 处理器评估 XML ⽂档中的外部实体引⽤。外部实体可⽤于使⽤⽂件 URI 处理程序、内部⽂件共享、内部端⼝扫描、远程代码执⾏和拒绝服务攻击来公开内部⽂件。
简述⼀下XXE漏洞产⽣的原理,针对PHP和JAVA,XXE分别可以进⾏哪些恶意利⽤?
服务端接收并解析了来⾃⽤户端的xml数据,⽽⼜没有做严格的安全控制,从⽽导致xml外部实体注⼊。
图⽚来源:
seajs下载Broken Access Control-⽆效的访问控制
对经过⾝份验证的⽤户可以做什么的限制通常没有得到正确执⾏。攻击者可以利⽤这些缺陷来访问未经授权的功能和数据,进⽽越权,例如访问其他⽤户的帐户、查看敏感⽂件、修改其他⽤户的数据、更改访问权限等。
Security Misconfiguration-安全配置错误
web前端基础面试题安全配置错误可以发⽣在⼀个应⽤程序堆栈的任何层⾯,包括平台、Web服务器、应⽤服务器、数据库、框架和⾃定义代码。开发⼈员和系统管理员需共同努⼒,以确保整个堆栈的正确配置。⾃动扫描器可⽤于检测未安装的补丁、错误的配置、默认帐户的使⽤、不必要的服务等。
XSS-跨站脚本攻击
XSS漏洞的防御策略?
前端过滤字符,后端⽩名单(例如,CSP)只允许固定的标签,设置http-only,防⽌cookie被读取。
DOM型XSS和⼀般的XSS区别?
基于⽂档对象模型(Document Object Model,DOM)的⼀种漏洞,在JavaScript脚本动态执⾏的过程中产⽣的。
存储型xss在纯内⽹的环境中,可以怎么利⽤?
xss本质上是任意代码执⾏,不要仅限于弹cookie,知名的XSS框架可以参考⼀下,xss可以修改⽹站页⾯,甚⾄可以扫描端⼝,如果你也在内⽹,可以嗅探密码等等。
react native框架中的xss?
JSON.stringfy将JavaScript对象转化为了JSON字符串,然后以全局变量的⽅式插⼊到了页⾯中,所以传的字符串有问题,可能会产⽣这个问题。
Insecure Deserialization-不安全的反序列化
不安全的反序列化通常会导致远程代码执⾏。即使反序列化缺陷不会导致远程代码执⾏,它们也可⽤于执⾏攻击,包括重放攻击、注⼊攻击和提权攻击。
Using Components with Known Vulnerabilities-使⽤已知漏洞的组件
组件(例如库、框架和其他软件模块)以与应⽤程序相同的权限运⾏。如果利⽤易受攻击的组件(如structs 2),此类攻击可能会导致严重的数据丢失或服务器接管。使⽤具有已知漏洞的组件的应⽤程序和 API 可能会破坏应⽤程序防御并引发各种攻击和影响。
Insufficient Logging & Monitoring-⽇志和监控不⾜
⽇志记录和监控不⾜,再加上与事件响应的集成缺失或⽆效,使攻击者能够进⼀步攻击系统,保持持久性,转向更多系统,并篡改、提取或破坏数据。⼤多数违规研究表明检测违规的时间超过 200 天,通常由外部⽅⽽不是内部流程或监控检测到。
OWASP Top 10 (2013及之前版本)
这⾥补充⼀下和2017不同的⼏个
不安全密码存储
对重要信息不进⾏加密处理或加密强度不够,或者没有安全的存储加密信息,都会导致攻击者获得重要信息。此风险还涉及Web应⽤以外的安全管理。
例如,2011年某博客⽹站被拖库,密码使⽤明⽂存储。
不安全的对象引⽤
指⼀个已经授权的⽤户,通过更改访问时的⼀个参数,从⽽访问到了原本其并没有得到授权的对象。Web应⽤往往在⽣成Web页⾯时会⽤它的真实名字,且并不会对所有的⽬标对象访问时来检查⽤户权限,所以这就造成了不安全的对象直接引⽤的漏洞。
例如,不进⾏鉴权时,抓包修改可能导致访问未授权链接,。
限制URL访问失败
这个漏洞也是与认证相关的,这种漏洞具体是指在系统已经对url的访问做了限制的情况下,但这种限
制并没有⽣效。常见的例⼦是系统没有对⽤户进⾏⾓⾊的检查,以及⽤户通过修改URL的action并指向未被授权页⾯就能访问该页⾯。
缺乏传输层保护
是⼀种缺少了对敏感数据保护的漏洞,不同在于这种漏洞更多关注的是数据在⽹络上的传输,造成这个漏洞的原因往往如下:
未能识别所有的敏感数据;
未能识别敏感数据发送的所有位置;
未能在每个位置对敏感数据提供合理的保护
例如,某⽹站使⽤http⽽不是https。
未验证的重定向或跳转
在Web应⽤中重定向是极为普通的,并且通常重定向所引发的⽬的是带有⽤户输⼊参数的⽬的url,⽽如果这些重定向未被验证,那么攻击者就可以引导⽤户访问他们想要⽤户访问的站点
同样,转发也是极为普遍的,本质上转发是在同⼀个应⽤中对⼀个新页⾯发送请求,并且有时是⽤参数来定义⽬标页⾯的。同样,如果参数未被验证,那么攻击者就可以利⽤其来绕过认证或是授权检查。
危害如下:
攻击者通过重定向可以试图安装恶意软件或诱使受害⼈泄露密码等敏感信息,通过转发可以绕过访问限制
如何防范:
1.避免使⽤重定向和转发
2.如果使⽤了,不要在确定⽬标时涉及到⽤户参数
3.如果⽆法避免使⽤⽤户参数,则应确保⽬标参数值对于当前⽤户是有效的并已授权
CSRF-跨站伪造请求
CSRF的原理是什么?
构造链接,在⾃⼰的⽹站或邮箱等引诱已登录⽤户进⾏点击等操作,进⽽修改⽤户信息,如⽤户的头像、发货地址等。更有甚者,可能执⾏恶意操作,⽐如修改密码、添加/删除好友或者点赞/转发/评论/私信。
注:攻击者不能获取信息,因为是浏览器发送请求给⽹站服务器。
如果是post请求如何攻击?
隐藏form表单,⾃动提交caption属性和名称属性
没有表单,只是post请求呢?
ajax发送post请求
如何防范CSRF?
1. referer检测
2. 添加token
3. ⼆次验证
会话认证管理缺陷
⾝份认证和会话管理常见安全问题
账号或密码未做限制, 可暴⼒猜解。没有限制登录次数,加验证码
弱密码策略, 允许简单密码存在, 如123456 , admin
密码回⽅案存在缺陷, 如: 密保问题设计
密码更改⽅案存在缺陷
静态变量的作用域cookie 作为认证凭证, 携带敏感信息
Sessionid 没有时效限制, 特别是单点登录令牌在⽤户注销时没有失效
成功注册后, 会话ID 没有轮转。
sessionid 和其他认证凭据使⽤未加密连接传输。
混⽤个性化数据的⾝份验证数据,个性化数据适于永久的cookie,⽽⾝份验证cookie不应是永久的
认证会话管理洞防御
设置验证码, 防⽌暴⼒猜解
强制复杂密码策略, 不允许默认弱密码存在
⾝份认证采⽤多因素认证或强⾝份认证
认证cookie 中,加⼊两个时间, ⼀个是“ 即使⼀直在活动,也要失效" 的时间,⼀个是“ 长时间不活动的失效时间"
split的近义词cookie设置http-only, 防⽌脚本读取
cookie 设置Secure, 只允许https传输
⽹络传递认证凭证采⽤SSL/TLS加密
SSRF-服务器端请求伪造
SSRF原理?
SSRF 形成的原因⼤都是由于服务端提供了从其他服务器应⽤获取数据的功能,且没有对⽬标地址做过滤与限制。⽐如从指定URL地址获取⽹页⽂本内容,加载指定地址的图⽚,⽂档等等。SSRF漏洞通过篡改获取资源的请求发送给服务器(服务器并没有检测这个请求是否合法的),然后服务器以他的⾝份来访问服务器的其他资源。SSRF利⽤存在缺陷的Web应⽤作为代理攻击远程和本地的服务器。
SSRF攻击⽅法?
利⽤file、dict、gopher协议
常⽤来进⾏:
端⼝扫描
攻击内⽹存在漏洞的服务
攻击Web应⽤进⾏指纹识别及其中的漏洞
如果PHP安装了expect扩展,可以通过expect协议执⾏系统命令
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论