1. SQL注入原理的种类?防御呢?预编译原理?
-
原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 -
种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等。 -
修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等。 -
预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成字符串进行查询处理,因此杜绝了sql注入的产生。
2. XSS的种类有哪些?区别?修复呢?
-
种类:存储型,反射型,DOM型。 -
区别:存储型常出现在信息修改添加等地方,导致恶意代码被存储在数据库中,每当被攻击者访问到后就会触发执行;反射型常出现在url中,一般需要攻击者提前构造好恶意链接,欺骗用户点击,触发攻击代码;DOM型攻击代码在url中,然后输出在了浏览器的DOM节点中。简单比较会发现,存储和反射都经过服务器,而DOM是纯前端。 -
修复:对输入数据进行Html Encode处理,白名单过滤,过滤JavaScript事件的标签,开启http-only,装WAF等。
3. XSS、CSRF和SSRF区别?(很常问)
-
XSS:跨站脚本攻击。是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。 -
CSRF:跨站请求伪造脚本攻击。是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。 -
SSRF:服务器请求伪造攻击。是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
4. XXE漏洞了解吗?
XXE漏洞即xml外部实体注入漏洞,发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口、攻击内网网站、发起dos攻击等危害。
5. PHP反序列化有了解吗?
序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化后再传入。而想要利用有类就要用到魔术方法。
5.1 JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常问,无论hvv还是工作面试)
-
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用于反序列化,把字节流还原成对象。 -
shiro反序列化主要是Apache shiro提供了一个remember的功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户日常使用。服务器对cookie的处理流程存在漏洞,AES硬编码有默认密钥,若程序员未修改或设置过于简单,攻击者可进行cookie重构,构造恶意代码并序列化、加密、编码,服务器处理时会触发恶意代码。
6. 逻辑漏洞遇到过哪些,给你登录框有没有什么思路?
-
常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面等等。 -
登录页面思路:爆破,session覆盖,sql注入,xss,任意用户注册,js文件查看敏感信息,短信轰炸,万能密码,二次注入,模板注入等等。
7. CDN和DNS区别?CDN绕过思路?
-
CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,降低网络拥堵。 -
DNS:域名服务器,主要作用就是将域名翻译成ip地址。 -
CDN绕过思路:子域名,内部邮件,黑暗引擎搜索,国外ping,证书及DNS查询,app抓包,配置不当泄露,扫全网,DOS攻击等。
8. 常见的中间件漏洞知道哪些?
-
IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等。 -
Apache:解析漏洞、目录遍历等。 -
Nginx:文件解析、目录遍历、CRLF注入、目录穿越等。 -
Tomcat:远程代码执行、war后门文件部署等。 -
JBoss:反序列化漏洞、war后门文件部署等。 -
WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等。
9. WAF绕过的手法你知道哪些?
从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过;从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过;从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。
10. 命令无回显如何解决?
无回显可采用延时判断,http请求监听,DNSlog利用,写入当前目录下载查看等等。
11. 3389端口无法连接的几种情况?
3389关闭状态;端口修改;防火墙连接;处于内网环境;超过了服务器最大连接数;管理员设置权限,指定用户登录。
12. 常问的端口信息?
21:FTP文件传输协议;22:SSH远程连接;23:TELNET远程登录;25:SMTP邮件服务;53:DNS域名系统;80:HTTP超文本传输协议;443:HTTPS安全超文本传输协议;1433:MSSQL;3306:MYSQL;3389:windows远程桌面服务端口;7701:weblogic;8080:TCP,HTTP协议代理服务器,Apache-tomcat默认端口号。
13. 渗透测试的流程?(主要看自己)
-
单一网站:先判断有无CDN,有则先找真实ip,无则扫扫旁站,c段,此外识别CMS,查看使用什么中间件、插件、系统等等,再对其进行端口探测,目录扫描,查看网站的js文件,看看有没有敏感信息泄露,找找看有没有app,公众号之类的等等扩大资产面,然后对收集到的信息进行常规的漏洞探测。 -
网段或区域:使用goby工具对资产进行一个批量的扫描,批量打点,然后对可能存在漏洞的薄弱点进行漏洞探测。
14. 什么是逻辑漏洞?说出至少三种业务逻辑漏洞,以及修复方式?
-
逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。 -
如支付漏洞,有价格修改、支付状态修改等;登录漏洞,有修改状态信息、密码修改跳过验证等;密码找回漏洞,存在密码允许暴力破解、可跳过验证步骤等。修复方式根据不同漏洞类型,对关键业务流程进行严格的校验和权限控制等。
15. 未授权访问你可以简单说说吗?
未授权访问指对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直接访问到某些登录后才能访问到的页面。如Redis未授权访问漏洞,未开启认证可直接连接数据库;JBOSS未授权访问漏洞,访问特定路径可浏览部署管理信息面板且能直接部署上传木马。
16. 打点一般会用什么漏洞?
优先以java反序列化这些漏洞像shiro,fastjson,weblogic,用友oa等等进行打点,随后再找其他脆弱性易打进去的点。因为javaweb程序运行都是以高权限有限运行,部分可能会降权。
17. 平常怎么去发现shiro漏洞的?
登陆失败时候会返回rememberMe=deleteMe字段或者使用shiroScan被动扫描去发现。未登陆时,请求包和返回包相关字段有特定表现;登陆失败,返回包会有rememberMe=deleteMe字段;登陆成功,根据是否勾选RememberMe字段,返回包和后续请求包的字段存在不同情况。
18. weblogic权限绕过?
通过静态资源来绕过权限验证,防止被重定向到登陆界面。通过请求.portal,控制处理的Servlet是渲染UI的MBeanUtilsInitSingleFileServlet 。通过编码后的../ ,让最终渲染的模版是console.portal。
19. fastjson漏洞利用原理?
在请求包里面发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,该类的_bytecodes字段会在部分函数作用下生成java实例,实现通过字段传入类并在类生成时执行构造函数。
20. 拿到webshell不出网情况下怎么办?
reg上传去正向连接;探测出网协议,如dns,icmp。
21. PHP代码执行的危险函数?PHP命令执行函数?
-
PHP代码执行的危险函数:call_user_func()、call_user_func_array()、create_function()、array_map()。 -
PHP命令执行函数:system()、shell_exec()、passthru()、exec()、popen()、proc_open()、putenv()。
22. Sql注入无回显的情况下,利用DNSlog,mysql下利用什么构造代码?mssql下又如何?
没有回显的情况下,一般编写脚本,进行自动化注入,同时注意调整请求频率,有条件使用代理池。利用DNSlog注入,原理是把服务器返回的结果放在域名中,读取DNS解析日志获取信息。mysql中利用load_file()构造payload;mssql下利用master..xp_dirtree构造payload。
23. phpmyadmin写sehll的方法?
常规导入shell的操作;一句话导出shell;日志备份获取shell。
24. 缓冲区溢出原理?
由于C/C++语言没有数组越界检查机制,当向局部数组缓冲区里写入的数据超过为其分配的大小时,就会发生缓冲区溢出。攻击者可利用缓冲区溢出来窜改进程运行时栈,改变程序正常流向,轻则导致程序崩溃,重则系统特权被窃取。
25. SSRF禁用127.0.0.1后如何绕过,支持哪些协议?
可利用进制转换、DNS解析、句号(127.0.0.1)、[::](http://[::]:80/)、@(http://[email protected])、短地址(http://dwz.cn/11SMa)等方式绕过;支持Dict://、SFTP://、TFTP://、LDAP://、Gopher://等协议。
26. phar协议如何利用,php伪协议input与post数据包发送有什么区别?
phar协议可Bypass一些waf,绕过上传限制,Phar://伪协议读取phar文件时会反序列化meta-data储存。区别在于不同的Content-Type下,php://input和$_POST获取数据的情况不同 。
27. ssrf怎么用redis写shell?
SSRF可对内网扫描、攻击内网应用、利用协议读取本地文件、在云计算环境调用内网操作ECS的API。webligic SSRF漏洞可通过gopher协议操作内网的redis,利用redis将反弹shell写入crontab定时任务,进行url编码,将r字符串替换成%0d%0a。
28. sqlmap自带脚本你知道哪些?由编写过吗?
apostrophemask.py:将引号替换为UTF-8,用于过滤单引号;base64encode.py:替换为base64编码;multiplespaces.py:围绕SQL关键字添加多个空格;space2plus.py:用+号替换为空格。
29. SVN/GIT源代码泄露?
在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息;使用git进行版本控制,对站点自动部署时,如果配置不当,可能会将.git文件夹直接部署到线上环境,引起git泄露漏洞。
30. 提权你了解过吗?udf提取原理是什么?
将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的libplugin文件夹下);从udf文件中引入自定义函数(user defined function);执行自定义函数。
31. 讲诉一些近期及有代表性的漏洞?
介绍了Microsoft Exchange .Net反序列化远程代码执行(CVE-2020-0688)、Apache Tomcat 文件包含漏洞(CVE-2020-1938)等多个漏洞,包括漏洞所在组件、产生原因和危害等。
32. 了解过解析漏洞,分别有哪些?
介绍IIS、nginx、apache的解析漏洞,如IIS在特定目录下文件会被错误解析,nginx存在文件路径解析问题,apache按特定顺序解析文件后缀等。
33. 为何一个mysql数据库的站,只有一个80端口开放?
更改了端口,没有扫描出来;站库分离;3306端口不对外开放。
34. 注入时可以不使用and或or或xor,直接order by开始注入吗?
and/or/xor前面的(1=1)、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤。
35. 在有shell的情况下,如何使用xss实现对目标站的长久控制?
在后台登录处加一段记录登录账号密码的js,并判断是否登录成功,若成功则记录账号密码;在登录后才可以访问的文件中插入XSS脚本。
36. 目标站无防护,上传图片可以正常访问,上传脚本格式访问则403,什么原因?
有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过。
37. access扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?
迅雷下载,直接改后缀为.mdb。
38. 对于不能直接上传而且只能通过命令行执行的shell,应该怎么办?
使用bitsadmin、powershell、certutil、WGET进行下载。
39. shiro不出网怎么利用?
定位Web目录写入文件构造回显;利用内存马,通过时间延迟获取Web路径写入webshell。
40. 文件包含Getshell思路?
参考链接:https://www.anquanke.com/post/id/248627
41. 文件上传绕过WAF思路?
参考链接:https://cloud.tencent.com/developer/article/1944142
42. xss的防护方法有哪些呢?httponly绕过?
-
防护方法:输入过滤;纯前端渲染;转义HTML。 -
httponly绕过方式:CVE-2012-0053;PHPINFO页面(若目标网站存在,可通过XMLHttpRequest请求获取Cookie信息);iframe框架钓鱼;跳转钓鱼;历史密码(通过js伪造登录表单获取)。
原文始发于微信公众号(土拨鼠的安全屋):网安面经!42 道 Web 安全面试题全解析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论