博客
关于我
0x01.渗透思路篇
阅读量:797 次
发布时间:2023-04-05

本文共 7796 字,大约阅读时间需要 25 分钟。

渗透测试与Web安全攻防指南

01. 渗透测试流程

渗透测试是攻击者通过合法或非法方式进入目标系统,获取控制权限的过程。其流程通常包括以下几个阶段:

  • 项目前期准备工作:了解目标站点的业务逻辑、技术架构、用户权限等信息。
  • 信息收集:通过WHOIS、网站源IP、旁站、C段网站、服务器系统版本等手段获取目标站点的基本信息。
  • 漏洞扫描:使用工具如Nessus、AWVS进行漏洞扫描,识别潜在的安全漏洞。
  • 手动挖掘:通过逻辑漏洞、注入点等手段进一步发现潜在的安全问题。
  • 漏洞验证:确认发现的漏洞是否真实存在,并评估其危害程度。
  • 修复建议:根据漏洞类型,提供修复方案或建议。
  • 基线检查/复验漏洞:对修复后的系统进行全面检查,确保漏洞已完全闭合。
  • 输出报告:将测试结果整理成详细的报告,供相关人员参考。

02. 绕过CDN查真实IP

当目标站点部署了CDN(内容分发网络)时,攻击者可以通过以下方法查找真实IP地址:

  • 多地ping测试:通过ping不同地区的服务器,检测是否有CDN的反向DNS解析。
  • 邮件订阅或RSS订阅:通过订阅站点的更新内容,获取真实IP信息。
  • 二级域名解析:检查二级域名是否使用CDN,通常二级域名的IP地址更容易获取。
  • DNS查询:使用nslookup工具查询目标站点的DNS记录,获取真实IP地址。
  • 历史解析记录:通过查看域名的历史解析记录,获取CDN的真实源IP地址。
  • PHP信息:通过phpinfo()函数获取网站运行的环境信息,包括IP地址。
  • Cloudflare API:通过Cloudflare提供的API查询真实IP地址。
  • 文件解析:通过分析服务器上的文件,获取真实IP地址。

03. SQL注入绕过sleep函数

在某些情况下,攻击者可能需要绕过sleep函数来完成SQL注入。常见的方法包括:

  • BENCHMARK函数:通过执行计算密集型操作,使数据库查询时间变长,从而实现延时注入。
  • Get_lock函数:利用Get_lock函数锁定数据库资源,导致其他查询无法正常执行。
  • 信息_schema使用:如在MySQL中,通过信息_schema.columns和information_schema.columns等表结合BENCHMARK函数实现注入。

04. 防范XXE漏洞

XXE(XML外部实体注入)是一种常见的Web安全漏洞,通常通过XML解析中外部实体的使用来攻击。防范措施包括:

  • 禁用DTD和实体解析:在XML解析库中禁用对外部实体的支持。
  • 过滤用户输入:对用户提交的XML数据进行严格过滤,避免恶意实体的注入。
  • 使用安全库:如在Python中使用lxml时,设置resolve_entities为false。
  • 客户端防护:对客户端提交的数据进行实体转义处理,避免XXE漏洞的发生。

05. 绕过Http-only

Http-only是用于防止JavaScript从客户端读取cookie值的一种安全机制。攻击者可以通过以下方法绕过Http-only:

  • 跨站请求伪造(CSRF):利用CSRF攻击绕过cookie的限制。
  • HTTP头信息泄漏:通过查看HTTP头信息,获取cookie的值。
  • 配置绕过:通过修改服务器配置,禁用Http-only的支持。

06. SQL二次注入

SQL二次注入是指在第一次注入成功后,通过对已存储的数据进行操作,进一步获取更高权限或敏感信息的过程。常见场景包括:

  • 年龄填写注入点:如在交友网站中,通过填写年龄信息触发二次注入。
  • 爆库和爆表:通过爆库和爆表语句获取数据库 schema 和表信息。
  • 数据获取:通过IIoC(依赖注入原理)或命令执行注入获取具体数据。

07. 提权方法

在SQL Server中,攻击者可以通过以下方式获得更高权限:

  • xp_cmdshell提权:通过xp_cmdshell执行系统命令,获取sa级别的权限。
  • 启用xp_cmdshell:使用sp_configure配置启用xp_cmdshell。
  • 沙盒提权:通过修改注册表或使用Jet.OLEDB技术在沙盒环境中执行命令。
  • Agent Job提权:通过创建Agent Job在数据库中执行恶意命令。

08. 防范Webshell

Webshell是一种通过HTTP协议上传并执行命令的攻击方式。防范措施包括:

  • 上传文件类型限制:限制上传文件类型,禁止脚本类型文件的上传。
  • 文件权限控制:对上传文件夹中的脚本文件设置无读取及执行权限。
  • 单独文件夹绑定:将上传文件夹绑定到一个独立的域名,限制文件类型解析。

09. Webshell检查思路

Webshell的检测可以通过以下方式进行:

  • 静态检测:通过匹配已知的Webshell代码特征进行检测。
  • 动态检测:通过监控异常的HTTP请求和B/S数据变化进行检测。
  • 日志检测:通过分析Web服务器日志,发现异常文件访问记录。
  • 自动化工具:使用如Burp Suite、ZAP等工具进行自动化检测。

10. 检查DNS解析记录

要查找DNS解析记录,可以通过以下方法:

  • 浏览器缓存:清除浏览器缓存,重新进行DNS查询。
  • 系统缓存:清除系统DNS缓存,刷新解析记录。
  • 路由器缓存:检查路由器是否缓存了目标站点的DNS记录。
  • 递归搜索:通过UDP请求递归搜索目标域名的IP地址。

11. 登录页面漏洞

登录页面可能存在的漏洞包括:

  • 注入点:如用户名和密码字段的注入点。
  • 敏感信息泄露:如密码提示信息或错误页面的信息泄露。
  • 验证码绕过:通过分析验证码逻辑,绕过验证。
  • 无限注册:通过注入点或其他方式实现无限注册功能。
  • 权限越权:通过注入点获取管理员权限。

12. 判断XSS类型

XSS攻击可以分为存储型、反射型和DOM型三种类型。判断方法包括:

  • 存储型XSS:检查数据库中的存储内容是否包含XSS代码。
  • 反射型XSS:通过直接请求页面,观察返回包中的XSS代码。
  • DOM型XSS:检查页面DOM结构,发现XSS代码注入点。

13. CSRF、SSRF和重放攻击区别

  • CSRF(跨站请求伪造):通过客户端发起请求,伪造用户身份进行操作。
  • SSRF(服务器端请求伪造):通过服务器伪造请求,获取内网资源。
  • 重放攻击:截获并重放已授权的数据包,伪造用户身份。

14. XSS和CSRF的区别及修复方式

  • XSS:通过修改或注入JavaScript代码,窃取用户信息或执行恶意操作。
  • CSRF:通过伪造用户请求,执行非法操作。
  • 修复方式:对输入数据进行校验,使用HTTP-Only、Secure和SameSite属性,嵌入防重放Token。

15. MongoDB注入方式

在MongoDB中进行注入攻击,可以通过以下方式:

  • 利用正则表达式:如db.items.find({name: {$regex:"^y"}})
  • 使用payload:如?login[$regex]=^&password[$regex]=^
  • 利用操作符:如?login[$not][$type]=1&password[$not][$type]=1

16. MySQL版本区别

MySQL 5.0以上和以下在以下方面有差异:

  • 信息_schema表:MySQL 5.0以下没有information_schema系统表。
  • 多用户支持:MySQL 5.0以下为多用户单操作,5.0以上为多用户多操作。

17. MySQL写Shell

在MySQL中写Shell可以通过以下方式:

  • 使用outfile函数:如select 'phpinfo()' into outfile 'C:/phpinfo.php'
  • 使用dumpfile函数:如select unhex('udf.dll hex code') into dumpfile 'c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
  • 目录权限控制:确保MySQL服务有写入目标目录的权限。

18. disable_functions绕过

要绕过disable_functions,可以通过以下方式:

  • LD_PRELOAD:劫持系统函数,加载恶意动态链接库。
  • ImageMagick漏洞:利用CVE-2016-3714漏洞绕过。
  • COM绕过:通过Windows组件进行操作。
  • PHP7.4FFI绕过:利用FFI功能执行命令。
  • Bash破壳:利用CVE-2014-6271漏洞绕过。

19. Webshell不出网提权

在Webshell不出网的情况下,可以通过以下方法提权:

  • reg上传:使用reg文件进行正向连接。
  • 探测外网协议:通过DNS、icmp等协议检测目标站点是否有外网连接。

20. 脏牛提权漏洞

脏牛漏洞(Dirty COW,CVE-2016-5195)是针对Linux内核的漏洞,攻击者可以通过以下方式提权:

  • 下载exp文件:下载并编译dirty.c,生成可执行文件。
  • 执行命令:使用./dirty命令获取提权。

21. SQL注入写Shell

在SQL注入中写Shell可以通过以下方式:

  • 使用outfile函数:如select 'shell.php' into outfile 'C:/shell.php'
  • 使用dumpfile函数:如select 'shell.php' into dumpfile 'C:/shell.php'
  • 宽字节注入:通过转义字符绕过单引号限制。

22. 宽字节注入原理

宽字节注入的原理是利用字符集的差异,通过特殊字符绕过数据库的过滤机制。常见方法包括:

  • 转义字符:如%0a、%0b、%a0等。
  • 字符集差异:不同字符集的转换可能导致字符被误解,绕过过滤。

23. img标签获取管理员路径

除了onerror属性外,img标签还可以通过以下方式获取管理员路径:

  • 修改Apache配置:配置.jpg文件以php方式解析。
  • 远程脚本获取referer:通过远程脚本获取目标站点的referer信息。

24.代码执行、文件读取、命令执行函数

常见的代码执行、文件读取、命令执行函数包括:

  • 代码执行:eval、preg_replace、assert等。
  • 文件读取:file_get_contents、fopen、readfile等。
  • 命令执行:system、exec、shell_exec、passthru等。

25. ASP和ASPx木马权限差异

ASPx木马通常具有更高的权限,因为其基于.NET技术,而默认的ASP脚本权限较低。攻击者可以通过以下方式获取ASPx木马的权限。

26. 提权为何选择可读写目录

在提权过程中,攻击者通常选择可读写目录是因为:

  • 空格界定:多数操作需要空格界定参数。
  • 默认权限:通常可读写目录具有更适合的默认权限。

27. Webshell长久控制

在获得Webshell后,攻击者可以通过以下方式实现长久控制:

  • 后台登录脚本:在登录页面添加JS脚本,记录登录账号和密码。
  • 文件上传:将XSS脚本上传到目标站点的文件中。
  • 定时任务:通过crontab定时执行恶意脚本。

28. 发现uid=100注入点提权

在发现uid=100注入点时,攻击者可以通过以下方式提权:

  • 联合查询语句:使用select ... into outfile将查询结果写入文件。
  • sqlmap –os-shell:通过sqlmap获取操作系统Shell。
  • 后台登录:通过获取管理员账号和密码,登录后台。

29. 获得Webshell

获取Webshell可以通过以下方式:

  • 上传脚本文件:如PHP、ASP、JSP等脚本文件。
  • 数据库备份:通过数据库备份获取Webshell路径。
  • 模板漏洞:利用已知的CMS模板漏洞直接创建Webshell。
  • 注入写文件:通过SQL注入将Webshell代码写入文件。

30. 手工判断目标站点操作系统

通过以下方式判断目标站点是Windows还是Linux:

  • 大小写敏感性:Windows不敏感,Linux敏感。
  • Ping值TTL:Linux值为64或255,Windows值为32或128。
  • Unix类型:Unix值为255。

31. SVN/GIT源代码泄露

SVN和GIT源代码泄露的常见方式包括:

  • .svn隐藏文件夹:包含重要的源代码信息。
  • .git/config文件:包含部署信息。
  • 递归部署:配置不当导致.git文件夹部署到线上环境。

32. 项目上漏洞扫描注意事项

在进行漏洞扫描时,需要注意以下几点:

  • 确认扫描权限:确保对目标站点有扫描权限。
  • 控制扫描频率和线程数:防止过载。
  • 通知客户恢复数据:扫描完成后,及时通知客户并恢复业务。

33. MySQL注入点工具

在MySQL中进行注入攻击,可以通过以下工具和方法:

  • sqlmap:自动化注入工具,支持GET、POST、COOKIE等注入点。
  • Burp Suite:手动抓包和注入。
  • ZAP:自动化Web应用安全评估工具。

34. SQL注入防护方法

在防御SQL注入时,可以采取以下措施:

  • 输入验证:对用户输入数据进行实时校验。
  • 预处理和绑定:使用PDO预处理和绑定参数,避免SQL注入。
  • 防注入插件:部署如360、阿里云、腾讯云等提供的防注入插件。
  • 白名单策略:对输入数据进行格式化和白名单过滤。

35. SQL注入无回显绕过

在SQL注入无回显的情况下,可以通过以下方式构造注入payload:

  • DNSlog注入:利用DNS日志记录获取注入结果。
  • 自动化脚本:编写自动化脚本进行注入。
  • 代理池:通过代理池减少IP封禁风险。

36. PHPAdmin写Shell

在PHPAdmin中写Shell可以通过以下方法:

  • 数据表导出:创建数据表导出Shell脚本。
  • 一句话导出:使用select 'phpinfo()' into outfile 'C:/phpinfo.php'
  • 日志备份:通过PHPAdmin日志备份获取Shell路径。

37. 预编译能不能防御SQL注入

预编译无法百分百防御SQL注入,因为注入攻击可以通过特定的字符和语句绕过预编译的防护。例如:

  • 字符转义:通过宽字节注入绕过预编译的过滤。

38. SQL注入绕过and或or过滤

在SQL注入中绕过and或or过滤,可以通过以下方式:

  • 大小写混合:通过大小写变形绕过过滤。
  • 编码:通过URL编码绕过过滤。
  • 注释绕过:通过添加注释或者使用多余的注释绕过过滤。
  • 浮点数和函数绕过:利用浮点数或函数绕过过滤。

39. 快速找文件下载漏洞

文件下载漏洞通常存在于以下形式:

  • download.php?path=
  • down.php?file=
  • data.php?file=
  • download.php?filename=
  • &Src=
  • &Inputfile=
  • &Filepath=
  • &Path=
  • &Data=

40. 任意文件下载防范方法

防范任意文件下载可以通过以下方式:

  • 过滤“.”:限制URL中不允许出现“.”。
  • 正则表达式验证:严格判断文件路径格式。
  • open_basedir限制:在php.ini中配置open_basedir,限制文件访问范围。

41. CORS利用方式

CORS(跨域资源共享)可以通过以下方式被利用:

  • 跨域请求伪造:通过伪造Referer头信息绕过CORS限制。
  • JSONP:通过JSONP获取目标站点的数据。
  • WebSockets:通过WebSocket协议进行跨域通信。

42. XSS弹窗函数和绕过策略

XSS弹窗函数包括alert、confirm、prompt等,绕过策略包括:

  • 大小写混合:通过大小写混合绕过过滤。
  • 双写:通过双写绕过过滤。
  • 编码:通过URL编码绕过过滤。
  • 使用ontoggle属性:通过ontoggle属性绕过过滤。

43. SSRF利用Redis写Shell

在SSRF中利用Redis写Shell可以通过以下方式:

  • 协议读取本地文件:利用协议如gopher进行本地文件读取。
  • 云计算环境:通过AWS、Google Cloud的内网API操作ECS。
  • Redis协议:通过Redis协议将反弹Shell写入crontab定时任务。

44. 登录页面漏洞

登录页面可能存在的漏洞包括:

  • 注入点:如用户名和密码字段。
  • 敏感信息泄露:如密码提示信息。
  • 验证码绕过:通过分析验证码逻辑绕过验证。
  • 无限注册:通过注入点实现无限注册。
  • 权限越权:通过注入点获取管理员权限。

45. 第三方应用软件提权

在第三方应用软件中提权可以通过以下方式:

  • Serv-u安全性测试:通过修改配置文件或servUDaemon.exe权限获取提权。
  • FlashFXP安全性测试:通过下载quick.dat、sites.dat等文件替换获取提权。
  • Gene6 FTP安全性测试:通过Webshell转发端口获取提权。
  • PcanyWhere安全性测试:通过破解PcanyWhere密码获取提权。
  • VNC安全性测试:通过读取VNC连接密码获取提权。
  • Zend安全性测试:通过修改ZendExtensionManager.dll获取提权。
  • 启动项和服务替换:通过启动项或服务替换获取提权。
  • Dll劫持:通过Dll劫持获取提权。
  • Perl安全性测试:通过低版本Perl执行系统命令获取提权。

46. xpcmdshell禁用后的提权

在xpcmdshell禁用后,可以通过以下方式提权:

  • sp_configure:通过使用sp_configure重新启用xp_cmdshell。
  • 使用master数据库:通过master数据库执行xp_cmdshell。
  • 利用存储过程:通过创建存储过程调用xp_cmdshell。

47. Webshell获取方法

获取Webshell可以通过以下方式:

  • 上传脚本文件:如PHP、ASP、JSP等脚本文件。
  • 数据库备份:通过数据库备份获取Webshell路径。
  • 模板漏洞:利用已知的CMS模板漏洞直接创建Webshell。
  • 注入写文件:通过SQL注入将Webshell代码写入文件。

48. Fastjson不出网利用

Fastjson不出网利用可以通过以下方式:

  • TemplatesImpl类:通过com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl类触发漏洞。
  • BasicDataSource类:通过org.apache.tomcat.dbcp.dbcp2.BasicDataSource类触发漏洞。
  • 特定触发条件:在解析JSON时使用特定的Feature选项触发漏洞。

49. XXE盲注处理

在遇到XXE盲注时,可以通过以下方式处理:

  • DNS外带注入:通过攻击者自己的公网服务器,获取受害者服务器的内容。
  • 外部参数实体注入:通过外部参数实体注入访问攻击者公网服务器的test.dtd文件。
  • 日志分析:通过分析受害者服务器的日志,获取注入结果。

通过以上方法,攻击者可以有效地进行渗透测试和Web安全攻防。

转载地址:http://wvrfk.baihongyu.com/

你可能感兴趣的文章
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>