New Document
第六周实验:
第一部分:SQL注入攻击
一、实验坏境及配置 #:
SEED Ubuntu 镜像(Firefox、 apache、 phpBB2):二、实验步骤
- 运行命令
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, , , , ‟, “, 和 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:windowssysytem32configSAM)和system文件(C:windowssystem32configsystem)
用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。