《网络攻防实践》第六周作业

 

New Document

第六周实验:

第一部分:SQL注入攻击

一、实验坏境及配置 #:

SEED Ubuntu 镜像(Firefox、 apache、 phpBB2):

二、实验步骤

  1. 运行命令 sudo service apache2 start,启动apache2

2.通过 http://www.sqllabmysqlphpbb.com 访问phpBB2 web

3.关闭对抗注入措施 magic quote是自动对抗 SQL 注入的机制,输入命令sudo gedit /etc/php5/apache2/php.ini,将magicquotesgpc = On修改为magicquotesgpc = Off。 sudo service apache2 restart命令重启 Apache。

三、实验任务

① 对 SELECT 语句的攻击

攻击原理介绍:

首先访问虚拟机内的URL:www.sqllabmysqlphpbb.com。在进入 phpBB之前系统会要求你登陆。这个登陆认证由服务器上的 login.php 实现,需要用户输入用户名和密码来通过认证。用户键入用户名和密码后,login.php 会将它们与 mysql 数据库中的 username 和user_password 字段进行比较,如果匹配就登陆主界面。和其他大多数 web 应用程序一样, PHP程序使用 SQL 语言与背后的数据库交互。在 phpBB2 中,下面的语句实现了对用户的认证。

SELECTuser_id,username,user_password,user_active,user_level,
user_login_tries,user_last_login_try
FROMUSERS_TABLE
WHEREusername=‟$username‟ANDuser_password=‟md5($password)‟;
if(foundonerecord)
then{allowtheusertologin}

所以对于存在SQL漏洞的网站来说,我们只要构造特殊的“字符串”使得SQL语句为真,就能够成功登录。 如在用户名输入框中输入' or 1=1#,密码随便输入,此时合成的SQL查询语句为:select * from users where username='' or 1=1#' and password=md5('')。该语句在SQL中始终为真,不再去验证密码。

“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,不会去执行。即select * from users where username='' or 1=1#' and password=md5('')等价于select * from users where username='' or 1=1,因为1=1永远成立的,即where子句总是为真,该sql语句进一步简化之后,等价于select * from users。由于该页面不让输入“=”,所以我们只能输入alice'#(不能输入‘#,前面必须跟一个数据库有的用户名,所以这需要慢慢挖~),就可以在不知道alice密码的情况下登录了。

② 对 UPDATE 语句的攻击

攻击原理:

当用户想要在 phpBB2 中修改他们的资料时,可以点击 Profile,然后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条 UPDATE SQL 语句。在这条语句中同样有一个 SQL 注入漏洞。

以 alice 登陆,目标是修改ted 的资料信息,包括他的密码。攻击成功后将可以登陆 Ted 的账号。

点击Memberlist查看ted的信息,可以看到一个带参数的脚本,猜测ted的id为6。

我们再在interests栏中输入123'where user_id=6#,即将update语句中interests后的语句全部注释掉,并将where条件设置成ted的id。

再次点击Memberlist查看ted的信息,可以看到ted的interests改为123。

Current password里输入alice密码(alice),New password里输入1,即可将ted的密码修改为1了。

最后,我们输入用户名ted,密码1,即可登陆,大家试试吧!

③ 对抗 SQL 注入

攻击原理:

SQL 注入漏洞的根本原因是没有将代码和数据区分开。当组建一个 SQL 语句时,程序(如 PHP 程序)知道哪个部分是代码哪个部分是数据。不幸的是当 SQL 语句送往数据库执行时,这个边界被打破,当程序被注入时, SQL 解释器看到的边界可能和最初的边界不一样。为了解决这个问题,保持服务端程序和数据库看到的边界一样就十分重要。

攻击手段: (1)使用 magicquotesgpc 避开特殊字符。我们只需要在单引号前加一个反斜杠()PHP 提供了自动在单引号、双引号、反斜杠和空字符前添加反斜杠的机制,如果这个 选项启用,那么所有这些从用户输入的特殊字符会被加反斜杠。启用方法为,修改/etc/php5/apache2/php.ini的 magicquotesgpc = On,然后重启 Apache。

(2)使用 addslashes()来避开特殊字符。

(3)使用 mysqlrealescapestring 避开特殊字符。一个较好的方法来防止 SQL 注入攻击是使用数据库的回避机制。 MySQL 提供了一个机制,叫 mysqlrealescapestring(),它在一些特殊字符前加反斜杠,包括: \x00, \n, \r, , ‟, “, 和 \x1A。

(4)Prepare Statement

 

MarkdownPad Document

第二部分  Kali视频学习

Cewl

Cewl通过爬行网站获取关键信息创建一个密码字典。

 

 

CAT

能够扫描Cisco路由器的一般性漏洞,例如默认密码,SNMP,community字串和一些老的IOS bug(思科操作系统) 。

 

 

Findmyhash

哈希破解工具,

Hydra支持对各种服务的破解,xhydra 是其图形化页面版本。

hydra -L user.txt -P pass.txt -F ftp://127.0.0.1:21 破解FTP服务
hydra -L user.txt -P pass.txt -F ssh://127.0.0.1:22 破解SSH服务
hydra -L user.txt -P pass.txt -F smb://127.0.0.1 破解SMB服务
hydra -L user.txt -P pass.txt -F mssql://127.0.0.1:21 破解MSSQL账号密码
如要破解本机ssh,首先用命令service ssh start打开ssh服务,执行命令hydra -l root -P ~/pass.txt -F ssh://127.0.0.1:22,如果能猜解得到用户名密码,则可看到高亮显示。

Medusa

 

 

类似于Hydra的一款工具,使用方法类似。

 

 

medusa -u root -P ~/pass.txt -M ssh -h 127.0.0.1

NCrack

高速的网络认证破解工具,RDP(3389)爆破功能。命令如:

snmp扫描工具,用于找出设备上的SNMP Community 字串,扫描速度非常快。

Patator

全能暴力破解测试工具,模块化设计并具有灵活的可用性。

 

密码攻击之离线攻击工具

在线密码攻击在渗透测试中很重要,但对于测试过程中得到的哈希,加密数据,有需要离线破解工具辅助解决。

creddump套件

cache-dump:Windows系统将用户信息和密钥存储在系统存档文件和安全存档中。只要提取这些内容,就可以获取用户信息和密码哈希值。

 

 

lsadump:LSA是Windows系统本地安全认证的模块。它会存储用户登录其他系统和服务用户名和密码,如VPN网络连接、ADSL网络连接、FTP服务、Web服务

pwdump:Windows运行过程中SAM被锁定,不能直接复制或编辑Windows口令,Pwdump可以将Windows口令从SAM文件中提取出来,并存储在指定的文件中。

chntpw

用来修改 Windows SAM 文件实现系统密码修改,亦可在kali作为启动盘时做删除密码的用途。

 

 

crunch

实用的密码字典生成工具,可以指定位数生成暴力枚举字典。

 

 

fcrackzip

zip压缩包密码破解工具。

首先使用命令zip -P jspo 1.zip 1.py生成一个带有密码的zip压缩包,然后使用 fcrackzip -b -v -c a -l 1-4 -u 1.zip进行破解。

hashcat

Hashcat系列软件是比较强大的密码破解软件,系列软件包含Hashcat、oclHashcat;还有一个单独新出的oclRausscrack。其区别为Hashcat只支持cpu破解;oclHashcat和oclGausscrack则支持gpu加速。oclHashcat则分为AMD版和NIVDA版。

hashid

一款简单易用的哈希分析工具,可以判断哈希或哈希文件是何种哈希算法加密的。

 

 

hash-identifier

与HashID类似的一款工具。

Ophcrack

利用彩虹表来破解 Windows密码的工具,对应有命令行版的ophcrack-cli。主要有Load、Delete、Save、Table、Crack、Help 和 Exit 七大主要模块。

点击Table设置彩虹表,红色代表没有安装。在官网中下载彩虹表放在指定目录table下,选中所需条目,点击install进行安装。安装成功后,条目会变为绿色。

 

Load所要破解的文件(这里我们选择Single hash,点击Crack即可破解出来密码。

Pyrit

Pyrit是一款无线网络密码破解工具,借助GPU加速,可以让WAP2密码破解更效率。

 

Rcracki_mt

支持最新格式的彩虹表进行哈希破解。

Rsmangler

字典处理工具,可以生成几个字串的所有可能组合形式,在生成社工字典时亦可用到,可以有选择的关闭某些选项。

例如,我们创建一个test文件,其中有关键词root和test,然后输入命令rsmangler -f ~/test ,便能得到所有可能的字串(拼接test中出现的字符)。

Samdump2与BKhive

Linux下破解windows下哈希工具

首先获取win下的SAM文件(C:\windows\sysytem32\config\SAM)和system文件(C:\windows\system32\config\system)

用bkhive从system文件生成一个bootkey文件

bkhive system bootkey 再用bootkey和SAM文件通过samdump2生成一个密码哈希文件

samdump2 SAM bootkey > hashes 接着用John破解John hashes即可

SIPCrack

SIPCrack是针对SIP protocol协议数据包的破解工具,支持PCAP数据包与字典破解

Truecrack

针对TrueCrypt加密文件的密码破解工具。

密码攻击之哈希传递

passing the hash,中文一般翻译为hash传递攻击,在windows系统中,系统通常不会存储用户登录密码,而是存储密码的哈希值,在我们远程登录系统的时候,实际上向远程传递的就是密码的hash值。当攻击者获取了存储在计算机上的用户名和密码的hash值的时候,他虽然不知道密码值,但是仍然可以通过直接连接远程主机,通过传送密码的hash值来达到登录的目的。

Passing the hash套件

要进行哈希传递攻击,首先我们要有目标主机的哈希信息,以Pwdump7抓取hash为例,pth套件每个工具都针对win下响应的exe文件,如使用pth-winexe可以借助哈希执行程序得到一个cmdshell。后面是要操控的主机的IP地址,cmd可以得到一个反弹的shell。例如在这个shell中,我们可以看ip地址,看系统信息等等

Keimpx

一款Python编写的哈希传递工具,可以通过已有的hash信息get一个后门shell 。

 

第三部分 一、TCP/IP网络协议攻击

 

1.网络安全的属性: ##

机密性 、完整性 、可用性 、真实性 、不可抵赖性 。

2.网络攻击的基本模式分为:

截获(嗅探 与 监听) 、中断(拒绝服务) 、篡改(数据包篡改) 、伪造(欺骗) 。

3.TCP/IP网络协议栈在设计时采用了分层模型,

分为:网络接口层 、互联层 、传输层 、应用层。

每一层及相应协议:

网络接口层:以太网协议、PPP协议。 互联层:IPv4、ICMP、ARP、DGP。 传输层:TCP、UDP。 应用层:HTTP、FTP、POP3/SMTP、DNS、SMB。

4.TCP/IP网络协议栈的攻击技术: 欺骗技术(Spoofing): 攻击者伪造出特制的网络数据报文,发送给目标主机,使其在接受处理这些伪造报文时遭受攻击。在类UNIX平台和Windows平台上,攻击者都可以通过使用原始套接字(Raw Socket),绕过TCP/IP协议栈的报文封装处理和验证,构造出任意的数据报文。除了自己编程实现伪造报文外,还有一些可以实施各种网络欺骗攻击的工具软件,如:Netwox、Netwag。

二、网络层协议攻击

 

1.IP源地址欺骗。 ##

IP协议只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性验证。它最普遍应用于拒绝服务攻击当中。防范措施有:

使用随机化的初始序列号
使用网络层安全传输协议如IPsec
避免采用基于IP地址的信任策略,以基于加密算法的用户身份认证机制来替代这些访问控制策略
在路由器和网关上实施包过滤。

2.ARP欺骗。

ARP协议在认为局域网内部的所有用户都是可信的,是遵循协议涉及规范的。 防范措施:

静态绑定关键主机IP地址与MAC地址映射关系
使用相应的ARP防范工具
使用VLAN虚拟子网细分网络拓扑并加密传输数据以降低ARP欺骗攻击的危害后果。

3.ICMP路由重定向攻击。

就是利用ICMP路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,可以伪装成为路由器,使目标机器的数据报发送至攻击机从而加强监听,具体过程会与IP源地址欺骗技术结合实施。 防范措施: 根据类型过滤一些ICMP数据包,设置防火墙过滤,对于ICMP重定向报文判断是不是来自本地路由器等。

三、传输层协议攻击

1.TCP RST攻击。

一种假冒干扰TCP通信连接的技术方法。

2.TCP会话劫持攻击。

目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。

3.TCP SYN Flood 拒绝服务攻击。

利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。防范措施:

SYN-Cookie技术 防火墙地址状态监控技术。

4.UDP Flood拒绝服务攻击。

对目标主机发送大量UDP数据包,造成对方主机过分的计算过载和网络拥堵,使对方陷入瘫痪状态,不能够再提供服务 。防范措施:

禁用或过滤监控和响应服务
禁用或过滤其他的UDP服务

四、TCP/IP网络协议栈攻击防范措施

监测、预防与安全加固 如: > 网络接口层上的WEP、WPA/WPA2、802.X;

网络互联层上的IPsec协议簇;
床数层上的TLS;
应用层的HTTPS、S/MIME、SET、SSH。
下一代互联网协议:IPv6。

 

posted @ 2018-04-15 10:55  曹贻森  阅读(658)  评论(0编辑  收藏  举报