2023年12月14日发(作者:)
面试题系列:渗透测试常见问题-二
51、img标签除了onerror属性外,还有其他获取管理员路径的办法吗?
src指定一个远程的脚本文件,获取referer
52、img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。
1)远程服务器修改apache配置文件,配置.jpg文件以php方式来解析 AddType application/x-httpd-php .jpg 会以php方式来解析
53、为什么aspx木马权限比asp大?
aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users
权限。
54、如何绕过waf?
大小写转换法 干扰字符 /
!
/ 编码 base64 unicode hex url ascll 复参数
55、如何向服务器写入webshell?
各种上传漏洞mysql具有写入权限,用sql语句写入shellhttp put方法
56、渗透测试中常见的端口
a、web类(web漏洞/敏感目录) 第三方通用组件漏洞struts thinkphp jboss ganglia zabbix
80 web 80-89 web 8000-9090 web
b、数据库类(扫描弱口令)
1433 MSSQL 1521 Oracle 3306 MySQL 5432 PostgreSQL
c、特殊服务类(未授权/命令执行类/漏洞)
d、常用端口类(扫描弱口令/端口爆破)
21 ftp 22 SSH 23 Telnet 2601,2604 zebra路由,默认密码zebra3389 远程桌面
ALL、端口合计详情
三、深信服一面
了解哪些漏洞
文件上传有哪些防护方式
用什么扫描端口,目录
如何判断注入
注入有防护怎么办
有没有写过tamper
3306 1443 8080是什么端口
计算机网络从物理层到应用层xxxx
有没有web服务开发经验
如何向服务器写入webshell
有没有用过xss平台
网站渗透的流程
mysql两种提权方式(udf,?)
常见加密方式xxx
ddos如何防护
有没有抓过包,会不会写wireshark过滤规则
清理日志要清理哪些
四、SQL注入防护
1、使用安全的API
2、对输入的特殊字符进行Escape转义处理
3、使用白名单来规范化输入验证方法
4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。
6、规范编码,字符集
五、为什么参数化查询可以防止SQL注入
原理:
使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行
简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑
六、SQL头注入点
UAREFERERCOOKIEIP
七、盲注是什么?怎么盲注?
盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注
的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断
是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到
延时的目的。
八、宽字节注入产生原理以及根本原因
1、产生原理
在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和
magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一
个另外的字符,因此转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。
2、在哪里编码
3、根本原因
character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、
mb_convert_encoding使用不当。
4、解决办法
统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如
mysql_real_escape_string+mysql_set_charset的使用。
5、SQL里面只有update怎么利用
先理解这句 SQL
UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='$id'
如果此 SQL 被修改成以下形式,就实现了注入
之后 SQL 语句变为
userlevel 为用户级别
b、修改 password 值为mypass)' WHERE username='admin'#
之后 SQL 语句变为
UPDATE user SET password='MD5(mypass)' WHERE username='admin'#)', homepage='$homepage' WHERE id='$id'
c、修改 id 值为' OR username='admin'之后 SQL 语句变为
UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'
九、SQL如何写shell/单引被过滤怎么办
写shell: root权限,GPC关闭,知道文件路径 outfile函数
127.0.0.1:81/?id=1 into outfile 'C:' FIELDS TERMINATED BY ''
127.0.0.1:81/?id=-1 union select 1,0x3c3f70696e666f28293b203f3e,3,4 into outfile 'C:'
宽字节注入
1、代替空格的方法
%0a、%0b、%a0 等/**/ 等注释符<>
2、mysql的网站注入,5.0以上和5.0以下有什么区别
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。
十、XSS
1、XSS原理
反射型
用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。需要诱使用户“点击”一个恶意链接,才能攻击成功
存储型
存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。
DOM型
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
2、DOM型和反射型的区别
反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。反射型XSS的检测我们在每次请求带payload的链接时页面
应该是会带有特定的畸形数据的。DOM型:通过修改页面的DOM节点形成的XSS。DOM-based XSS由于是通过js代码进行dom操作产
生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。根本区别在我看来是输出点的不同。
3、DOM型和XSS自动化测试或人工测试
人工测试思路:找到类似、innerHTML赋值、outterHTML赋值、on操作、写javascript:后内容、eval、
setTimeout 、setInterval 等直接执行之类的函数点。找到其变量,回溯变量来源观察是否可控,是否经过安全函数。自动化测试参看道哥
的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个
javascript解析器,否则会漏掉一些通过js执行带入的部分内容。
在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式
实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。
4、如何快速发现XSS位置5、对于XSS怎么修补建议
输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入
点的检查最好放在服务器端实现。
输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在
Javascript脚本中时,对其进行JavascriptEncode。对使用JavascriptEncode的变量都放在引号中并转义危险字符,data部分就无法逃
逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器
中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚,针对不同的输出点,我们防御XSS的方法可能会不同,这点可
能在之后的文章会做下总结。
除此之外,还有做HTTPOnly对Cookie劫持做限制。
6、XSS蠕虫的生产条件
正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSS Worm的产生。
不一定需要存储型XSS
十一、CSRF
1、CSRF原理
CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认
2、防御
验证Referer
添加token
3、token和referer做横向对比,谁安全等级高?
token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS跳到HTTP,也不会发送referer。并且FLASH一些版本
中可以自定义referer。但是token的话,要保证其足够随机且不可泄露。(不可预测性原则)
4、对referer的验证,从什么角度去做?如果做,怎么杜绝问题
对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。为了杜绝这种问题,在验证的白名单中,正则规则
应当写完善。
5、针对token,对token测试会注意哪方面被人,会对token的哪方面进行测试?
引用一段请教前辈的回答:
针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结
合着发起组合攻击信息泄露有可能是缓存、日志、get,也有可能是利用跨站很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站
就可以组合成登录劫持了另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的
十一、SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况
下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系
统)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网
页文本内容,加载指定地址的图片,下载等等。
1、监测
SSRF漏洞的验证方法:
1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否
存在SSRF漏洞2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 (地址)的就可能存在SSRF漏洞 4[1]
2、SSRF漏洞的成因 防御 绕过
成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务
进行攻击。防御:禁止跳转,限制协议,内外网限制,URL限制。绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添
其他字符,@之类的。301跳转+dns rebindding。
十二、上传
1、文件上传漏洞原理
由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件
2、常见的上传绕过方式
前端js验证:禁用js/burp改包
大小写
双重后缀名
过滤绕过 pphphp->php
3、防护
文件上传目录设置为不可执行
使用白名单判断文件上传类型
用随机数改写文件名和路径
4、审查上传点的元素有什么意义?
有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。
十三、文件包含
1、原理
引入一段用户能控制的脚本或代码,并让服务器端执行 include()等函数通过动态变量的方式引入需要包含的文件;
用户能够控制该动态变量。
2、导致文件包含的函数
PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:(), -
eReader(), … ASP:include file, include virtual,
3、本地文件包含
能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞
十四、逻辑漏扫
1、金融行业常见逻辑漏洞
单针对金融业务的 主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄
露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。
十五、中间人攻击
中间人攻击是一个(缺乏)相互认证的攻击;由于客户端与服务器之间在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防火墙


发布评论