# 网安经典面试题 #### 01、php爆绝对路径方法? > 单引号引起数据库报错 访问错误参数或错误路径 探针类文件如phpinfo 扫描开发未删除的测试文件 google hacking phpmyadmin报路径:/phpmyadmin/libraries/lect_lang.lib.php 利用漏洞读取配置文件找路径 恶意使用网站功能,如本地图片读取功能读取不存在图片,上传点上传不能正常导入的文件 #### 02、你常用的渗透工具有哪些,最常用的是哪个? > burp、nmap、sqlmap、awvs、蚁剑、冰蝎、dirsearch、御剑等等 #### 03、xss盲打到内网服务器的利用 > 钓鱼管理员 信息收集 #### 04、鱼叉式攻击和水坑攻击? > 鱼叉攻击:指利用木马程序作为电子邮件的附件,发送到目标电脑上,诱导受害者去打开附件来感染木马 水坑攻击:分析攻击目标的上网活动规律,寻找攻击目标经常访问的网站的弱点,将网站攻破并植入恶意程序,等待目标访问 #### 05、什么是虚拟机逃逸? > 利用虚拟机软件或者虚拟机中运行的软件的漏洞进行攻击,以达到攻击或控制虚拟机宿主操作系统的目的 #### 06、中间人攻击? 原理: > 在同一个局域网中,通过拦截正常的网络通信数据,并进行数据篡改和嗅探 防御: > 在主机绑定网关MAC与IP地址为静态 在网关绑定主机MAC与IP地址 使用ARP防火墙 #### 07、TCP三次握手过程? > 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手 #### 08、七层模型? > 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 #### 09、对于云安全的理解 > 融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,传送到Server端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端 #### 10、了解过websocket吗? > WebSocket是一种在单个TCP连接上进行全双工通信的协议,最大特点是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。 #### 11、DDOS是什么?有哪些?CC攻击是什么?区别是什么? **DDOS:** > 分布式拒绝服务攻击,利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应 主要方式: SYN Flood UDP Flood ICMP Flood Connection Flood HTTP Get UDP DNS Query Flood **CC攻击:** > 模拟多个正常用户不停地访问如论坛这些需要大量数据操作的页面,造成服务器资源的浪费,CPU长时间处于100%,网络拥塞 **两者区别:** > CC攻击网页,DDOS攻击服务器,更难防御 CC门槛较低,DDOS需要大量服务器 CC持续时间长,DDOS产生的影响大 #### 12、land攻击是什么 > 局域网拒绝服务攻击,DDOS攻击的一种,通过发送精心构造的、具有相同源地址和目标地址的欺骗数据包,致使缺乏相应防护机制的目标设备瘫痪 #### 13、你会如何进行信息收集? > 服务器信息:ip、中间件、操作系统 域名whois、ipwhois、网段归属 子域名探测 网站目录扫描、接口信息扫描 端口扫描 各大引擎搜索相关信息 #### 14、什么是CRLF注入攻击? > 通过“回车”和“换行”字符注入HTTP流,实现网站篡改、跨站脚本、劫持等。 #### 15、防止XSS,前端后端两个角度? 前端: > 用户输入特殊字符过滤转义为html实体 用户输出编码 后端: > 实体化编码 函数过滤 限制字符长度 #### 16、如何防护一个端口的安全? > 利用WAF、IDS、IPS等设备 危险服务端口禁止对外访问或限制IP访问 服务定期更新版本 #### 17、webshell检测思路? > 静态检测:匹配特征码,特征值,危险函数 动态检测:WAF、IDS等设备 日志检测:通过IP访问规律,页面访问规律筛选 文件完整性监控 #### 18、发现IIS的网站,怎样试它的漏洞?(根据版本) https://mp.weixin.qq.com/s/5XV984kErF2Zhh-P5aoUwQ #### 19、SQL注入问题总结 https://mp.weixin.qq.com/s/frwK49IatUqUoT-4DR08GQ #### 20、GPC是什么?开启了怎么绕过 GPC: > php.ini配置文件中的magic_quotes_gpc,实现为get、post、cookie传入的单引号、双引号、反斜线、NULL字符添加反斜线 绕过: > PHP5的GPC对$_SERVER的忽略,可在http请求头注入 二次注入 宽字节注入 #### 21、web常用的加密算法有什么 > 单向散列加密 MD5、SHA、MAC 对称加密 AES、DES 非对称加密 RSA、RSA2 #### 22、XSS除了获取cookies还能做什么? > 获取管理员ip xss蠕虫 钓鱼攻击 前端JS挖矿 键盘记录 屏幕截图 #### 23、运营商(或其他)网络劫持 > 运营商劫持:广告投放 DNS劫持:通过各种手段篡改DNS,劫持网络 #### 24、DNS欺骗是什么 > 攻击者冒充域名服务器的一种欺骗行为 #### 25、缓冲区溢出原理和防御 原理: > 当写入缓冲区的数据量超过该缓冲区所能承受的最大限度时,发生缓冲区溢出,溢出的数据被黑客加以利用,形成远程代码执行漏洞。 防御: > 基于操作系统防御 缓冲区边界检查 安全编程 #### 26、网络安全事件应急响应 > 断网:条件允许时优先断网,防止黑客进一步操作或删除痕迹 取证:通过分析登录日志、网站日志、服务日志寻找黑客ip,查看黑客进行的操作 备份:备份服务器文件,对比入侵前后产生变化的文件 查漏:通过上述步骤寻找业务薄弱点,修补漏洞 杀毒:清除黑客留下的后门、webshell、管理账号 溯源:通过黑客ip地址,入侵手段等 记录:归档、预防 #### 27、企业内部安全 > 实名制联网 重要网段隔离 禁止接入任何USB设备 禁用WIFI网络 IP与MAC地址绑定 部署网络监控、IDS、IPS设备 定期培训,提高员工安全意识 #### 28、业务上线前,怎么测试,从哪些角度测试 > 安全测试:寻找产品漏洞,页面漏洞,服务漏洞,敏感信息泄露,逻辑漏洞,弱口令 性能测试:压力测试 功能完整性测试 #### 29、应用有漏洞,但是无法修复和停用,你怎么办 > 限制IP白名单访问 使用WAF、IDS、防火墙设备 #### 30、CSRF怎么防护? > 验证HTTP Referer字段 添加Token字段并验证 添加自定义字段并验证 #### 31、文件上传绕过方法? WAF绕过: > 修改上传表单字段 表单字段大小写替换 表单字段增加或减少空格 表单字段字符串拼接 构造双文件上传表单,同时上传双文件 编码绕过 垃圾数据填充绕过 文件名大小写绕过 服务器检测绕过: > MIME类型绕过 前端JS检测抓包改包绕过 黑名单绕过:php3、asa、ashx、windows特性(test.asp_、流特性)、apache解析漏洞 图片内容检测使用图片马绕过 .htassess绕过 白名单检测绕过: > 截断上传绕过 IIS6/7/7.5解析漏洞,nginx低版本解析漏洞 文件包含绕过 #### 32、验证码相关利用点 > 验证码复用 验证码可识别 验证码失效 验证码DDOS #### 33、cookie你会测试什么内容 > sql注入 xss 权限绕过 敏感信息泄露 #### 34、说出几个业务逻辑漏洞类型? > 任意用户密码重置 短信轰炸 订单金额修改 忘记密码绕过 恶意刷票 验证码复用 #### 35、简述文件包含漏洞 > 调用文件包含函数时,未严格限制文件名和路径,如include()、require()等函数 #### 36、业务逻辑漏洞,用户任意密码重置有什么例子,因为什么因素导致的? > 普通用户重置管理用户密码 普通用户重置普通用户密码 未设置用户唯一Token,导致越权 #### 37、渗透测试过程中发现一个只能上传zip文件的功能,有什么可能的思路? > shell压缩上传,程序自解压getshell 尝试解析漏洞getshell 寻找文件包含漏洞 木马钓鱼管理员 #### 38、为什么aspx木马权限比asp大? > aspx使用的是.net技术,IIS中默认不支持,ASPX需要依赖于.net framework,ASP只是脚本语言 入侵的时候asp的木马一般是guest权限APSX的木马一般是users权限 #### 39、只有一个登录页面有哪些思路? > SQL注入、万能密码 暴力破解 权限绕过 目录扫描 敏感信息泄露 #### 40、请求头中哪些是有危害的? > COOKIE注入 user-agent注入 X-Forwarded-For注入 Referer注入 #### 41、谈谈水平/垂直/未授权越权访问的区别? > 水平越权:普通用户越权访问普通用户 垂直越权:普通用户越权访问管理用户 未授权访问:权限控制不严,导致无需登录访问已登录用户页面 #### 42、xss有什么?执行存储型的xss的危害和原理 > 存储型、反射型、DOM型 存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库 存储型XSS危害: > 窃取用户Cookie XSS钓鱼攻击 XSS蠕虫攻击 获取键盘记录 获取用户信息 获取屏幕截图 #### 43、主机疑似遭到入侵,要看哪里的日志 > 系统登录日志 服务访问日志 网站日志 数据库日志 #### 44、python常用的标准库 > 正则表达式 re 时间模块 time 随机数 random 操作系统接口 os 科学计算 math 网络请求 urlib http库 requests 爬虫库 Scrapy 多线程库 threading #### 45、reverse_tcp 和 bind_tcp 的区别? > reverse_tcp:攻击机设置一个端口和IP,Payload在测试机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现测试机已经连接 白话就是让受控机主动连接我们 bind_tcp:攻击机设置一个端口(LPORT),Payload在测试机执行打开该端口,以便攻击机可以接入 白话就是我们主动连接受控机 使用reverse_tcp较为安全,一般不会被防火墙发现 #### 46、oauth认证过程中可能会出现什么问题,导致什么样的漏洞? > CSRF redirect_uri校验不严格 错误的参数传递 #### 47、做了cdn的网站如何获取真实IP > 全球ping 查询历史解析记录 探针文件如phpinfo等 利用命令执行连接我们的服务器或DNSlog 寻找网站配置 通过二级域名 全网扫描,title匹配 #### 48、如何实现跨域? > jsonp CORS跨域资源共享 代理跨域请求 Html5 postMessage 方法 修改 document.domain 跨子域 基于 Html5 websocket 协议 http://document.xxx + iframe #### 49、jsonp跨域与CORS跨域的区别? > jsonp浏览器支持较好,CORS不支持IE9及以下浏览器 jsonp只支持GET,CORS支持所有类型的HTTP请求 jsonp只发一次请求,复杂请求CORS发送两次 #### 50、算法?了解过什么排序? > 冒泡排序 选择排序 插入排序 #### 51、SSRF漏洞利用? > 本地文件读取 服务探测、端口扫描 攻击内网redis、mysql、fastcgi等服务 - 利用到的协议有:http/s、file、gopher、tftp、dict、ssh、telnet #### 52、常见后门方式? Windows: > 注册表自启动 shift后门 远控软件 webshell 添加管理用户 影子用户 定时任务 dll劫持 注册表劫持 MBR后门 WMI后门 管理员密码记录 Linux: > SSH后门 SUID后门 Crontab计划任务 PAM后门 添加管理员账号 Rootkit #### 53、open_basedir访问目录限制绕过方法? > 使用命令执行函数绕过 使用symlink()函数绕过 glob伪协议绕过 #### 54、PHP代码审计中容易出问题的点? > 参数拼接方式皆有可能产生SQL注入(老生常谈) 全局变量注册导致的变量覆盖 fwrite参数未过滤导致的代码执行 权限校验疏漏导致的后台功能访问 接口任意文件上传 unserialize反序列化漏洞 #### 55、红蓝对抗中蓝队反杀红队场景和姿势? > 钓鱼、蜜罐、蚁剑RCE #### 56、linux计划任务,黑客隐藏自己的计划任务会怎么做? > 临时任务:at、batch命令 #### 57、Redis未授权常见getshell的几种方式? > web绝对路径写shell 写入ssh公钥获取服务器权限 主从复制getshell #### 58、JWT的攻击手法?(头部、负载、签名) > 加密算法置为空绕过身份验证 爆破弱密钥 kid参数:任意文件读取、SQL注入、命令注入 未校验签名,内容重新编码 #### 59、JAVA中间件的漏洞,举几个例子? > JBoss反序列化 WebLogic反序列化 Tomcat任意文件写入、弱口令+后台getshell #### 60、DNS外带可以用在哪些漏洞? > SQL盲注 无回显的命令执行 XXE盲打 SSRF盲打 #### 61、HTTP-Only禁止的是JS读取cookie信息,如何绕过这个获取cookie > 劫持登录页面钓鱼绕过 #### 62、中间件漏洞总结? > 这里只写常利用的漏洞 IIS: > IIS6.0 PUT漏洞 IIS6.0 远程代码执行漏洞 IIS6.0 解析漏洞 IIS启用.net 短文件名漏洞 IIS7.0/7.5 解析漏洞 Apache: > 未知扩展名解析漏洞 配合错误导致的解析漏洞、目录遍历 Nginx: > 配置错误导致的解析漏洞、目录遍历 Tomcat: > 配置错误导致的任意代码执行、任意文件写入漏洞 弱口令+管理后台war包部署getshell manager/html 管理后台弱口令爆破 JBoss: > 5.x/6.x反序列化漏洞(CVE-2017-12149) JMXInvokerServlet反序列化 EJBInvokerServlet反序列化 JMX Console未授权访问 弱口令+管理后台war包部署getshell WebLogic: > XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506) wls9_async_response,wls-wsat 反序列化远程代码执行漏洞(CVE-2019-2725) WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628) 弱口令+管理后台war包部署getshell #### 63、谈一谈Windows系统与Linux系统提权的思路? Windows: > 数据库提权:mysql、sqlserver 第三方软件提权:serv-u DLL劫持 系统内核溢出漏洞提权:cve系列 Linux: > sudo提权 suid提权 redis 内核提权 #### 64、python有哪些框架,其中出现过哪些漏洞 > Django、Flask、Scrapy Django任意代码执行 Flask模板注入 #### 65、小程序的渗透和普通渗透的差异 > 渗透过程不变,依旧是抓包修改参数渗透 不同点是小程序会将包下载到本地,可以使用逆向还原工具反编译 #### 66、app本身的漏洞测试 四大组件 Activity组件: > activity绑定browserable与自定义协议 ActivityManager漏洞 Service组件: > 权限提升,拒绝服务攻击 Broadcast Receiver组件: > 权限管理不当 BroadcastReceiver导出漏洞 动态注册广播组件暴露漏洞 Content Provider组件: > 读写权限漏洞 Content Provider中的SQL注入漏洞 Provider文件目录遍历漏洞 #### 67、IDS/IPS防护原理及绕过思路 原理: > IDS工作在网络层,旁路部署,通过抓取和分析网络流量来发现攻击 IPS一般也是在网络层旁路,可以理解为具备阻断能力的IDS,是IDS的升级版(也有IDS检测到攻击通知阻断设备执行阻断动作的设备联动模式),可以覆盖网络层和应用层 绕过: > TCP分片:拆分出两个TCP包 IP分片:原理同TCP分片,但是丢包严重 程序bug/性能问题:发送大量无效包,消耗IPS性能 伪造TCP状态:绕过基于状态追踪的IPS IPV6绕过:使用IPV6地址绕过 #### 68、json的csrf的利用 > 使用XMLHttpRequest、fetch构造出JSON请求,利用Flash的跨域与307跳转来绕过http自定义头限制 #### 69、json格式的数据包可以测哪些漏洞 > csrf json劫持 xss #### 70、简述xxe漏洞原理与利用方式 原理: > XML外部实体注入,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,产生漏洞 利用: > DTD Document Type Definition DTD 内部声明 DTD 外部引用 引用公共DTD ENTITY > 图片来自网络 #### 71、内网服务器,如何进行信息收集? > 使用脚本收集:端口信息、服务信息 系统命令收集:域内用户可使用域命令收集域信息,等 端口扫描工具全段扫描 本机信息收集:管理密码、登录日志看管理员ip、服务密码收集、网段信息查看、历史记录查看 内网DNS域传送漏洞 #### 72、如果拿下了内网边界层的某一个机器,如何对内网其他进行探测? > 首先使用代理进入内网reg、ew等 第二在本机进行信息收集,包括管理员ip、端口服务、账号密码、路由信息、网段信息等 第三扩展到收集到的网段进行渗透,利用常用服务:SMB、MYSQL、SQLserver、ftp、telnet等 借助轻量化脚本或扫描器扫描,但一般不这么做,动静太大容易被管理员发现 #### 73、内网黄金票据、白银票据的区别和利用方式 > 图片来自网络 黄金票据: > 一旦攻击者拥有管理员访问域控制器的权限,就可以使用Mimikatz来提取KRBTGT帐户密码哈希值。 > 生成票据 > 普通域账户,利用黄金票据,创建域管账户 > 此时域管账号创建成功 ![img](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/640eb2579f956b232bb6b75109a260e8dd37dfd5.jpg%401192w.webp) 白银票据: > 获取SID和NTLM > 伪造票据 > 针对服务名伪造 ![img](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/27134dac4ab99adcddff804cabb1fcdb6d0d4235.jpg%401192w.webp) 成功获取域管账号 金票银票区别: > 获取的权限不同 金票:伪造的TGT,可以获取任意Kerberos的访问权限 银票:伪造的ST,只能访问指定的服务,如CIFS 认证流程不同 金票:同KDC交互,但不同AS交互 银票:不同KDC交互,直接访问Server 加密方式不同 金票:由krbtgt NTLM Hash 加密 银票:由服务账号 NTLM Hash 加密 #### 74、简述一下目前主流编程语言的相关漏洞 答: - 这个题的相关思路就是聊一聊目前主流语言的漏洞,你可以从两个方面进行阐述: - ThinkPHP的远程代码执行 - PHP的反序列化 - ThinkPHP文件包含 - PHP不安全函数: chroot、exec、一句话木马、proc_open等 - Java最著名的就是反序列化漏洞,反序列化漏洞出现在WebLogic、JBoss等常见Web容器; - Structs2就是任意代码执行 - Log4j2 也是很火的漏洞 - Shiro 的身份验证绕过、远程代码执行; - 注入:Django 2022新的SQL注入漏洞,即使Django采用参数化查询和ORM的防范SQL注入也存在字典注入的方式,2022最新的CVE漏洞利用QuerySet.annotate()、aggregate()和extra()方法进行注入; - XML: XML的读取会造成DoS攻击;XXE 攻击的利用; - assert 语句: 不要使用 assert 语句来防止用户访问特定代码段。默认情况下,Python 以 **debug** 为 true 来执行脚本,但在真实环境中,通常使用优化运行,这将会跳过 assert 语句并直接转到安全代码,而不管用户是否是 is_admin 。 - site-package: 伪造官方库进行代码注入和代码伪造; #### 75、如何发现目前在运行的相关系统正在遭受DDoS攻击? 答: - 问题背景: - 首先现在大多数企业已经不自己购买抗DoS的相关防御设备了,或者只是简单部署DoS流量防御设备系统,因为如果企业遭受到DoS攻击指望那几台互联网出口的抗D设备已经无法满足需求,如果互联网出入口出现高峰流量就会直接将设备打挂,从而设备流量被绕过,还是无法做到流量清洗和DoS的相关防御; - 本身这种攻击就没有有效的防御方法,最好的方法是在运营商上就做好流量清洗和流量黑洞,才能更有效的防范,因此最为省事和有效的办法是购买运营商的流量清洗服务; - CDN其实也是一个很有效的防范DoS攻击的途经,也是成本低廉的解决问题的方式; #### 76、如何发现系统正在遭受攻击? - netstat -npt | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n > 这个命令组合是用来显示系统中每个远程IP地址的连接次数,按照连接数量排序,并且只显示TCP连接 - net.ipv4.tcp_max_syn_backlog = 4096 ``#表示SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数net.ipv4.tcp_syncookies = 1 ``#表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭,1表示打开;net.ipv4.tcp_synack_retries = 2 ``#下面这两行表示定义SYN重试次数net.ipv4.tcp_syn_retries = 2 #提高TCP连接能力net.ipv4.tcp_rmem = 32768net.ipv4.tcp_wmem = 32768net.ipv4.tcp_sack = 0 ``#打开tcp_sack功能,1表示"关闭",0表示"打开" - DDoS deflate 也是一个控制 netstat 和 iptables 有效的工具,通过 netstat 监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP; - 利用分布式多核硬件技术,基于深度数据包检测技术(DPI)监测、分析网络流量数据,快速识别隐藏在背景流量中的攻击包,以实现精准的流量识别和清洗。恶意流量主要包括 DoS/DDoS 攻击、同步风暴(SYN Flood)、UDP 风暴(UDPFlood)、ICMP 风暴(ICMP Flood)、DNS 查询请求风暴(DNS Query Flood)、HTTP Get 风暴(HTTP Get Flood)、CC 攻击等网络攻击流量。 - 首先,可以在现网中部署流量监视系统或者流量审计系统,从而对业务流量进行监视,进行业务正常流量和IP地址的追踪和观察,形成自身的业务流量安全相关模型,明确内网服务器或者自身应用系统对于服务流量的上限,设立相关的警戒阈值,超过该阈值需要考虑是否遭受DoS攻击; - 其次,Linux服务器对于CC攻击和DoS攻击有自身的日志记录,dmesg 和 message 日志都会有相关的Flood的日志记录,这个日志的记录是由于:net.ipv4.tcp_max_syn_backlog 参数设置的,Linux也有其他参数来防止DoS攻击,主要思路是控制连接数; - 一些框架,例如Apache的Web框架就记录了:access log 来记录访问; - 此外,可以检查Linux服务器的相关进程资源使用情况,通过 top命令查看监视系统进程的资源使用情况,对系统的资源使用进行监控,这里涉及到主机的监控的相关技术;或者通过 netstat 查看目前系统正在连接数; - 也可以直接抓取网络流量进行分析,使用的相关工具有:tcpdump 和 tshark 可以抓取网络流量进行分析;