1、介绍一下ssrf漏洞(服务端请求),怎么利用
形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据.
2、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
3、CSRF、SSRF和重放攻击有什么区别?
CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的
4.给你一个网站你是如何来渗透测试的?
在获取书面授权的前提下。
5、回答一下OWASP TOP10
1.注入
2.失效的身份认证:
3.敏感信息泄漏
4.XXE: XML外部实体
5.失效的访问控制:管理页面仅能管理员权限访问;越权漏洞
6.安全配置错误:页面错误信息,默认密码,使用已知漏洞的应用
7.XSS
8.不安全的反序列化:一个PHP论坛使用PHP对象序列化来保存一个cookie,用户修改cookie即可伪造管理员登陆
9.使用含有已知漏洞的组件:比如structs2框架
10.不足的日志记录和监控:代码被删除,无法溯源;记录登陆失败次数;监控问题没被管理员响应
6、啥是同源策略,跨域有几种方式?
浏览器安全的基石是"同源政策",目的是为了保证用户的信息安全,防止恶意网站窃取数据,避免cookie共享。同源含义是协议、域名、端口相同的两个网页才可以共用cookie。目前如果非同源,有三种行为收到限制: - Cookie、LocalStorage 和 IndexDB 无法读取。 - DOM 无法获得。 - AJAX 请求不能发送
7、SSRF漏洞原理是什么?利用时有哪些伪协议?
secpulse.com/archives/65832.html
(1)漏洞原理:
利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。
(2)ssrf用处:
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
2.攻击内网或本地其他服务
3.对内网web应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5.利用file协议读取本地文件等。
挖掘漏洞:
1.从URL关键字中寻找,比如:source,share,link,src,imageurl,target等。
2.在web功能上寻找:
1)分享:通过URL地址分享网页内容
2)转码服务
3)在线翻译
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的api实现以及其他调用URL的功能
(3)绕过姿势
第一种方法:http://example.com@127.0.0.1
第二种方法:利用IP地址的省略写法绕过,[::]绕过localhost
第三种方法:DNS解析 http://127.0.0.1.xip.io/ 可以指向任意ip的域名:xip.io
第四种方法:利用八进制IP地址绕过,利用十六进制IP地址,绕过利用十进制的IP地址绕过
(4)利用协议
https://www.secpulse.com/archives/70471.html
接受ua为curl的时候,支持的协议有
使用curl -v http://xx.com/ssrf.php?url=sxxx
file://
ssrf.php?url=file:///etc/password
Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://
(5)漏洞修复
1、检查是否为内网IP地址 绕过方法: 利用八进制IP地址绕过 利用十六进制IP地址绕过 利用十进制的IP地址绕过 利用IP地址的省略写法绕过 最好的做法:IP地址转换为整数再进行判断
获取真正请求的host
2、如何正确的获取用户输入的URL的Host? 最常见的就是,使用http://233.233.233.233@10.0.0.1:8080/、http://10.0.0.1#233.233.233.233这样的URL,让后端认为其Host是233.233.233.233,实际上请求的却是10.0.0.1。这种方法利用的是程序员对URL解析的错误,有很多程序员甚至会用正则去解析URL。使用urllib.parse可以解析真正的hostname
只要Host只要不是内网IP即可吗? host可能为ip,可能为域名,利用xip.io绕过。方法:判断是否为http协议,获取url的host,再解析该host,将解析到的ip再进行检查
只要Host指向的IP不是内网IP即可吗? 不一定,可能会30x跳转
归纳 解析目标URL,获取其Host 解析Host,获取Host指向的IP地址 检查IP地址是否为内网IP 请求URL 如果有跳转,拿出跳转URL,执行1
8、PHP文件包含函数
include() :使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。
inclue_once() :功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
require():使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出错误信息并立即终止程序。
require_once() :功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
8、说一下TCP三次握手四次挥手
三次握手
客户端 syn 发送到服务端,变成 SYN_SENT 状态
服务端 ack=syn+1 回传syn到客户端,变成SYN_RECV状态
客户端 ack=syn+1, 变成ESTABLISHED状态,传输给服务端
服务端收到ACK后变成ESTABLISHED状态,建立连接
SYN标志位为表示请求连接,ACK表示确认
四次挥手
客户端=主动关闭方
客户端FIN->服务端
服务端ACK=FIN+1->客户端,服务端到客户端的连接关闭
服务端FIN->客户端
客户端ACK=FIN+1->服务端
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
9、DOM XSS与反射XSS有啥不同,给你10s,如何快速判断一个XSS是否是DOM XSS?
https://www.zhihu.com/question/26628342
存储型XSS:你发送一次带XSS代码的请求,以后这个页面的返回包里都会有XSS代码;
反射型XSS:你发送一次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码;
DOM型XSS:你发送一次带XSS代码的请求,在返回包里压根儿就找不到XSS代码的影子;
10、什么是CSP策略
https://www.zhihu.com/question/21979782 浏览器内容安全策略,减少xss攻击。
11、说说xxe漏洞攻击原理是什么,如何找xxe漏洞及攻击方法
攻击原理: 运维人员使用了低版本php,libxml低于2.9.1就会造成XXE或者程序员设置了libxml_disable_entity_loader(FALSE)(前提条件);
查找漏洞:
1.抓包看accept头是否接受xml
2.抓包修改数据类型,把json改成xml来传输数据
攻击方法:
12、xxe攻击在无回显的时候你是如何突破的
1.先使用php://filter获取目标文件的内容,然后将内容以http请求发送到接受数据的服务器(攻击服务器)xxx.xxx.xxx
2.有报错直接查看报错信息
3.无报错需要访问接受数据的服务器中的日志信息,可以看到经过base64编码过的数据,解码后便可以得到数据。
13、你是如何防范xxe漏洞的
1.手动黑名单过滤
过滤关键词:<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC
2.提高php版本
3.修改代码
扩展题 :
1、你挖洞影像最深的是什么?
2、你认为你的渗透水平在国内大概是什么水平,能给自己打多少分
3、说说你以前在你公司主要做什么安全工作?如每天、每月、每年做些什么安全工作
4、你在各大漏洞平台挖过漏洞吗,能说说吗?
5、你写过什么好的安全漏洞文章发布过吗,是否可以说说?
网友评论