这篇文章将为大家详细讲解有关如何进行HTB-Luke实战,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
信息收集
打开10.10.10.137 发现就⼀个静态⻚⾯⼀般我习惯先看⼀下源码发现是⼀个静态⻚⾯⽤了
Bootstrap 4
端口测试
-
21/tcp ftp
-
22/tcp ssh
-
80/tcp http
-
3000/tcp ppp
-
8000/tcp http-alt
1. 10.10.10.137:8000 ⼀个Ajenti登陆⻚⾯
2. 10.10.10.137:3000返回
{"success":false,"message":"Auth token is not supplied"}
目录遍历
习惯⽤dirsearch.py 分别对80、3000进⾏⽬录遍历
80端⼝发现
[] - B - /.ht_wsr.txt [] - B - /.htaccess-dev [] - B - /.htaccess-local [] - B - /.hta [] - B - /.htaccess-marco [] - B - /.htaccess.bak1 [] - B - /.htaccess.BAK [] - B - /.htaccess.old [] - B - /.htaccessOLD [] - B - /.htaccess.orig[::] - B - /.htaccess_orig [] - B - /.htaccess.sample [] - B - /.htaccess.txt [] - B - /.htaccess_sc [] - B - /.htaccessBAK [] - B - /.htaccess_extra [] - B - /.htaccess.save [] - B - /.htpasswd-old [] - B - /.htaccess~ [] - B - /.htpasswds [] - B - /.htpasswd_test [] - B - /.htaccessOLD2 [] - B - /.htgroup [] - B - /.htusers [] - B - /config.php [] - B - /css -> http: [] - KB - /index.html [] - B - /js -> http: [] - KB - /login.php [] - B - /management [] - B - /management/ [] - B - /member -> http: [] - KB - /package.json [] - KB - /README.md
其中 /management 和 login.php 也是⼀个登陆⻚⾯⽽ /config.php 包括了mysql账号密码
$dbHost = ; $dbUsername = ; $dbPassword = ; $db = ; $conn = mysqli($dbHost, $dbUsername, $dbPassword,$db) (. $conn -> error);
3000端⼝发现
[::] Starting: [::] - B - /login [::] - B - /Login [::] - B - [::] - B - [::] - B - /users [::] - B - /users/admin [::] - B - 其中 /login 返回 , users 也是返回 {:,:}
整合信息
三个登陆⻚⾯
10.10.10.137:8000、10.10.10.137/login.php、10.10.10.137/management
⼀个mysql账号密码root/Zk6heYCyv6ZE9Xcg
10.10.10.137:3000返回信息
{:,:}
10.10.10.137:3000/login返回
"please auth"
具体分析
突破⼝在
在 "Auth token is not supplied"
Google⼀下发现是jwt认证失败的⼀个返回信息因此推测应该构造认证信息post到
10.10.10.137:3000然后获取到⽤户凭证接着⽤这个⽤户凭证去请求
10.10.10.137:3000/users。
这⾥post的⽤户信息⼤概就是上⾯的mysql账户密码因为只有这⼀个可以⽤了⽽且这个账户信息尝试
登陆在⼏个登陆⻚⾯以及mysql服务端均没有成功。
使⽤curl
curl -s -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{:,:}'
回显信息
Error SyntaxError: Unexpected token r in JSON at position 11    at JSON.parse (<anonymous>)    at parse (/nodeapp/node_modules/body-parser/lib/types/json.js:89:19)    at /nodeapp/node_modules/body-parser/lib/read.js:121:18    at invokeCallback (/nodeapp/node_modules/raw-body/index.js:224:16)    at done (/nodeapp/node_modules/raw-body/index.js:213:7)    at IncomingMessage.onEnd (/nodeapp/node_modules/rawbody/index.js:273:7)    at IncomingMessage.emit (events.js:202:15)    at endReadableNT (_stream_readable.js:1132:12)    at processTicksAndRejections (internal/process/next_tick.js:76:17)
不知道是什么原因估计是curl哪⾥构造错了但是可以确定的是思路是对的换⽤postman发送json
请求
获取到admin的
token
3
⽤这个token请求/users和/users/{user}
-H -H https://10.10.10.137:3000/users
获取到
[{:,:,:}, {:,:,:}, {:,:,:}, {:,:,:}] {:,:}% {:,:}% {:,:}% {:,:
登陆到http://10.10.10.137/management访问http://10.10.10.137/management/config.json
获取到root/KpMasng6S5EtTy9Z的账户信息最后登陆到
10
flag:8448343028fadde1e2a1b0a44d01e650
提权
直接⽤root/KpMasng6S5EtTy9Z登陆ssh不⾏说明这只是web的账号。但是ajenti服务是具有root权
限的也说明可以任意操作了。
⽤File Manager翻了⼀下配置⽂件可以直接找到ssh的配置⽂件/etc/sshd_config并且有编辑的权限。
那么修改配置项
PermitRootLogin yes
重新启动ssh服务再试⼀下登陆ssh发现还是不⾏可能root
密码并不是web账户密码这⾥有Users打开并直接重置root密码不需要旧密码重置
ssh登陆
关于如何进行HTB-Luke实战就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/safety/221827.html