【知识整理】渗透思路总结

渗透思路总结

文章目录

  • 渗透思路总结
    • Hacker语法
    • 网站IP查找
    • 网站IP验证
    • 子域名查找
    • 旁站查找
    • C段扫描
    • 网站支持的HTTP方法
      • 使用NMAP脚本扫描
      • 使用OPTIONS方法
      • 使用KALI中CURL
    • 漏洞扫描
    • 端口服务扫描
    • 网站指纹扫描
    • 网站目录扫描
    • 漏洞利用(完善中)
      • SQL注入
      • XXE
      • XSS
      • CSRF
      • SSRF
      • CRLF
      • 命令执行漏洞
      • 文件上传漏洞
        • 解析漏洞
      • 文件包含漏洞
      • 逻辑漏洞
    • 系统提权
    • FINAL
    • 渗透报告的撰写

进行信息收集,根据开放的端口以及服务,寻找可行的渗透方法

Hacker语法

使用搜索引擎的语法来帮助自己快速搜集可能存在漏洞的网站

inurl:	#搜索包含有特定字符的URL
intext:	#搜索网页正文内容中的指定字符
site:	#url+搜索内容
filetype:	#搜索指定类型文件
cache:	#搜索某些内容缓存
info:	#查找指定站点的一些基本信息
link
intitle
……

网站IP查找

在非同一局域网内,知晓域名的网站可以先使用nslookup进行域名解析,得到IP。也可以使用被动信息收集得方式,去第三方网站上通过域名解析IP。也可以简单得ping一下来得到网站得IP

在同局域网内,未知目标主机IP的情况下,使用netdiscover主机发现获得主机IP地址(或者 nmap -sn <目标网段>)

网站IP验证

有很多网站会有CDN加速访问,因此不会显示真实网站IP,因此要对得到得IP地址进行验证

为了检测网站是否使用了CDN,可以利用多地ping服务来检测,若各地回复的IP地址存在多个不同的IP,就能说明网站有CDN(nslookup返回的IP为多个,也能说明有CDN)

绕过CDN找到真实网站的思路是,查看以前的DNS解析历史,即域名与IP的绑定记录,最早的历史IP很有可能就是真实的原始IP地址

利用SSL证书寻找真实IP

在censysz中搜索参:parsed.names:  and tags.raw: trusted

子域名查找

通过子域名不仅可以获得网站的真实IP,还能通过在子域名访问敏感页面

可以利用域传送漏洞,向DNS服务器请求,获取被攻击域下所有的子域名。

域传送:指备份服务器从主服务器拷贝数据,并用得到的数据更新自身数据库,就是主备服务器之前同步数据库,需要使用“DNS域传送”;域传送漏洞会导致一些非公开域名(测试域名、内部域名)泄露

对子域名进行枚举,可以使用Kali中fierce、在线枚举网站

使用网络空间搜索引擎查找子域名(shodan、censys、fofa……)

用搜索引擎语法(site:xxx.com)直接搜目标网站的子域名

其他工具还有layer子域名挖掘机

旁站查找

站是和目标网站在同一台服务器上的其他网站,同服务器不同站点

在主站没有思路时,可以先对旁站进行渗透

可以使用K8_C段旁注查询工具 、在线网站查询……

C段扫描

C段是和目标服务器IP处在同一个C段的其他服务器,同网段不同服务器

可以使用北极熊扫描器、Nmap、在线网站查询(站长之家等)、K8_C段旁注查询工具……

网站支持的HTTP方法

使用NMAP脚本扫描

nmap --script http-methods --script-args http-methods.url-path=test 192.168.72.167

# 使用扫描http的方法脚本,扫描ip地址下的test目录,其中--script-args是指后面的使用参数

使用OPTIONS方法

构造一个使用OPTIONS方法的请求包,在回包处即可看到该页面支持的方法

使用KALI中CURL

curl -v -X OPTIONS http://192.168.72.167/test

漏洞扫描

使用漏扫工具,对网站扫描网站可能存在的漏洞,并进行漏洞的验证

常用的漏扫工具有:AWVS、NESSUS、OWASP-ZAP、Appscan、w3af(kali集成)、nikto

用法:nikto -h target_ip -p 1-1000
-h参数指定一个主机ip地址。-o 后面接文件路径和文件名格式

端口服务扫描

得到真实的IP地址后,使用masscan进行快速的端口扫描。根据扫描到的开放端口,使用nmap进行端口服务以及系统扫描

这里可以先使用超级弱口令检查工具 来快速发现弱密码、弱口令账号

  • 如果发现开放了22端口,且启用了ssh,这时候可以尝试使用metasploit farmework的ssh_login模块,对ssh的账号进行暴力破解,也可以使用九头蛇或者美杜莎等爆破工具
  • 如果发现开放了139和445端口,开启了smbd共享服务,可以使用enum4linux,枚举主机的samben服务,查找可用连接的用户名和密码,再使用mount挂载的方式连接web服务器,在web服务器中文件中找有用的信息,比如用户名和密码
  • 21 FTP文件上传服务,可以用工具进行账号密码暴破

网站指纹扫描

扫描网站的指纹信息,使用whatweb扫描识别web软件、后端服务器、编程语言、CMS。根据找的信息,寻找中间件漏洞、数据库漏洞、搭站的源码。注意网站用的开发语言,在后面的渗透中,需要根据支持的开发语言选择恶意脚本(也可以使用在线网站云析、浏览器插件wappalyzer)

  • 通过对网站web软件、后端服务器、开发语言、框架的类型与版本判断,来推测这些应用服务可能存在的已知漏洞,可以通过msfsearchspolit来查找相关的漏洞并利用,也可以利用搜索引擎来查找复现漏洞的方式
  • 找到CMS后可以搜索相关的开源资源,进行代码审计,来定位网站的漏洞,也可以利用msf对存在漏洞CMS直接进行攻击,获得shell

在得到用户名和密码后,注意要进行多次尝试在其他地方登陆,因为有可能使用一套账户密码的情况

常见的CMS:Dedecms(织梦)、PageAdmin、Discuz、PHPWEB、PHPWind、PHPCMS、WCShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等

网站目录扫描

获得端口以及服务信息后,使用dirb行网站目录的扫描,尝试对扫描出的网页进行登陆,寻找有价值的信息(必要时可以使用扫描工具,比如dirburst、御剑)

尝试访问网页目录,收集有用的信息,为爆破整理字典

留心可能存在的sql注入点,命令执行点,文件上传点,文件包含点,XXE,XSS,CSRF,SSRF,逻辑漏洞、解析漏洞等可利用的漏洞点。在登陆界面使用弱口令和万能密码登陆尝试,必要时可以对页面进行元素审查来寻找有用的信息

关于漏洞的详细信息,见漏洞利用部分

漏洞利用(完善中)

包括但不限于如下漏洞

SQL注入

与服务器进行交互的位置都有可能存在SQL注入

可以获取敏感信息、写入脚本文件、执行系统命令、反弹shell

可以使用sql语句的万能密码登陆

漏洞原理
SQL注入就是指web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的sql语句来实现对数据库的任意操作。

攻击方式

SQL注入的类型分为字符型数字型

常用的SQL注入有:报错注入、联合注入、堆栈注入、布尔盲注、时间盲注、cookie注入

绕过方式

  • 可以使用内联注释,将SQL语句的关键字进行注释

    /*!select*/

  • 将SQL语句的关键字进行大小写绕过

  • 可以使用TAB%a0+代替空格,也可以将空格复写

  • 对SQL语句进行十六进制的转码

  • 使用转译符号\对引号进行转译绕过

  • 可以使用宽字节注入,在%27前拼接%df(在GBK编码的网站使用)

防御方式

1)严格检查输入变量的类型和格式

对于整数参数,加判断条件:不能为空、参数类型必须为数字

对于字符串参数,可以使用正则表达式进行过滤:如:必须为[0-9a-zA-Z]范围内的字符串

2)过滤和转义特殊字符

在username这个变量前进行转义,对’、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义

3)利用mysql的预编译机制

把sql语句的模板(变量采用占位符进行占位)发送给mysql服务器,mysql服务器对sql语句的模板进行编译,编译之后根据语句的优化分析对相应的索引进行优化,在最终绑定参数时把相应的参数传送给mysql服务器,直接进行执行,节省了sql查询时间,以及mysql服务器的资源,达到一次编译、多次执行的目的,除此之外,还可以防止SQL注入。具体是怎样防止SQL注入的呢?实际上当将绑定的参数传到mysql服务器,mysql服务器对参数进行编译,即填充到相应的占位符的过程中,做了转义操作。

XXE

XML外部实体化注入 ,libxml低于2.9.0都有可能存在该漏洞

可以用来执行代码、对内网的IP、端口及服务进行探测

漏洞原理

XML是用来对数据进行传输和存储的扩展标记性语言,而XXE是XML对非安全的外部实体数据进⾏行处理时引发的

攻击方式

  1. 直接通过DTD外部实体声明
	
    
     ]>
     <hhh>&f;<hhh>
  1. 通过DTD文档引入外部DTD文档中的外部实体声明
	
    
    <hhh>&f;<hhh>
    
  1. 通过DTD外部实体声明引入外部实体声明


]>
<hhh>&f;<hhh>

防御方式

  • 升级libxml到2.9.0后,默认不解析外部实体
  • 使用开发语言禁用外部实体方法
  • 过滤SYSTEMPUBLIC1

XSS

能根据用户输入来返回输入内容的位置,可能存在跨站脚本攻击

可以用来获取用户cookie、重定向、反弹shell

漏洞原理

XSS(Cross-site scripting)是代码注入的一种。 它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

攻击方式

XSS的攻击方式有三种,反射型、存储型、DOM型

  • 反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

  • 存储型XSS:<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

  • DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

CSRF

CSRF(跨站请求伪造)是一种逻辑漏洞,利用了服务端对用户端的信任。

可以利用用户来执行敏感操作,实现攻击者想要的目的

漏洞原理

CSRF则通过伪装来自受信任用户的请求来利用受信任的网站 ,常见于服务器对用户身份验证不严的地方。

攻击方式

可以单独使用,向用户发送恶意的URL,诱导用户点击来完成攻击者想要敏感操作,包括 以用户的身份发送邮件,发消息,改密码,甚至于购买商品,转账等

也可以联合CSRF和XSS使用,可以用XSS重定向到敏感操作的URL使用户在不知情的情况下完成敏感操作,或者可以用XSS获取cookie再用CSRF冒名用户进行敏感操作

SSRF

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

可以利用存在SSRF的服务器做代理,进行内网渗透

CRLF

CRLF是“回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中。

攻击方式

1.通过CRLF注入构造会话固定漏洞

请求参数:http://www.sina.com%0aSet-cookie:sessionid%3Dwoyun
服务器返回:

HTTP/1.1 200 OK

Location:http://www.sina.com

Set-cookie:sessionid=woyun

2.通过CRLF注入消息头引发XSS漏洞

在请求参数中插入CRLF字符:?email=a%0d%0a%0d%0a
服务器返回:

HTTP/1.1 200 OK

Set-Cookie:de=a




3.浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中包含XSS相关特征的时候就会过滤掉不显示在页面中。

通过在数据包中http头中注入X-XSS-Protection: 0,关闭IE8的XSS Filter功能。

?url=%0aX-XSS-Protection:%200%0d%0a%0d%0a

漏洞原理

服务器端没有过滤\r\n,而又把用户输入的数据放在HTTP头中,从而导致安全隐患。

命令执行漏洞

如果存在webshell界面,可以在wbshell界面在白名单允许的命令后用拼接命令符来拼接恶意的系统命令

也可以通过上传执行系统命令的脚本,通过远程代码执行或者文件包含漏洞执行脚本,在通过传参的方式来执行系统命令

可以反弹shell、查看敏感信息、当存在配置不当的漏洞是可以创建新的root用户

文件上传漏洞

一般在文件上传的地方都用可能存在文件上传漏洞

可以利用上传代码并远程执行

能用来上传反弹shell脚本或一句话木马后门等

防御方法

使用黑名单或白名单对文件进行过滤

对上传的文件进行文件类型的转换和更改名称

隐藏上传路径

绕过方法

可以利用抓包改包的方式绕过对上传文件类型和后缀的过滤

可以生成图片码,来绕过对文件内容的过滤(图片头部:GIF89A)

也可以利用解析漏洞来过滤

解析漏洞

apache、IIS解析漏洞

文件包含漏洞

漏洞原理

开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞;在PHP中经常出现文件包含漏洞;

文件包含的特征:?page= 、?home=、?file=

攻击方式

文件包含主要分为远程文件包含和本地文件包含

逻辑漏洞

常见的逻辑漏洞有CSRF、越权、修改数量或金额、短信轰炸、短信验证码暴破、验证码截获


系统提权

如果通过漏洞获得服务器shell后,就需要进行提权操作

查找配置文件,在管理员的账号和密码

常规的提权思路:可以通过查找系统的漏洞来提权,可以使用msf、searchspolit、搜索引擎,查找提权方法与脚本,这方面window就比较多了。

Linux提权:

  • 可以通过查找配置不当的文件,比如文件被设置了suid位,可用来反弹root用户的shell或这写入新的root用户
  • 脏牛提权
  • 利用数据库提权

Windows提权

  • 注册表读取管理员密码

    使用命令将windows系统中sam与sys文件导出,到本地使用mimikatz解密

reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv
reg save HKLM\SYSTEM c:\windows\temp\Sam.hiv

lsadump::sam /sam:Sam.hiv /system:Sys.hiv
  • 利用LaZagne.py脚本获取管理员密码密码
  • 利用进程注入提权
  • 利用fgdump获得管理员密码
  • 利用window系统存在的漏洞提权,比如永恒之蓝
  • 利用数据库提权,比如redis未授权访问漏洞

FINAL

留后门,防杀马,隐藏,清理痕迹,日志信息,历史记录等


渗透报告的撰写

在完成以上的五个步骤后,我们需要撰写渗透测试报告,根据模板的要求,在渗透测试报告中需要写明渗透的时间,漏洞的URL以及漏洞的类型、截图和防御方法,审核完成后再交于甲方即可。

你可能感兴趣的:(WEB安全)