Lord_Of_The_Root1.0.1靶机测试笔记

Vulhub-Lord_Of_The_Root1.0.1靶机官方地址

Netdiscover Nmap

发现只开了22端口,openssh版本6.6.1p1, 记得openssh有个枚举用户名的漏洞,尝试枚举和爆破密码,

枚举报错了,但是发现了线索。
红框中翻译:魔戒 敲击进入
没猜错的话这个是考察port_knocking概念,就是从外部按照一个正确的顺序连接 防火墙预先设定的端口(这儿是123),以实时改变防火墙策略、开放端口。 意思如果我们按照正确的顺序连接其端口后,它就会开放隐藏的端口,端口顺序应该就是那句Easy as 1,2,3了。

这儿使用下Pinkys-Palace2靶机中学到的脚本,首先生成这123的各种组合

python -c 'import itertools; print list(itertools.permutations([1,2,3]))' | sed 's/), /\n/g' | tr -cd '0-9,\n' | sort | uniq > permutation.txt

执行,进行敲击

#!/bin/bash

TARGET=$1

for ports in $(cat permutation.txt); do
    echo "[*] Trying sequence $ports..."
    for p in $(echo $ports | tr ',' ' '); do
        nmap -n -v0 -Pn --max-retries 0 -p $p $TARGET
    done
    sleep 3
    nmap -n -v -Pn -p 1-10000 -A --reason $TARGET -oN ${ports}.txt
done

或者直接

nmap -n -v0 -Pn --max-retries 0 -p 1 192.168.2.101
nmap -n -v0 -Pn --max-retries 0 -p 2 192.168.2.101
nmap -n -v0 -Pn --max-retries 0 -p 3 192.168.2.101

敲出来了,顺序就是1,2,3 。

访问1337,得到一张图片

尝试访问上图里写的MORDOR目录,成功跳转

发现字符串,解码再解码得到一个目录

访问目录,得到一个登陆框

输入Mordor、admin、978345210常见的用户名和sql注入都是返回Username or Password is invalid
上sqlmap扫一下,

存在时间盲注,那直接dump数据了

第一个账号密码不对,第二个账户成功登陆到ssh,smeagol:MyPreciousR00t

开启python http服务传输文件

下载文件执行

发现是ubuntu 14.04,但是尝试CVE-2017-16995,报不能执行二进制文件,查看到其他有趣的

进入door1,只有file文件,尝试分析猜测文件,未果

可以执行命令,但是没啥用

查看door2,door3目录,都只有file文件,但是分析时发现door2下的file存在这个strcpy
注:这儿后面发现,三个目录里只有1个file文件是包产strcpy的,但是这个包含strcpy的file文件会在door1,2,3里定时变动位置,

strcpy一般配合考察缓冲区溢出漏洞,查找崩溃点.
先复制一份到xx , 尝试输入大字符串

上图可以看到是存在溢出的,那么尝试找出溢出点位置 。
msf生成1000字符串,使用gdb调试

可以看到EIP位置是0X41376641 。 找到它的位置

看到是在171位置出现了溢出,验证下eip的内容

确认为四个B,再确认esp的内容是否为c

存在c的,那么确认坏字符

\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff

能看到1-8是正常的,后门就全乱了,怀疑0x08后门的0x00是0x09,但是它是个坏字符,至于后门为啥全乱了,猜测是因为0x0a的问题,因为它是换行符
重新来 去掉0x09和0x0a

好看多了,但是从0x20又开始乱了,去掉0x20后门就好了。
PS: 这儿一定要仔细看,因为看少了看错了都会导致msf的payload执行不成功。

所以总结,坏字符为0x09 0x0a 0x20 再加个0x00 .
然后开始生成payload 准备利用

本来还是应该找esp的,但是这个环境下esp地址是固定的,所以直接将eip的内容写上esp的地址,可以收到shell了

但是。。当回到/SECRET/door目录下时,esp地址会变动,参考了老外的这篇文章解释了这是ASLR机制,但是其提供的两种绕过方式:1种使用大次数循环发送命令以希望侥幸随机到他写的那个EIP地址上,我循环了几万遍发现没这个运气,2解锁ALSR,利用并未成功。
看遍了网上的攻略,未发现有能这样提权成功的,所以暂停了。

可以使用39166.c 内核漏洞提权

总结:
考察了port_knocking,sql注入,CVE-2015-8660/39166.c—3.19.0-25内核提权漏洞,溢出漏洞/未成功。。
溢出难度大,未利用成功,其他的简单

gdb常用命令参考

posted @ 2020-08-14 17:59  总得前行  阅读(713)  评论(0编辑  收藏  举报